Compare commits

...
Author SHA1 Message Date
Armin Schrenk dcfdb5ad21 first impl draft 2023-03-20 14:38:22 +01:00
Tobias Hagemann 77bc60fe5b Update README.md 2023-03-17 17:56:46 +01:00
Tobias HagemannandGitHub 9f633a1ecb Update README.md 2023-03-17 17:06:34 +01:00
Armin Schrenk fcf59d12a8 remove winget workflow 2023-03-15 16:47:34 +01:00
Armin Schrenk 6721075831 Merge branch 'main' into develop 2023-03-15 13:51:59 +01:00
Armin Schrenk 4bb0026415 Merge branch 'release/1.7.3' 2023-03-15 13:51:20 +01:00
Armin Schrenk bebae14744 finalize release 2023-03-15 13:51:09 +01:00
Armin Schrenk 997315eaf5 prepare 1.7.3 2023-03-15 13:49:53 +01:00
CryptobotandGitHub 16d677c40f New Crowdin updates (#2766)
New translations strings.properties

Belarusian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; French; German; Hebrew; Norwegian Bokmal; Russian; Swahili, Tanzania; Turkish; 

[ci skip]
2023-03-15 13:47:22 +01:00
Armin Schrenk 42a1913c17 Fixes #2797 and fixes #2760 2023-03-15 13:42:03 +01:00
Armin Schrenk c3f6655e48 add developer 2023-03-15 12:34:13 +01:00
Armin Schrenk fa1b0f2de8 reestablish interrupt state 2023-03-15 12:29:19 +01:00
Armin Schrenk 385574a618 prevent infinite loop 2023-03-15 12:10:15 +01:00
Armin Schrenk a67477bf3b Fixes #2778
ensure that mountpoint is ready
2023-03-15 11:40:44 +01:00
Julian Raufelder 7a0d255bd3 Use the same source tarball for signing that is linked in the release 2023-03-07 13:44:36 +01:00
Armin Schrenk 228fa099cb Merge branch 'main' into develop 2023-03-07 12:24:26 +01:00
Armin Schrenk a60ff20f15 Merge branch 'release/1.7.2' 2023-03-07 12:23:30 +01:00
Armin Schrenk 2328a5e3a8 finalize release 2023-03-07 12:19:35 +01:00
Armin Schrenk e7e181b1a5 Merge branch 'develop' into release/1.7.2 2023-03-07 12:19:23 +01:00
Armin Schrenk f3e7c08b43 deactivate winget workflow 2023-03-07 12:19:05 +01:00
Armin Schrenk 2a41afcfa9 prepare 1.7.2 2023-03-07 11:52:04 +01:00
CryptobotandGitHub 5bf38a328c New Crowdin updates (#2743)
New translations strings.properties

Arabic; Belarusian; Bosnian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; French; German; Greek; Hebrew; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Norwegian Bokmal; Norwegian Nynorsk; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Slovak; Spanish; Swahili, Tanzania; Swedish; Tamil; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-03-07 11:49:50 +01:00
Armin Schrenk f983b29034 use correct docs URL for volume type 2023-03-07 11:40:10 +01:00
Armin Schrenk 4bc217e489 fixes #2761 2023-03-07 11:36:59 +01:00
Armin Schrenk b24f52a4ec fixes 2741 2023-03-07 10:58:34 +01:00
Armin Schrenk 91e7fa3de3 fixes #2758, fixes #2754 2023-03-06 15:58:02 +01:00
Armin Schrenk 1365efab3f use recommended notation of unit prefixes 2023-03-06 15:54:43 +01:00
Armin Schrenk 852963b785 check for correct WinFsp version 2023-03-06 15:50:21 +01:00
Armin Schrenk c47d4eaf02 Merge branch 'main' into develop 2023-03-03 16:37:45 +01:00
Armin Schrenk 36da26c6b9 Merge branch 'release/1.7.1' 2023-03-03 16:19:49 +01:00
Armin Schrenk 33e1cb3131 finalize release 2023-03-03 16:19:37 +01:00
Armin Schrenk ed4b433df0 prepare 1.7.1 2023-03-03 16:14:01 +01:00
Armin Schrenk d2ece543c8 suppress false positive 2023-03-03 16:04:34 +01:00
Armin Schrenk 4bb2df7d8f Fixes #2730 2023-03-03 16:03:36 +01:00
CryptobotandGitHub 4d5c6ca29a New Crowdin updates (#2712)
New translations strings.properties

Danish; German; Hebrew; 

[ci skip]

Closes #2724
2023-03-03 16:02:09 +01:00
Armin Schrenk f0d597ba73 require fuse3 packge for deb to have fusermount3 2023-03-01 19:28:40 +01:00
Armin Schrenk 310329d0b5 use correct javafx patch version for debia build 2023-03-01 15:51:42 +01:00
Julian Raufelder 30f86a7f2a Fix issue template 2023-03-01 15:23:30 +01:00
Armin Schrenk 5237dc8cae Merge branch 'main' into develop 2023-03-01 12:07:46 +01:00
Armin Schrenk 67ff4da05b Merge branch 'release/1.7.0' 2023-03-01 12:06:40 +01:00
Armin Schrenk 947eb11198 set correct version in pom 2023-03-01 12:06:25 +01:00
Armin Schrenk c6a9af1a04 update metainfo.xml 2023-03-01 12:03:03 +01:00
Armin Schrenk 0ddf221e26 Merge branch 'develop' into release/1.7.0 2023-03-01 11:43:49 +01:00
CryptobotandGitHub 3f2b5ccde9 New Crowdin updates (#2698)
New translations strings.properties

Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; French; Japanese; 

[ci skip]
2023-03-01 11:42:57 +01:00
Armin SchrenkandGitHub 3d0b6dde28 Update README.md 2023-02-27 13:09:56 +01:00
Armin Schrenk 45534b0a2b suppress false positive 2023-02-27 12:19:13 +01:00
Armin Schrenk 6d906beeb8 bump dependency-check 2023-02-27 12:17:47 +01:00
Tobias Hagemann e577c64c35 arm64 dmg installer (link + bg) for fuse-t 2023-02-27 11:06:19 +01:00
Armin Schrenk b848e78372 Merge branch 'develop' into release/1.7.0 2023-02-24 14:16:38 +01:00
Armin Schrenk 39e9395b4b bump fuse-nio-adapter 2023-02-24 14:16:20 +01:00
CryptobotandGitHub ca3157cc70 New Crowdin updates (#2695)
New translations strings.properties

Arabic; Belarusian; Bengali; Bosnian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-02-24 14:15:50 +01:00
Armin Schrenk f94c1f07d6 add new wix extension to ci build 2023-02-24 13:23:10 +01:00
Armin Schrenk d43f197c11 fix 67e566832c 2023-02-24 13:14:14 +01:00
Armin Schrenk 67e566832c use correct path to get winfsp download url 2023-02-24 13:13:07 +01:00
Armin Schrenk 6f5a88af1d extend winfsp uninstall instruction by reboot step 2023-02-24 13:10:15 +01:00
Armin Schrenk 210b891616 block exe installation if winFsp is outdated 2023-02-24 12:50:20 +01:00
Armin Schrenk 20e820c903 update IDE specific files 2023-02-24 12:48:41 +01:00
Armin Schrenk 5307e93c1b bump fuse-nio-adapter
fix illegalArgumentException when setting loopbackHostName
2023-02-24 12:48:29 +01:00
Armin Schrenk e221019b57 Merge branch 'develop' into release/1.7.0 2023-02-23 12:09:03 +01:00
Armin Schrenk eeaaced976 reorder settingsJsonAdapter switch statements 2023-02-23 12:08:48 +01:00
Armin Schrenk d246b54268 ignore lastWrittenByVersion when reading settings 2023-02-23 12:00:14 +01:00
Armin Schrenk e94572960e enable drag and drop for linux aswell 2023-02-23 11:16:48 +01:00
Armin Schrenk 2d1c59bea9 Renamed objects related to license exceeded user flow 2023-02-23 10:45:55 +01:00
Armin Schrenk 921cbd6439 Merge branch 'develop' into release/1.7.0 2023-02-22 17:47:14 +01:00
Armin Schrenk f811144ffa pom cleanup [ci skip] 2023-02-22 17:46:56 +01:00
Armin Schrenk 2ecc711f50 bump dependencies 2023-02-22 17:28:34 +01:00
Armin Schrenk cfcc8782ef bump cryptomator dependencies to stable versions 2023-02-22 17:19:40 +01:00
Armin Schrenk a1379bac40 For Windows try to migrate all user settings, not only the ones of local users 2023-02-22 15:33:37 +01:00
Armin Schrenk fe3f2b5bd3 Merge branch 'develop' into release/1.7.0 2023-02-22 15:14:43 +01:00
CryptobotandGitHub 7fc07ae02c New Crowdin updates (#2689)
New translations strings.properties

Arabic; Belarusian; Bosnian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; French; German; Greek; Hebrew; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Norwegian Bokmal; Norwegian Nynorsk; Polish; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Turkish; Vietnamese; 

[ci skip]
2023-02-22 15:12:58 +01:00
Armin SchrenkandGitHub 2a70e2f0f4 Merge pull request #2686 from cryptomator/feature/recovery-key-wrong-key
Display message if recovery key is not valid
2023-02-17 15:41:39 +01:00
Tobias Hagemann ffe0302fba updated access modifier 2023-02-17 15:33:00 +01:00
Armin Schrenk c5b86bc355 Closes #2648 2023-02-17 14:46:45 +01:00
Armin Schrenk 5f86473e3e fix recovery key state logic 2023-02-17 12:49:38 +01:00
Armin Schrenk a91c74b6eb Revert "Update translation key"
This reverts commit 71a09eae67.
2023-02-17 11:19:21 +01:00
76949d6ccb Update src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java
Co-authored-by: Tobias Hagemann <tobias.hagemann@skymatic.de>
2023-02-17 11:18:55 +01:00
Armin Schrenk 71a09eae67 Update translation key 2023-02-17 10:59:04 +01:00
8087fcecfb Apply suggestions from code review
Co-authored-by: Tobias Hagemann <tobias.hagemann@skymatic.de>
2023-02-17 10:56:18 +01:00
Armin Schrenk 29c73e1bc8 display different messages if recovery key is either not valid or does not belong to the vault 2023-02-16 11:51:03 +01:00
Armin Schrenk 8bbdb69cda Update doc links to 1.7 2023-02-16 09:55:42 +01:00
Armin Schrenk e9ee15dcd5 add info about html comments to error form 2023-02-16 09:42:28 +01:00
Armin Schrenk 03f6e0a33c Use Label instead of Text 2023-02-15 23:44:51 +01:00
Armin Schrenk c5b21b0d8c Add warning about error report deletion to the error controller 2023-02-15 11:44:37 +01:00
Armin Schrenk c5c5e297b7 Fix getCiphertextPath for Windows again. 2023-02-14 17:39:34 +01:00
Armin Schrenk 24839985e9 Merge branch 'develop' into release/1.7.0 2023-02-14 11:40:10 +01:00
Armin Schrenk a7b2802f34 show correct error message when using custom mountpoint with webdav (Http address) 2023-02-14 11:39:16 +01:00
Armin Schrenk c85d0b4beb bump webdav-nio-adapter 2023-02-14 11:22:11 +01:00
Armin Schrenk 3dff3a8664 Fixes #2682
* allow windows installer to remove same version
* add revisionNumber to installer version
2023-02-14 11:20:22 +01:00
Armin Schrenk 5b0bbf539b improve FailOnRunningApp action 2023-02-13 23:34:43 +01:00
Armin Schrenk 1ff7c40fd9 Fixes #2672 and fixes #2668 2023-02-13 10:42:17 +01:00
Armin SchrenkandGitHub d0875ef49e Merge pull request #2669 from cryptomator/feature/virtual-volume-doc-link
Add link to volume type documentation
2023-02-09 13:06:03 +01:00
Armin Schrenk e35ed9af72 enable localization of tooltip 2023-02-08 20:11:34 +01:00
Armin Schrenk ac43efe149 change UI to be not so clunky:
* only use question mark icon
* use tooltip at icon instead of explicit label
* icon is the hyperlink
2023-02-08 11:33:41 +01:00
Armin Schrenk 202a2ea79f Load revealPathServiceProvider at app startup 2023-02-08 11:14:54 +01:00
Armin Schrenk c19a86a348 add link to mounting documentation 2023-02-07 15:23:04 +01:00
Armin Schrenk 539dcaa85a Update issue template 2023-02-07 12:23:25 +01:00
Armin Schrenk fb91c1a461 Merge branch 'develop' into release/1.7.0 2023-02-06 14:45:56 +01:00
CryptobotandGitHub bd75370dfd New Crowdin updates (#2646)
New translations strings.properties

Catalan; Chinese Simplified; Dutch; Italian; Persian; Polish; Slovak;

[ci skip]
2023-02-06 14:44:45 +01:00
Armin Schrenk 7a9a9cf4eb Follow up of 69d73d0fb9: Remove standalone launchers 2023-02-06 12:31:56 +01:00
Armin Schrenk 489e9fce90 bump integrations-win to 1.2.0-beta2
Closes #2657
2023-02-03 13:19:53 +01:00
Armin Schrenk d378d84832 bump fuse-nio-adapter 2023-02-03 13:19:43 +01:00
Armin Schrenk 69d73d0fb9 Remove standalone launchers 2023-02-03 13:15:03 +01:00
Armin Schrenk 97c0cb4f5f add to settings.json the app version written to it last 2023-02-02 16:44:03 +01:00
Armin Schrenk b4faae7fa0 make debug logs readable by filter out internal fuse-nio locking 2023-02-02 10:36:31 +01:00
Armin Schrenk 55d76b65cc Add IOException to log message during revealPath 2023-02-01 22:31:27 +01:00
Armin Schrenk fd6e1e6741 fix bug 2023-02-01 19:23:28 +01:00
Armin Schrenk 155558caa8 add style class to text object 2023-02-01 13:50:56 +01:00
Armin Schrenk 28217b2de3 only perform mountpoint move and cleanup, if mountpoint is not a drive letter 2023-02-01 13:44:57 +01:00
Armin SchrenkandGitHub b9e57ce895 Merge pull request #2654 from cryptomator/feature/2652-migrate-dir-mounts
Feature/2652 migrate dir mounts
2023-02-01 11:17:11 +01:00
Armin Schrenk 95ea23ee6e add more comments regarding removal evaluation of this workaround 2023-02-01 11:07:23 +01:00
Armin Schrenk c269184217 ensure that settings.json is a file 2023-01-31 18:05:31 +01:00
Armin Schrenk 68d32957e4 fix errors 2023-01-31 16:37:25 +01:00
Armin Schrenk a771f0a5b7 doc doc doc 2023-01-31 13:59:18 +01:00
Armin Schrenk e56e6a8359 integrate script into installer 2023-01-31 13:58:56 +01:00
Armin Schrenk 5f9b77241f extend migration script to all local users 2023-01-31 13:40:25 +01:00
Armin Schrenk fb54ee04a6 Remove Dokany advertisement from msi installer 2023-01-30 13:32:56 +01:00
Armin Schrenk a106b04c7e prototpye for powershell script to be executed after installation 2023-01-30 13:30:06 +01:00
Armin Schrenk 285d48b70b Merge branch 'develop' into release/1.7.0 2023-01-27 13:27:31 +01:00
Armin Schrenk 0d8d7e4ee5 fix debian artifact upload 2023-01-27 13:27:03 +01:00
Armin Schrenk f232f9d958 Merge branch 'develop' into release/1.7.0 2023-01-27 12:31:00 +01:00
Armin Schrenk 88c3b0cc4f remove tag-name from release action to just add to current release on debian build 2023-01-27 12:30:44 +01:00
105 changed files with 1328 additions and 742 deletions
+10 -5
View File
@@ -37,12 +37,17 @@ body:
id: volume-type id: volume-type
attributes: attributes:
label: Volume Type label: Volume Type
description: What is selected under Settings → Virtual Drive? description: What volume type is selected under Settings → Virtual Drive?
multiple: true
options: options:
- FUSE - WinFsp
- Dokany - WinFsp (Local Drive)
- WebDAV - FUSE-T
- macFUSE
- WebDAV (Windows Explorer)
- WebDAV (AppleScript)
- WebDAV (gio)
- WebDAV (HTTP Address)
- Dokany (1.5)
validations: validations:
required: false required: false
- type: textarea - type: textarea
-1
View File
@@ -47,7 +47,6 @@ jobs:
- name: Patch target dir - name: Patch target dir
run: | run: |
cp LICENSE.txt target cp LICENSE.txt target
cp dist/linux/launcher.sh target
cp target/cryptomator-*.jar target/mods cp target/cryptomator-*.jar target/mods
- name: Run jlink - name: Run jlink
run: > run: >
+7 -10
View File
@@ -20,8 +20,8 @@ on:
env: env:
JAVA_VERSION: 19 JAVA_VERSION: 19
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/19/openjfx-19_linux-x64_bin-jmods.zip' OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/19.0.2.1/openjfx-19.0.2.1_linux-x64_bin-jmods.zip'
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/19/openjfx-19_linux-aarch64_bin-jmods.zip' OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/19.0.2.1/openjfx-19.0.2.1_linux-aarch64_bin-jmods.zip'
jobs: jobs:
build: build:
@@ -148,11 +148,8 @@ jobs:
echo "TAG_NAME=${REF##*/}" >> $GITHUB_ENV echo "TAG_NAME=${REF##*/}" >> $GITHUB_ENV
- name: Publish Debian package on GitHub Releases - name: Publish Debian package on GitHub Releases
if: startsWith(inputs.ref, 'refs/tags/') if: startsWith(inputs.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1 env:
with: GITHUB_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
fail_on_unmatched_files: true run: |
tag_name: ${{ inputs.ref }} artifacts=$(ls | grep cryptomator*.deb)
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }} gh release upload ${{ env.TAG_NAME }} $artifacts
files: |
cryptomator_*_amd64.deb
cryptomator_*.asc
+6 -5
View File
@@ -30,10 +30,12 @@ jobs:
architecture: x64 architecture: x64
output-suffix: x64 output-suffix: x64
xcode-path: '/Applications/Xcode_13.2.1.app' xcode-path: '/Applications/Xcode_13.2.1.app'
fuse-lib: macFUSE
- os: [self-hosted, macOS, ARM64] - os: [self-hosted, macOS, ARM64]
architecture: aarch64 architecture: aarch64
output-suffix: arm64 output-suffix: arm64
xcode-path: '/Applications/Xcode_13.2.1.app' xcode-path: '/Applications/Xcode_13.2.1.app'
fuse-lib: FUSE-T
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Setup Java - name: Setup Java
@@ -61,7 +63,6 @@ jobs:
- name: Patch target dir - name: Patch target dir
run: | run: |
cp LICENSE.txt target cp LICENSE.txt target
cp dist/mac/launcher.sh target
cp target/cryptomator-*.jar target/mods cp target/cryptomator-*.jar target/mods
- name: Run jlink - name: Run jlink
run: > run: >
@@ -178,7 +179,7 @@ jobs:
run: | run: |
mkdir dmg mkdir dmg
mv Cryptomator.app dmg mv Cryptomator.app dmg
cp dist/mac/dmg/resources/macFUSE.webloc dmg cp dist/mac/dmg/resources/${{ matrix.fuse-lib }}.webloc dmg
ls -l dmg ls -l dmg
- name: Install create-dmg - name: Install create-dmg
run: | run: |
@@ -189,14 +190,14 @@ jobs:
create-dmg create-dmg
--volname Cryptomator --volname Cryptomator
--volicon "dist/mac/dmg/resources/Cryptomator-Volume.icns" --volicon "dist/mac/dmg/resources/Cryptomator-Volume.icns"
--background "dist/mac/dmg/resources/Cryptomator-background.tiff" --background "dist/mac/dmg/resources/Cryptomator-${{ matrix.fuse-lib }}-background.tiff"
--window-pos 400 100 --window-pos 400 100
--window-size 640 694 --window-size 640 694
--icon-size 128 --icon-size 128
--icon "Cryptomator.app" 128 245 --icon "Cryptomator.app" 128 245
--hide-extension "Cryptomator.app" --hide-extension "Cryptomator.app"
--icon "macFUSE.webloc" 320 501 --icon "${{ matrix.fuse-lib }}.webloc" 320 501
--hide-extension "macFUSE.webloc" --hide-extension "${{ matrix.fuse-lib }}.webloc"
--app-drop-link 512 245 --app-drop-link 512 245
--eula "dist/mac/dmg/resources/license.rtf" --eula "dist/mac/dmg/resources/license.rtf"
--icon ".background" 128 758 --icon ".background" 128 758
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
steps: steps:
- name: Download source tarball - name: Download source tarball
run: | run: |
curl -L -H "Accept: application/vnd.github+json" ${{ github.event.release.tarball_url }} --output cryptomator-${{ github.event.release.tag_name }}.tar.gz curl -L -H "Accept: application/vnd.github+json" https://github.com/cryptomator/cryptomator/archive/refs/tags/${{ github.event.release.tag_name }}.tar.gz --output cryptomator-${{ github.event.release.tag_name }}.tar.gz
- name: Sign source tarball with key 615D449FE6E6A235 - name: Sign source tarball with key 615D449FE6E6A235
run: | run: |
echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import
+4 -12
View File
@@ -55,7 +55,6 @@ jobs:
- name: Patch target dir - name: Patch target dir
run: | run: |
cp LICENSE.txt target cp LICENSE.txt target
cp dist/linux/launcher.sh target
cp target/cryptomator-*.jar target/mods cp target/cryptomator-*.jar target/mods
- name: Run jlink - name: Run jlink
run: > run: >
@@ -157,7 +156,7 @@ jobs:
--name Cryptomator --name Cryptomator
--vendor "Skymatic GmbH" --vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2023 Skymatic GmbH" --copyright "(C) 2016 - 2023 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}" --app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum}}"
--win-menu --win-menu
--win-dir-chooser --win-dir-chooser
--win-shortcut-prompt --win-shortcut-prompt
@@ -204,15 +203,6 @@ jobs:
*.msi *.msi
*.asc *.asc
call-winget-flow:
needs: [get-version, build-msi]
if: github.event.action == 'published' && needs.get-version.outputs.versionType == 'stable'
uses: ./.github/workflows/winget.yml
with:
releaseTag: ${{ github.event.release.tag_name }}
secrets: inherit
build-exe: build-exe:
name: Build .exe installer name: Build .exe installer
runs-on: windows-latest runs-on: windows-latest
@@ -244,13 +234,14 @@ jobs:
shell: pwsh shell: pwsh
- name: Download WinFsp - name: Download WinFsp
run: | run: |
$winfspUrl= (Select-String -Path ".\dist\win\bundle\resources\winfsp-download.url" -Pattern 'https:.*').Matches.Value $winfspUrl = (Select-String -Path ".\dist\win\bundle\resources\winFspMetaData.wxi" -Pattern '<\?define BundledWinFspDownloadLink="(.+)".*?>').Matches.Groups[1].Value
curl --output dist/win/bundle/resources/winfsp.msi -L $winfspUrl curl --output dist/win/bundle/resources/winfsp.msi -L $winfspUrl
shell: pwsh shell: pwsh
- name: Compile to wixObj file - name: Compile to wixObj file
run: > run: >
"${WIX}/bin/candle.exe" dist/win/bundle/bundleWithWinfsp.wxs "${WIX}/bin/candle.exe" dist/win/bundle/bundleWithWinfsp.wxs
-ext WixBalExtension -ext WixBalExtension
-ext WixUtilExtension
-out dist/win/bundle/ -out dist/win/bundle/
-dBundleVersion="${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}" -dBundleVersion="${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}"
-dBundleVendor="Skymatic GmbH" -dBundleVendor="Skymatic GmbH"
@@ -262,6 +253,7 @@ jobs:
run: > run: >
"${WIX}/bin/light.exe" -b dist/win/ dist/win/bundle/bundleWithWinfsp.wixobj "${WIX}/bin/light.exe" -b dist/win/ dist/win/bundle/bundleWithWinfsp.wixobj
-ext WixBalExtension -ext WixBalExtension
-ext WixUtilExtension
-out installer/unsigned/Cryptomator-Installer.exe -out installer/unsigned/Cryptomator-Installer.exe
- name: Detach burn engine in preparation to sign - name: Detach burn engine in preparation to sign
run: > run: >
-49
View File
@@ -1,49 +0,0 @@
name: Release to Winget
on:
workflow_call:
inputs:
releaseTag:
required: true
type: string
workflow_dispatch:
inputs:
releaseTag:
description: 'Release tag name'
required: true
type: string
jobs:
publish-winget:
name: Publish on winget repo
runs-on: windows-latest
steps:
- name: Get download url for release assets
id: get-release-assets
uses: actions/github-script@v6
with:
script: |
const query =`query($tag:String!) {
repository(owner:"cryptomator", name:"cryptomator"){
release(tagName: $tag) {
releaseAssets(first:20) {
nodes {
name
downloadUrl
}
}
}
}
}`;
const variables = {
tag: "${{ inputs.releaseTag }}"
}
return await github.graphql(query, variables)
- name: Submit package to Windows Package Manager Community Repository
id: submit-winget
run: |
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
$releaseAssets = (ConvertFrom-Json '${{ steps.get-release-assets.outputs.result }}').repository.release.releaseAssets.nodes
$installerUrl = $releaseAssets | Where-Object -Property name -match '^Cryptomator-.*\.msi$' | Select -ExpandProperty downloadUrl -First 1
.\wingetcreate.exe update Cryptomator.Cryptomator -s -v "${{ inputs.releaseTag }}" -u "$installerUrl" -t ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
shell: pwsh
+6 -4
View File
@@ -14,10 +14,10 @@
<option name="dagger.fastInit" value="enabled" /> <option name="dagger.fastInit" value="enabled" />
<option name="dagger.formatGeneratedSource" value="enabled" /> <option name="dagger.formatGeneratedSource" value="enabled" />
<processorPath useClasspath="false"> <processorPath useClasspath="false">
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-compiler/2.44/dagger-compiler-2.44.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-compiler/2.45/dagger-compiler-2.45.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger/2.44/dagger-2.44.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger/2.45/dagger-2.45.jar" />
<entry name="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" /> <entry name="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-producers/2.44/dagger-producers-2.44.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-producers/2.45/dagger-producers-2.45.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
@@ -26,14 +26,16 @@
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar" /> <entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-spi/2.44/dagger-spi-2.44.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-spi/2.45/dagger-spi-2.45.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/devtools/ksp/symbol-processing-api/1.7.0-1.0.6/symbol-processing-api-1.7.0-1.0.6.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/devtools/ksp/symbol-processing-api/1.7.0-1.0.6/symbol-processing-api-1.7.0-1.0.6.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.7.0/kotlin-stdlib-1.7.0.jar" /> <entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.7.0/kotlin-stdlib-1.7.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.0/kotlin-stdlib-common-1.7.0.jar" /> <entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.0/kotlin-stdlib-common-1.7.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" /> <entry name="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/squareup/javapoet/1.13.0/javapoet-1.13.0.jar" /> <entry name="$MAVEN_REPOSITORY$/com/squareup/javapoet/1.13.0/javapoet-1.13.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/squareup/kotlinpoet/1.11.0/kotlinpoet-1.11.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.0/kotlin-stdlib-jdk8-1.7.0.jar" /> <entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.0/kotlin-stdlib-jdk8-1.7.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.0/kotlin-stdlib-jdk7-1.7.0.jar" /> <entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.0/kotlin-stdlib-jdk7-1.7.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/googlejavaformat/google-java-format/1.5/google-java-format-1.5.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/googlejavaformat/google-java-format/1.5/google-java-format-1.5.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/javac-shaded/9-dev-r4023-3/javac-shaded-9-dev-r4023-3.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/errorprone/javac-shaded/9-dev-r4023-3/javac-shaded-9-dev-r4023-3.jar" />
<entry name="$MAVEN_REPOSITORY$/net/ltgt/gradle/incap/incap/0.2/incap-0.2.jar" /> <entry name="$MAVEN_REPOSITORY$/net/ltgt/gradle/incap/incap/0.2/incap-0.2.jar" />
+1 -3
View File
@@ -21,7 +21,6 @@ Cryptomator is provided free of charge as an open-source project despite the hig
<tbody> <tbody>
<tr> <tr>
<td><a href="https://www.gee-whiz.de/"><img src="https://cryptomator.org/img/sponsors/geewhiz.svg" alt="gee-whiz" height="80"></a></td> <td><a href="https://www.gee-whiz.de/"><img src="https://cryptomator.org/img/sponsors/geewhiz.svg" alt="gee-whiz" height="80"></a></td>
<td><a href="https://proxy-hub.com/"><img src="https://cryptomator.org/img/sponsors/proxyhub.svg" alt="Proxy-Hub" height="80"></a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -32,7 +31,6 @@ Cryptomator is provided free of charge as an open-source project despite the hig
<tbody> <tbody>
<tr> <tr>
<td><a href="https://mowcapital.com/"><img src="https://cryptomator.org/img/sponsors/mowcapital.svg" alt="Mow Capital" height="40"></a></td> <td><a href="https://mowcapital.com/"><img src="https://cryptomator.org/img/sponsors/mowcapital.svg" alt="Mow Capital" height="40"></a></td>
<td><a href="https://www.easeus.com/"><img src="https://cryptomator.org/img/sponsors/easeus.png" alt="EaseUS" height="40"></a></td>
<td><a href="https://www.hassmann-it-forensik.de/"><img src="https://cryptomator.org/img/sponsors/hassmannitforensik.png" alt="Hassmann IT-Forensik" height="40"></a></td> <td><a href="https://www.hassmann-it-forensik.de/"><img src="https://cryptomator.org/img/sponsors/hassmannitforensik.png" alt="Hassmann IT-Forensik" height="40"></a></td>
</tr> </tr>
</tbody> </tbody>
@@ -74,7 +72,7 @@ Download native binaries of Cryptomator on [cryptomator.org](https://cryptomator
### Consistency ### Consistency
- HMAC over file contents to recognize changed ciphertext before decryption - Authenticated encryption is used for file content to recognize changed ciphertext before decryption
- I/O operations are transactional and atomic, if the filesystems support it - I/O operations are transactional and atomic, if the filesystems support it
- Each file contains all information needed for decryption (except for the key of course), no common metadata means no [SPOF](http://en.wikipedia.org/wiki/Single_point_of_failure) - Each file contains all information needed for decryption (except for the key of course), no common metadata means no [SPOF](http://en.wikipedia.org/wiki/Single_point_of_failure)
@@ -66,6 +66,10 @@
</content_rating> </content_rating>
<releases> <releases>
<release date="2023-03-15" version="1.7.3"/>
<release date="2023-03-07" version="1.7.2"/>
<release date="2023-03-03" version="1.7.1"/>
<release date="2023-03-01" version="1.7.0"/>
<release date="2022-12-14" version="1.6.17"/> <release date="2022-12-14" version="1.6.17"/>
<release date="2022-12-06" version="1.6.16"/> <release date="2022-12-06" version="1.6.16"/>
<release date="2022-10-06" version="1.6.15"/> <release date="2022-10-06" version="1.6.15"/>
+1 -1
View File
@@ -12,7 +12,7 @@ Package: cryptomator
Architecture: any Architecture: any
Section: utils Section: utils
Priority: optional Priority: optional
Depends: ${shlibs:Depends}, ${misc:Depends}, libfuse3-3 Depends: ${shlibs:Depends}, ${misc:Depends}, fuse3
Recommends: gvfs-backends, gvfs-fuse, gnome-keyring Recommends: gvfs-backends, gvfs-fuse, gnome-keyring
XB-AppName: Cryptomator XB-AppName: Cryptomator
XB-Category: Utility;Security;FileTools; XB-Category: Utility;Security;FileTools;
-15
View File
@@ -1,15 +0,0 @@
#!/bin/sh
cd $(dirname $0)
java \
-p "mods" \
-cp "libs/*" \
-Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json" \
-Dcryptomator.ipcSocketPath="~/.config/Cryptomator/ipc.socket" \
-Dcryptomator.logDir="~/.local/share/Cryptomator/logs" \
-Dcryptomator.mountPointsDir="~/.local/share/Cryptomator/mnt" \
-Djdk.gtk.version=2 \
-Xss2m \
-Xmx512m \
--enable-preview \
--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64 \
-m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator
+5 -4
View File
@@ -27,6 +27,7 @@ MAIN_JAR_GLOB="cryptomator-*.jar"
MODULE_AND_MAIN_CLASS="org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator" MODULE_AND_MAIN_CLASS="org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator"
REVISION_NO=`git rev-list --count HEAD` REVISION_NO=`git rev-list --count HEAD`
VERSION_NO=`mvn -f../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout | sed -rn 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'` VERSION_NO=`mvn -f../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout | sed -rn 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'`
FUSE_LIB="FUSE-T"
# check preconditions # check preconditions
if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi
@@ -125,20 +126,20 @@ fi
# prepare dmg contents # prepare dmg contents
mkdir dmg mkdir dmg
mv ${APP_NAME}.app dmg mv ${APP_NAME}.app dmg
cp resources/macFUSE.webloc dmg cp resources/${FUSE_LIB}.webloc dmg
# create dmg # create dmg
create-dmg \ create-dmg \
--volname ${APP_NAME} \ --volname ${APP_NAME} \
--volicon "resources/${APP_NAME}-Volume.icns" \ --volicon "resources/${APP_NAME}-Volume.icns" \
--background "resources/${APP_NAME}-background.tiff" \ --background "resources/${APP_NAME}-${FUSE_LIB}-background.tiff" \
--window-pos 400 100 \ --window-pos 400 100 \
--window-size 640 694 \ --window-size 640 694 \
--icon-size 128 \ --icon-size 128 \
--icon "${APP_NAME}.app" 128 245 \ --icon "${APP_NAME}.app" 128 245 \
--hide-extension "${APP_NAME}.app" \ --hide-extension "${APP_NAME}.app" \
--icon "macFUSE.webloc" 320 501 \ --icon "${FUSE_LIB}.webloc" 320 501 \
--hide-extension "macFUSE.webloc" \ --hide-extension "${FUSE_LIB}.webloc" \
--app-drop-link 512 245 \ --app-drop-link 512 245 \
--eula "resources/license.rtf" \ --eula "resources/license.rtf" \
--icon ".background" 128 758 \ --icon ".background" 128 758 \
Binary file not shown.
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>URL</key>
<string>https://www.fuse-t.org/</string>
</dict>
</plist>
-14
View File
@@ -1,14 +0,0 @@
#!/bin/sh
cd $(dirname $0)
java \
-p "mods" \
-cp "libs/*" \
-Dcryptomator.settingsPath="~/Library/Application Support/Cryptomator/settings.json" \
-Dcryptomator.ipcSocketPath="~/Library/Application Support/Cryptomator/ipc.socket" \
-Dcryptomator.logDir="~/Library/Logs/Cryptomator" \
-Dcryptomator.mountPointsDir="/Volumes" \
-Xss20m \
-Xmx512m \
--enable-preview \
--enable-native-access=org.cryptomator.jfuse.mac \
-m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator
+4 -4
View File
@@ -129,7 +129,7 @@ $Env:JP_WIXWIZARD_RESOURCES = "$buildDir\resources"
--name $AppName ` --name $AppName `
--vendor $Vendor ` --vendor $Vendor `
--copyright $copyright ` --copyright $copyright `
--app-version "$semVerNo" ` --app-version "$semVerNo.$revisionNo" `
--win-menu ` --win-menu `
--win-dir-chooser ` --win-dir-chooser `
--win-shortcut-prompt ` --win-shortcut-prompt `
@@ -153,7 +153,7 @@ $Env:JP_WIXWIZARD_RESOURCES = "$buildDir\resources"
# download Winfsp # download Winfsp
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ProgressPreference = 'SilentlyContinue' # disables Invoke-WebRequest's progress bar, which slows down downloads to a few bytes/s $ProgressPreference = 'SilentlyContinue' # disables Invoke-WebRequest's progress bar, which slows down downloads to a few bytes/s
$winfspMsiUrl= (Select-String -Path ".\bundle\resources\winfsp-download.url" -Pattern 'https:.*').Matches.Value $winfspMsiUrl= (Select-String -Path ".\bundle\resources\winFspMetaData.wxi" -Pattern '<\?define BundledWinFspDownloadLink="(.+)".*?>').Matches.Groups[1].Value
Write-Output "Downloading ${winfspMsiUrl}..." Write-Output "Downloading ${winfspMsiUrl}..."
Invoke-WebRequest $winfspMsiUrl -OutFile ".\bundle\resources\winfsp.msi" # redirects are followed by default Invoke-WebRequest $winfspMsiUrl -OutFile ".\bundle\resources\winfsp.msi" # redirects are followed by default
@@ -161,11 +161,11 @@ Invoke-WebRequest $winfspMsiUrl -OutFile ".\bundle\resources\winfsp.msi" # redir
Copy-Item ".\installer\$AppName-*.msi" -Destination ".\bundle\resources\$AppName.msi" Copy-Item ".\installer\$AppName-*.msi" -Destination ".\bundle\resources\$AppName.msi"
# create bundle including winfsp # create bundle including winfsp
& "$env:WIX\bin\candle.exe" .\bundle\bundleWithWinfsp.wxs -ext WixBalExtension -out bundle\ ` & "$env:WIX\bin\candle.exe" .\bundle\bundleWithWinfsp.wxs -ext WixBalExtension -ext WixUtilextension -out bundle\ `
-dBundleVersion="$semVerNo.$revisionNo" ` -dBundleVersion="$semVerNo.$revisionNo" `
-dBundleVendor="$Vendor" ` -dBundleVendor="$Vendor" `
-dBundleCopyright="$copyright" ` -dBundleCopyright="$copyright" `
-dAboutUrl="$AboutUrl" ` -dAboutUrl="$AboutUrl" `
-dHelpUrl="$HelpUrl" ` -dHelpUrl="$HelpUrl" `
-dUpdateUrl="$UpdateUrl" -dUpdateUrl="$UpdateUrl"
& "$env:WIX\bin\light.exe" -b . .\bundle\BundlewithWinfsp.wixobj -ext WixBalExtension -out installer\$AppName-Installer.exe & "$env:WIX\bin\light.exe" -b . .\bundle\BundlewithWinfsp.wixobj -ext WixBalExtension -ext WixUtilextension -out installer\$AppName-Installer.exe
+19 -1
View File
@@ -1,13 +1,31 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<!-- see https://wixtoolset.org/documentation/manual/v3/xsd/wix/bundle.html--> <!-- see https://wixtoolset.org/documentation/manual/v3/xsd/wix/bundle.html-->
<!-- Attributes explicitly not used: <!-- Attributes explicitly not used:
Condition - the single msi files have their own install conditions, no need to copy them here Condition - the single msi files have their own install conditions, no need to copy them here
--> -->
<Bundle Name="Cryptomator" UpgradeCode="29eea626-2e5b-4449-b5f8-4602925ddf7b" Version="$(var.BundleVersion)" Manufacturer="$(var.BundleVendor)" <Bundle Name="Cryptomator" UpgradeCode="29eea626-2e5b-4449-b5f8-4602925ddf7b" Version="$(var.BundleVersion)" Manufacturer="$(var.BundleVendor)"
AboutUrl="$(var.AboutUrl)" HelpUrl="$(var.HelpUrl)" UpdateUrl="$(var.UpdateUrl)" Copyright="$(var.BundleCopyright)" IconSourceFile="bundle\resources\Cryptomator.ico"> AboutUrl="$(var.AboutUrl)" HelpUrl="$(var.HelpUrl)" UpdateUrl="$(var.UpdateUrl)" Copyright="$(var.BundleCopyright)" IconSourceFile="bundle\resources\Cryptomator.ico">
<!-- detect outdated WinFsp installations -->
<?include "resources\winFspMetaData.wxi" ?>
<util:ProductSearch
Variable="InstalledWinFspVersion"
Result="version"
UpgradeCode="82F812D9-4083-4EF1-8BC8-0F1EDA05B46B"
/>
<!-- Note: The bundle engine takes the Message format literaly -->
<bal:Condition Message=
"The WinFsp driver used by Cryptomator is outdated and must be removed before the installation.
1. Open the view of installed apps
2. Search for &quot;WinFsp&quot;
3. Uninstall the listed application
4. Reboot your device
5. Restart this installer">(InstalledWinFspVersion = v0.0.0.0) OR ($(var.BundledWinFspVersion) &lt;= InstalledWinFspVersion)</bal:Condition>
<!-- for definition of the standard themes, see https://github.com/wixtoolset/wix3/blob/master/src/ext/BalExtension/wixstdba/Resources/--> <!-- for definition of the standard themes, see https://github.com/wixtoolset/wix3/blob/master/src/ext/BalExtension/wixstdba/Resources/-->
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLargeLicense"> <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLargeLicense">
<!-- see https://wixtoolset.org/documentation/manual/v3/xsd/bal/wixstandardbootstrapperapplication.html --> <!-- see https://wixtoolset.org/documentation/manual/v3/xsd/bal/wixstandardbootstrapperapplication.html -->
+2 -1
View File
@@ -10,6 +10,7 @@
<Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font> <Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font>
<Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font> <Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font> <Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font>
<Font Id="5" Height="-12" Weight="700" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="logo.png" /> <Image X="11" Y="11" Width="64" Height="64" ImageFile="logo.png" />
<Text X="80" Y="11" Width="-11" Height="64" FontId="1" DisablePrefix="yes">#(loc.Title)</Text> <Text X="80" Y="11" Width="-11" Height="64" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
@@ -82,7 +83,7 @@
<Text Name="FailureUninstallHeader" X="185" Y="50" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureUninstallHeader)</Text> <Text Name="FailureUninstallHeader" X="185" Y="50" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureUninstallHeader)</Text>
<Text Name="FailureRepairHeader" X="185" Y="50" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRepairHeader)</Text> <Text Name="FailureRepairHeader" X="185" Y="50" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRepairHeader)</Text>
<Hypertext Name="FailureLogFileLink" X="185" Y="121" Width="-11" Height="68" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext> <Hypertext Name="FailureLogFileLink" X="185" Y="121" Width="-11" Height="68" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="185" Y="-115" Width="-11" Height="80" FontId="3" TabStop="yes" HideWhenDisabled="yes" /> <Hypertext Name="FailureMessageText" X="185" Y="-80" Width="-11" Height="140" FontId="5" TabStop="yes" HideWhenDisabled="yes" />
<Text Name="FailureRestartText" X="185" Y="-57" Width="-11" Height="80" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text> <Text Name="FailureRestartText" X="185" Y="-57" Width="-11" Height="80" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button> <Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button> <Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
<!-- A version number MUST be prefixed with letter "v", otherwise it is considered a normal string -->
<?define BundledWinFspVersion="v1.12.22339" ?>
<?define BundledWinFspDownloadLink="https://github.com/winfsp/winfsp/releases/download/v1.12.22339/winfsp-1.12.22339.msi" ?> <!-- Only used by external build scripts -->
</Include>
-2
View File
@@ -1,2 +0,0 @@
[InternetShortcut]
URL=https://github.com/winfsp/winfsp/releases/download/v1.12/winfsp-1.12.22301.msi
-12
View File
@@ -1,12 +0,0 @@
@echo off
java ^
-p "app/mods" ^
-cp "app/*" ^
-Dcryptomator.settingsPath="~/AppData/Roaming/Cryptomator/settings.json" ^
-Dcryptomator.ipcSocketPath="~/AppData/Roaming/Cryptomator/ipc.socket" ^
-Dcryptomator.logDir="~/AppData/Roaming/Cryptomator" ^
-Dcryptomator.mountPointsDir="~/Cryptomator" ^
-Dcryptomator.keychainPath="~/AppData/Roaming/Cryptomator/keychain.json" ^
-Xss20m ^
-Xmx512m ^
-m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator
+5
View File
@@ -0,0 +1,5 @@
@echo off
:: see comments in file ./version170-migrate-settings.ps1
cd %~dp0
powershell -NoLogo -NonInteractive -ExecutionPolicy Unrestricted -Command .\version170-migrate-settings.ps1
+35
View File
@@ -0,0 +1,35 @@
# This script migrates Cryptomator settings for all local users on Windows in case the users uses custom directories as mountpoint
# See also https://github.com/cryptomator/cryptomator/pull/2654.
#
# TODO: This script should be evaluated in a yearly interval if it is still needed and if not, should be removed
#
#Requires -RunAsAdministrator
#Get all active, local user profiles
$profileList = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
Get-ChildItem $profileList | ForEach-Object {
$profilePath = $_.GetValue("ProfileImagePath")
$settingsPath = "$profilePath\AppData\Roaming\Cryptomator\settings.json"
if(!(Test-Path -Path $settingsPath -PathType Leaf)) {
#No settings file, nothing to do.
return;
}
$settings = Get-Content -Path $settingsPath | ConvertFrom-Json
if($settings.preferredVolumeImpl -ne "FUSE") {
#Fuse not used, nothing to do
return;
}
#check if customMountPoints are used
$atLeastOneCustomPath = $false;
foreach ($vault in $settings.directories){
$atLeastOneCustomPath = $atLeastOneCustomPath -or ($vault.useCustomMountPath -eq "True")
}
#if so, use WinFsp Local Drive
if( $atLeastOneCustomPath ) {
Add-Member -Force -InputObject $settings -Name "mountService" -Value "org.cryptomator.frontend.fuse.mount.WinFspMountProvider" -MemberType NoteProperty
$newSettings = $settings | Select-Object * -ExcludeProperty "preferredVolumeImpl"
ConvertTo-Json $newSettings | Set-Content -Path $settingsPath
}
}
+2 -5
View File
@@ -65,13 +65,10 @@
<Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogTitle)" /> <Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogTitle)" />
<!-- TODO: localize? --> <!-- TODO: localize? -->
<Control Id="Suggestion" Type="Text" X="135" Y="100" Width="220" Height="60" Transparent="yes" NoPrefix="yes"> <Control Id="Suggestion" Type="Text" X="135" Y="100" Width="220" Height="60" Transparent="yes" NoPrefix="yes">
<Text>We recommend for the best user experience to download and install one of the following third party Windows drivers:</Text> <Text>We recommend for the best user experience to download and install the following third party Windows driver:</Text>
</Control> </Control>
<Control Id="WinFsp" Type="Hyperlink" X="140" Y="125" Width="220" Height="60" Transparent="yes"> <Control Id="WinFsp" Type="Hyperlink" X="140" Y="125" Width="220" Height="60" Transparent="yes">
<Text><![CDATA[• WinFsp (<a href="http://www.secfs.net/winfsp/rel/">Homepage</a>)]]></Text> <Text><![CDATA[WinFsp (<a href="https://winfsp.dev/">Homepage</a>)]]></Text>
</Control>
<Control Id="Dokany" Type="Hyperlink" X="140" Y="137" Width="220" Height="60" Transparent="yes">
<Text><![CDATA[• Dokany (<a href="https://dokan-dev.github.io/">Homepage</a>)]]></Text>
</Control> </Control>
</Dialog> </Dialog>
+8 -4
View File
@@ -54,7 +54,7 @@
Property="JP_UPGRADABLE_FOUND" Property="JP_UPGRADABLE_FOUND"
Maximum="$(var.JpAppVersion)" Maximum="$(var.JpAppVersion)"
MigrateFeatures="yes" MigrateFeatures="yes"
IncludeMaximum="$(var.JpUpgradeVersionOnlyDetectUpgrade)" /> IncludeMaximum="yes" /> <!-- TODO: check if this needs to be set to yes-->
<UpgradeVersion <UpgradeVersion
OnlyDetect="$(var.JpUpgradeVersionOnlyDetectDowngrade)" OnlyDetect="$(var.JpUpgradeVersionOnlyDetectDowngrade)"
Property="JP_DOWNGRADABLE_FOUND" Property="JP_DOWNGRADABLE_FOUND"
@@ -132,6 +132,9 @@
<!-- WebDAV patches --> <!-- WebDAV patches -->
<CustomAction Id="PatchWebDAV" Impersonate="no" ExeCommand="[INSTALLDIR]patchWebDAV.bat" Directory="INSTALLDIR" Execute="deferred" Return="asyncWait" /> <CustomAction Id="PatchWebDAV" Impersonate="no" ExeCommand="[INSTALLDIR]patchWebDAV.bat" Directory="INSTALLDIR" Execute="deferred" Return="asyncWait" />
<!-- Special Settings migration for 1.7.0,. Should be removed eventually, for more info, see ../contrib/version170-migrate-settings.ps1-->
<CustomAction Id="V170MigrateSettings" Impersonate="no" ExeCommand="[INSTALLDIR]version170-migrate-settings.bat" Directory="INSTALLDIR" Execute="deferred" Return="asyncWait" />
<!-- Running App detection and exit --> <!-- Running App detection and exit -->
<Property Id="FOUNDRUNNINGAPP" Admin="yes"/> <Property Id="FOUNDRUNNINGAPP" Admin="yes"/>
<util:CloseApplication <util:CloseApplication
@@ -140,11 +143,11 @@
CloseMessage="no" CloseMessage="no"
RebootPrompt="no" RebootPrompt="no"
PromptToContinue="yes" PromptToContinue="yes"
Description="A running instance of $(var.JpAppName) is found. Please close it to continue." Description="A running instance of $(var.JpAppName) is found, using files marked for update. Please close it to continue."
Property="FOUNDRUNNINGAPP" Property="FOUNDRUNNINGAPP"
> >
</util:CloseApplication> </util:CloseApplication>
<CustomAction Id="FailOnRunningApp" Impersonate="no" ExeCommand="[SystemFolder]\cmd.exe /c &quot;exit 1&quot;" Directory="INSTALLDIR" Execute="immediate" Return="check" /> <CustomAction Id="FailOnRunningApp" Error="Installation aborted, because files marked for update are used by a running instance of $(var.JpAppName)."/>
<?ifdef JpIcon ?> <?ifdef JpIcon ?>
<Property Id="ARPPRODUCTICON" Value="JpARPPRODUCTICON"/> <Property Id="ARPPRODUCTICON" Value="JpARPPRODUCTICON"/>
@@ -179,9 +182,10 @@
<Custom Action="WixCloseApplications" Before="InstallValidate"></Custom> <Custom Action="WixCloseApplications" Before="InstallValidate"></Custom>
<Custom Action="FailOnRunningApp" After="WixCloseApplications" >FOUNDRUNNINGAPP</Custom> <Custom Action="FailOnRunningApp" After="WixCloseApplications" >FOUNDRUNNINGAPP</Custom>
<RemoveExistingProducts After="InstallValidate"/> <RemoveExistingProducts After="InstallValidate"/> <!-- Moved from CostInitialize, due to WixCloseApplications -->
<Custom Action="PatchWebDAV" After="InstallFiles">NOT Installed OR REINSTALL</Custom> <Custom Action="PatchWebDAV" After="InstallFiles">NOT Installed OR REINSTALL</Custom>
<Custom Action="V170MigrateSettings" After="InstallFiles">NOT Installed OR REINSTALL</Custom>
</InstallExecuteSequence> </InstallExecuteSequence>
<WixVariable Id="WixUIBannerBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)\banner.bmp" /> <WixVariable Id="WixUIBannerBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)\banner.bmp" />
+24 -26
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>cryptomator</artifactId> <artifactId>cryptomator</artifactId>
<version>1.7.0-SNAPSHOT</version> <version>1.8.0-SNAPSHOT</version>
<name>Cryptomator Desktop App</name> <name>Cryptomator Desktop App</name>
<organization> <organization>
@@ -17,6 +17,11 @@
<email>sebastian.stenzel@gmail.com</email> <email>sebastian.stenzel@gmail.com</email>
<timezone>+1</timezone> <timezone>+1</timezone>
</developer> </developer>
<developer>
<name>Armin Schrenk</name>
<email>armin.schrenk+dev@mailbox.org</email>
<timezone>+1</timezone>
</developer>
</developers> </developers>
<properties> <properties>
@@ -28,49 +33,42 @@
<nonModularGroupIds>org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents,de.swiesend,org.purejava,com.github.hypfvieh</nonModularGroupIds> <nonModularGroupIds>org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents,de.swiesend,org.purejava,com.github.hypfvieh</nonModularGroupIds>
<!-- cryptomator dependencies --> <!-- cryptomator dependencies -->
<cryptomator.cryptolib.version>2.1.1</cryptomator.cryptolib.version> <cryptomator.cryptofs.version>2.6.2</cryptomator.cryptofs.version>
<cryptomator.cryptofs.version>2.6.1</cryptomator.cryptofs.version> <cryptomator.integrations.version>1.2.0</cryptomator.integrations.version>
<cryptomator.integrations.version>1.2.0-beta4</cryptomator.integrations.version> <cryptomator.integrations.win.version>1.2.0</cryptomator.integrations.win.version>
<cryptomator.integrations.win.version>1.2.0-beta1</cryptomator.integrations.win.version> <cryptomator.integrations.mac.version>1.2.0</cryptomator.integrations.mac.version>
<cryptomator.integrations.mac.version>1.2.0-beta2</cryptomator.integrations.mac.version> <cryptomator.integrations.linux.version>1.2.0</cryptomator.integrations.linux.version>
<cryptomator.integrations.linux.version>1.2.0-beta1</cryptomator.integrations.linux.version> <cryptomator.fuse.version>2.1.0-SNAPSHOT</cryptomator.fuse.version>
<cryptomator.fuse.version>2.0.0-beta4</cryptomator.fuse.version> <cryptomator.dokany.version>2.0.0</cryptomator.dokany.version>
<cryptomator.dokany.version>2.0.0-beta2</cryptomator.dokany.version> <cryptomator.webdav.version>2.0.2</cryptomator.webdav.version>
<cryptomator.webdav.version>2.0.0-beta4</cryptomator.webdav.version>
<!-- 3rd party dependencies --> <!-- 3rd party dependencies -->
<commons-lang3.version>3.12.0</commons-lang3.version> <commons-lang3.version>3.12.0</commons-lang3.version>
<dagger.version>2.44</dagger.version> <dagger.version>2.45</dagger.version>
<easybind.version>2.2</easybind.version> <easybind.version>2.2</easybind.version>
<guava.version>31.1-jre</guava.version> <guava.version>31.1-jre</guava.version>
<gson.version>2.9.1</gson.version> <gson.version>2.10.1</gson.version>
<javafx.version>19</javafx.version> <javafx.version>19.0.2.1</javafx.version>
<jwt.version>4.2.1</jwt.version> <jwt.version>4.3.0</jwt.version>
<nimbus-jose.version>9.25.4</nimbus-jose.version> <nimbus-jose.version>9.31</nimbus-jose.version>
<logback.version>1.4.4</logback.version> <logback.version>1.4.5</logback.version>
<slf4j.version>2.0.3</slf4j.version> <slf4j.version>2.0.6</slf4j.version>
<tinyoauth2.version>0.5.1</tinyoauth2.version> <tinyoauth2.version>0.5.1</tinyoauth2.version>
<zxcvbn.version>1.7.0</zxcvbn.version> <zxcvbn.version>1.7.0</zxcvbn.version>
<!-- test dependencies --> <!-- test dependencies -->
<junit.jupiter.version>5.9.1</junit.jupiter.version> <junit.jupiter.version>5.9.2</junit.jupiter.version>
<mockito.version>4.8.0</mockito.version> <mockito.version>5.1.1</mockito.version>
<hamcrest.version>2.2</hamcrest.version> <hamcrest.version>2.2</hamcrest.version>
<!-- build-time dependencies --> <!-- build-time dependencies -->
<jetbrains.annotations.version>23.0.0</jetbrains.annotations.version> <jetbrains.annotations.version>23.0.0</jetbrains.annotations.version>
<dependency-check.version>7.4.4</dependency-check.version> <dependency-check.version>8.1.0</dependency-check.version>
<jacoco.version>0.8.8</jacoco.version> <jacoco.version>0.8.8</jacoco.version>
</properties> </properties>
<dependencies> <dependencies>
<!-- Cryptomator Libs --> <!-- Cryptomator Libs -->
<dependency>
<!-- needed due to https://github.com/cryptomator/cryptolib/issues/34-->
<groupId>org.cryptomator</groupId>
<artifactId>cryptolib</artifactId>
<version>${cryptomator.cryptolib.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>cryptofs</artifactId> <artifactId>cryptofs</artifactId>
@@ -16,6 +16,7 @@ import org.cryptomator.common.settings.SettingsProvider;
import org.cryptomator.common.vaults.VaultComponent; import org.cryptomator.common.vaults.VaultComponent;
import org.cryptomator.common.vaults.VaultListModule; import org.cryptomator.common.vaults.VaultListModule;
import org.cryptomator.cryptolib.common.MasterkeyFileAccess; import org.cryptomator.cryptolib.common.MasterkeyFileAccess;
import org.cryptomator.integrations.revealpath.RevealPathService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -26,6 +27,7 @@ import java.net.InetSocketAddress;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.Comparator; import java.util.Comparator;
import java.util.Optional;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.SynchronousQueue; import java.util.concurrent.SynchronousQueue;
@@ -83,6 +85,13 @@ public abstract class CommonsModule {
return new SemVerComparator(); return new SemVerComparator();
} }
@Provides
@Singleton
static Optional<RevealPathService> provideRevealPathService() {
return RevealPathService.get().findFirst();
}
@Provides @Provides
@Singleton @Singleton
static Settings provideSettings(SettingsProvider settingsProvider) { static Settings provideSettings(SettingsProvider settingsProvider) {
@@ -2,6 +2,10 @@ package org.cryptomator.common.mount;
public class MountPointPreparationException extends RuntimeException { public class MountPointPreparationException extends RuntimeException {
public MountPointPreparationException(String msg) {
super(msg);
}
public MountPointPreparationException(Throwable cause) { public MountPointPreparationException(Throwable cause) {
super(cause); super(cause);
} }
@@ -51,8 +51,19 @@ public final class MountWithinParentUtil {
if (SystemUtils.IS_OS_WINDOWS) { if (SystemUtils.IS_OS_WINDOWS) {
Files.setAttribute(hideaway, WIN_HIDDEN_ATTR, true, LinkOption.NOFOLLOW_LINKS); Files.setAttribute(hideaway, WIN_HIDDEN_ATTR, true, LinkOption.NOFOLLOW_LINKS);
} }
int attempts = 0;
while (!Files.notExists(mountPoint)) {
if (attempts >= 10) {
throw new MountPointPreparationException("Path " + mountPoint + " could not be cleared");
}
Thread.sleep(1000);
attempts++;
}
} catch (IOException e) { } catch (IOException e) {
throw new MountPointPreparationException(e); throw new MountPointPreparationException(e);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new MountPointPreparationException(e);
} }
} }
} }
@@ -14,7 +14,6 @@ import javafx.beans.value.ObservableValue;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Objects;
import static org.cryptomator.integrations.mount.MountCapability.MOUNT_AS_DRIVE_LETTER; import static org.cryptomator.integrations.mount.MountCapability.MOUNT_AS_DRIVE_LETTER;
import static org.cryptomator.integrations.mount.MountCapability.MOUNT_TO_EXISTING_DIR; import static org.cryptomator.integrations.mount.MountCapability.MOUNT_TO_EXISTING_DIR;
@@ -60,13 +59,19 @@ public class Mounter {
case READ_ONLY -> builder.setReadOnly(vaultSettings.usesReadOnlyMode().get()); case READ_ONLY -> builder.setReadOnly(vaultSettings.usesReadOnlyMode().get());
case MOUNT_FLAGS -> { case MOUNT_FLAGS -> {
var mountFlags = vaultSettings.mountFlags().get(); var mountFlags = vaultSettings.mountFlags().get();
if( mountFlags == null || mountFlags.isBlank()) { if (mountFlags == null || mountFlags.isBlank()) {
builder.setMountFlags(service.getDefaultMountFlags()); builder.setMountFlags(service.getDefaultMountFlags());
} else { } else {
builder.setMountFlags(mountFlags); builder.setMountFlags(mountFlags);
} }
} }
case VOLUME_ID -> builder.setVolumeId(vaultSettings.getId()); case VOLUME_ID -> {
if(vaultSettings.usesVaultIdAsVolumeId().get()) {
builder.setVolumeId(vaultSettings.getId()+"\\test");
} else {
builder.setVolumeId(vaultSettings.mountName().get());
}
}
case VOLUME_NAME -> builder.setVolumeName(vaultSettings.mountName().get()); case VOLUME_NAME -> builder.setVolumeName(vaultSettings.mountName().get());
} }
} }
@@ -81,9 +86,10 @@ public class Mounter {
var canMountToDriveLetter = service.hasCapability(MOUNT_AS_DRIVE_LETTER); var canMountToDriveLetter = service.hasCapability(MOUNT_AS_DRIVE_LETTER);
var canMountToParent = service.hasCapability(MOUNT_WITHIN_EXISTING_PARENT); var canMountToParent = service.hasCapability(MOUNT_WITHIN_EXISTING_PARENT);
var canMountToDir = service.hasCapability(MOUNT_TO_EXISTING_DIR); var canMountToDir = service.hasCapability(MOUNT_TO_EXISTING_DIR);
var canMountToSystem = service.hasCapability(MOUNT_TO_SYSTEM_CHOSEN_PATH);
if (userChosenMountPoint == null) { if (userChosenMountPoint == null) {
if (service.hasCapability(MOUNT_TO_SYSTEM_CHOSEN_PATH)) { if (canMountToSystem) {
// no need to set a mount point // no need to set a mount point
} else if (canMountToDriveLetter) { } else if (canMountToDriveLetter) {
builder.setMountpoint(driveLetters.getFirstDesiredAvailable().orElseThrow()); //TODO: catch exception and translate builder.setMountpoint(driveLetters.getFirstDesiredAvailable().orElseThrow()); //TODO: catch exception and translate
@@ -96,7 +102,8 @@ public class Mounter {
builder.setMountpoint(mountPoint); builder.setMountpoint(mountPoint);
} }
} else { } else {
if (canMountToParent && !canMountToDir) { var mpIsDriveLetter = userChosenMountPoint.toString().matches("[A-Z]:\\\\");
if (!mpIsDriveLetter && canMountToParent && !canMountToDir) {
MountWithinParentUtil.prepareParentNoMountPoint(userChosenMountPoint); MountWithinParentUtil.prepareParentNoMountPoint(userChosenMountPoint);
cleanup = () -> { cleanup = () -> {
MountWithinParentUtil.cleanup(userChosenMountPoint); MountWithinParentUtil.cleanup(userChosenMountPoint);
@@ -104,9 +111,11 @@ public class Mounter {
} }
try { try {
builder.setMountpoint(userChosenMountPoint); builder.setMountpoint(userChosenMountPoint);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException | UnsupportedOperationException e) {
var mpIsDriveLetter = userChosenMountPoint.toString().matches("[A-Z]:\\\\"); var configNotSupported = (!canMountToDriveLetter && mpIsDriveLetter) //mounting as driveletter, albeit not supported
var configNotSupported = (!canMountToDriveLetter && mpIsDriveLetter) || (!canMountToDir && !mpIsDriveLetter) || (!canMountToParent && !mpIsDriveLetter); || (!canMountToDir && !mpIsDriveLetter) //mounting to directory, albeit not supported
|| (!canMountToParent && !mpIsDriveLetter) //
|| (!canMountToDir && !canMountToParent && !canMountToSystem && !canMountToDriveLetter);
if (configNotSupported) { if (configNotSupported) {
throw new MountPointNotSupportedException(e.getMessage()); throw new MountPointNotSupportedException(e.getMessage());
} else if (canMountToDir && !canMountToParent && !Files.exists(userChosenMountPoint)) { } else if (canMountToDir && !canMountToParent && !Files.exists(userChosenMountPoint)) {
@@ -37,29 +37,30 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
@Override @Override
public void write(JsonWriter out, Settings value) throws IOException { public void write(JsonWriter out, Settings value) throws IOException {
out.beginObject(); out.beginObject();
out.name("writtenByVersion").value(env.getAppVersion() + env.getBuildNumber().map("-"::concat).orElse(""));
out.name("directories"); out.name("directories");
writeVaultSettingsArray(out, value.getDirectories()); writeVaultSettingsArray(out, value.getDirectories());
out.name("askedForUpdateCheck").value(value.askedForUpdateCheck().get()); out.name("askedForUpdateCheck").value(value.askedForUpdateCheck().get());
out.name("checkForUpdatesEnabled").value(value.checkForUpdates().get());
out.name("startHidden").value(value.startHidden().get());
out.name("autoCloseVaults").value(value.autoCloseVaults().get()); out.name("autoCloseVaults").value(value.autoCloseVaults().get());
out.name("port").value(value.port().get()); out.name("checkForUpdatesEnabled").value(value.checkForUpdates().get());
out.name("numTrayNotifications").value(value.numTrayNotifications().get());
out.name("debugMode").value(value.debugMode().get()); out.name("debugMode").value(value.debugMode().get());
out.name("theme").value(value.theme().get().name()); out.name("displayConfiguration").value((value.displayConfigurationProperty().get()));
out.name("uiOrientation").value(value.userInterfaceOrientation().get().name());
out.name("keychainProvider").value(value.keychainProvider().get()); out.name("keychainProvider").value(value.keychainProvider().get());
out.name("useKeychain").value(value.useKeychain().get()); out.name("language").value((value.languageProperty().get()));
out.name("licenseKey").value(value.licenseKey().get()); out.name("licenseKey").value(value.licenseKey().get());
out.name("mountService").value(value.mountService().get());
out.name("numTrayNotifications").value(value.numTrayNotifications().get());
out.name("port").value(value.port().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("startHidden").value(value.startHidden().get());
out.name("theme").value(value.theme().get().name());
out.name("uiOrientation").value(value.userInterfaceOrientation().get().name());
out.name("useKeychain").value(value.useKeychain().get());
out.name("windowHeight").value((value.windowHeightProperty().get()));
out.name("windowWidth").value((value.windowWidthProperty().get()));
out.name("windowXPosition").value((value.windowXPositionProperty().get())); out.name("windowXPosition").value((value.windowXPositionProperty().get()));
out.name("windowYPosition").value((value.windowYPositionProperty().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.name("language").value((value.languageProperty().get()));
out.name("mountService").value(value.mountService().get());
out.endObject(); out.endObject();
} }
@@ -81,33 +82,34 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
while (in.hasNext()) { while (in.hasNext()) {
String name = in.nextName(); String name = in.nextName();
switch (name) { switch (name) {
case "writtenByVersion" -> in.skipValue(); //noop
case "directories" -> settings.getDirectories().addAll(readVaultSettingsArray(in)); case "directories" -> settings.getDirectories().addAll(readVaultSettingsArray(in));
case "askedForUpdateCheck" -> settings.askedForUpdateCheck().set(in.nextBoolean()); case "askedForUpdateCheck" -> settings.askedForUpdateCheck().set(in.nextBoolean());
case "checkForUpdatesEnabled" -> settings.checkForUpdates().set(in.nextBoolean());
case "startHidden" -> settings.startHidden().set(in.nextBoolean());
case "autoCloseVaults" -> settings.autoCloseVaults().set(in.nextBoolean()); case "autoCloseVaults" -> settings.autoCloseVaults().set(in.nextBoolean());
case "port" -> settings.port().set(in.nextInt()); case "checkForUpdatesEnabled" -> settings.checkForUpdates().set(in.nextBoolean());
case "numTrayNotifications" -> settings.numTrayNotifications().set(in.nextInt());
case "debugMode" -> settings.debugMode().set(in.nextBoolean()); case "debugMode" -> settings.debugMode().set(in.nextBoolean());
case "theme" -> settings.theme().set(parseUiTheme(in.nextString()));
case "uiOrientation" -> settings.userInterfaceOrientation().set(parseUiOrientation(in.nextString()));
case "keychainProvider" -> settings.keychainProvider().set(in.nextString());
case "useKeychain" -> settings.useKeychain().set(in.nextBoolean());
case "licenseKey" -> settings.licenseKey().set(in.nextString());
case "showMinimizeButton" -> settings.showMinimizeButton().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()); case "displayConfiguration" -> settings.displayConfigurationProperty().set(in.nextString());
case "keychainProvider" -> settings.keychainProvider().set(in.nextString());
case "language" -> settings.languageProperty().set(in.nextString()); case "language" -> settings.languageProperty().set(in.nextString());
case "licenseKey" -> settings.licenseKey().set(in.nextString());
case "mountService" -> { case "mountService" -> {
var token = in.peek(); var token = in.peek();
if (JsonToken.STRING == token) { if (JsonToken.STRING == token) {
settings.mountService().set(in.nextString()); settings.mountService().set(in.nextString());
} }
} }
case "numTrayNotifications" -> settings.numTrayNotifications().set(in.nextInt());
case "port" -> settings.port().set(in.nextInt());
case "showMinimizeButton" -> settings.showMinimizeButton().set(in.nextBoolean());
case "showTrayIcon" -> settings.showTrayIcon().set(in.nextBoolean());
case "startHidden" -> settings.startHidden().set(in.nextBoolean());
case "theme" -> settings.theme().set(parseUiTheme(in.nextString()));
case "uiOrientation" -> settings.userInterfaceOrientation().set(parseUiOrientation(in.nextString()));
case "useKeychain" -> settings.useKeychain().set(in.nextBoolean());
case "windowHeight" -> settings.windowHeightProperty().set(in.nextInt());
case "windowWidth" -> settings.windowWidthProperty().set(in.nextInt());
case "windowXPosition" -> settings.windowXPositionProperty().set(in.nextInt());
case "windowYPosition" -> settings.windowYPositionProperty().set(in.nextInt());
//1.6.x legacy //1.6.x legacy
case "preferredVolumeImpl" -> volumeImpl = in.nextString(); case "preferredVolumeImpl" -> volumeImpl = in.nextString();
//legacy end //legacy end
@@ -133,7 +135,7 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
if (volumeImpl.equals("Dokany")) { if (volumeImpl.equals("Dokany")) {
return "org.cryptomator.frontend.dokany.mount.DokanyMountProvider"; return "org.cryptomator.frontend.dokany.mount.DokanyMountProvider";
} else if (volumeImpl.equals("FUSE")) { } else if (volumeImpl.equals("FUSE")) {
if(SystemUtils.IS_OS_WINDOWS) { if (SystemUtils.IS_OS_WINDOWS) {
return "org.cryptomator.frontend.fuse.mount.WinFspNetworkMountProvider"; return "org.cryptomator.frontend.fuse.mount.WinFspNetworkMountProvider";
} else if (SystemUtils.IS_OS_MAC) { } else if (SystemUtils.IS_OS_MAC) {
return "org.cryptomator.frontend.fuse.mount.MacFuseMountProvider"; return "org.cryptomator.frontend.fuse.mount.MacFuseMountProvider";
@@ -141,7 +143,7 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
return "org.cryptomator.frontend.fuse.mount.LinuxFuseMountProvider"; return "org.cryptomator.frontend.fuse.mount.LinuxFuseMountProvider";
} }
} else { } else {
if(SystemUtils.IS_OS_WINDOWS) { if (SystemUtils.IS_OS_WINDOWS) {
return "org.cryptomator.frontend.webdav.mount.WindowsMounter"; return "org.cryptomator.frontend.webdav.mount.WindowsMounter";
} else if (SystemUtils.IS_OS_MAC) { } else if (SystemUtils.IS_OS_MAC) {
return "org.cryptomator.frontend.webdav.mount.MacAppleScriptMounter"; return "org.cryptomator.frontend.webdav.mount.MacAppleScriptMounter";
@@ -42,6 +42,7 @@ public class VaultSettings {
private final String id; private final String id;
private final ObjectProperty<Path> path = new SimpleObjectProperty<>(); private final ObjectProperty<Path> path = new SimpleObjectProperty<>();
private final StringProperty displayName = new SimpleStringProperty(); private final StringProperty displayName = new SimpleStringProperty();
private final BooleanProperty vaultIdAsVolumeId = new SimpleBooleanProperty(false);
private final BooleanProperty unlockAfterStartup = new SimpleBooleanProperty(DEFAULT_UNLOCK_AFTER_STARTUP); private final BooleanProperty unlockAfterStartup = new SimpleBooleanProperty(DEFAULT_UNLOCK_AFTER_STARTUP);
private final BooleanProperty revealAfterMount = new SimpleBooleanProperty(DEFAULT_REVEAL_AFTER_MOUNT); private final BooleanProperty revealAfterMount = new SimpleBooleanProperty(DEFAULT_REVEAL_AFTER_MOUNT);
private final BooleanProperty usesReadOnlyMode = new SimpleBooleanProperty(DEFAULT_USES_READONLY_MODE); private final BooleanProperty usesReadOnlyMode = new SimpleBooleanProperty(DEFAULT_USES_READONLY_MODE);
@@ -127,6 +128,10 @@ public class VaultSettings {
return mountPoint; return mountPoint;
} }
public BooleanProperty usesVaultIdAsVolumeId() {
return vaultIdAsVolumeId;
}
public BooleanProperty usesReadOnlyMode() { public BooleanProperty usesReadOnlyMode() {
return usesReadOnlyMode; return usesReadOnlyMode;
} }
@@ -6,6 +6,7 @@ import org.slf4j.LoggerFactory;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import javafx.application.Platform;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import java.io.IOException; import java.io.IOException;
import java.time.Instant; import java.time.Instant;
@@ -40,6 +41,7 @@ public class AutoLocker {
private void autolock(Vault vault) { private void autolock(Vault vault) {
try { try {
vault.lock(false); vault.lock(false);
Platform.runLater(() -> vault.stateProperty().set(VaultState.Value.LOCKED));
LOG.info("Autolocked {} after idle timeout", vault.getDisplayName()); LOG.info("Autolocked {} after idle timeout", vault.getDisplayName());
} catch (UnmountFailedException | IOException e) { } catch (UnmountFailedException | IOException e) {
LOG.error("Autolocking failed.", e); LOG.error("Autolocking failed.", e);
@@ -316,18 +316,29 @@ public class Vault {
/** /**
* Gets from the cleartext path its ciphertext counterpart. * Gets from the cleartext path its ciphertext counterpart.
* The cleartext path has to start from the vault root (by starting with "/").
* *
* @return Local os path to the ciphertext resource * @return Local os path to the ciphertext resource
* @throws IOException if an I/O error occurs * @throws IOException if an I/O error occurs
* @throws IllegalStateException if the vault is not unlocked
*/ */
public Path getCiphertextPath(String cleartextPath) throws IOException { public Path getCiphertextPath(Path cleartextPath) throws IOException {
if (!cleartextPath.startsWith("/")) { if (!state.getValue().equals(VaultState.Value.UNLOCKED)) {
throw new IllegalArgumentException("Input path must be absolute from vault root by starting with \"/\"."); throw new IllegalStateException("Vault is not unlocked");
} }
var fs = cryptoFileSystem.get(); var fs = cryptoFileSystem.get();
var cryptoPath = fs.getPath(cleartextPath); var osPathSeparator = cleartextPath.getFileSystem().getSeparator();
return fs.getCiphertextPath(cryptoPath); var cryptoFsPathSeparator = fs.getSeparator();
if (getMountPoint() instanceof Mountpoint.WithPath mp) {
var absoluteCryptoFsPath = cryptoFsPathSeparator + mp.path().relativize(cleartextPath).toString();
if (!cryptoFsPathSeparator.equals(osPathSeparator)) {
absoluteCryptoFsPath = absoluteCryptoFsPath.replace(osPathSeparator, cryptoFsPathSeparator);
}
var cryptoPath = fs.getPath(absoluteCryptoFsPath);
return fs.getCiphertextPath(cryptoPath);
} else {
throw new UnsupportedOperationException("URI mount points not supported.");
}
} }
public VaultConfigCache getVaultConfigCache() { public VaultConfigCache getVaultConfigCache() {
@@ -84,6 +84,10 @@ public class LogbackConfigurator extends ContextAwareBase implements Configurato
upgrades.addAppender(upgrade); upgrades.addAppender(upgrade);
upgrades.addAppender(file); upgrades.addAppender(file);
upgrades.setAdditive(false); upgrades.setAdditive(false);
// configure fuse file locking logger:
Logger fuseLocking = context.getLogger("org.cryptomator.frontend.fuse.locks");
fuseLocking.setLevel(Level.OFF);
} }
return ExecutionStatus.DO_NOT_INVOKE_NEXT_IF_ANY; return ExecutionStatus.DO_NOT_INVOKE_NEXT_IF_ANY;
} }
@@ -29,9 +29,13 @@ public class ErrorController implements FxController {
OS: %s / %s OS: %s / %s
App: %s / %s App: %s / %s
<!-- ✏️ Please describe what happened as accurately as possible. --> <!-- ✏ Please describe what happened as accurately as possible. -->
<!-- 📋 Please also copy and paste the detail text from the error window. --> <!-- 📋 Please also copy and paste the detail text from the error window. -->
<!-- ℹ Text enclosed like this (chevrons, exclamation mark, two dashes) is not visible to others! -->
<!-- ❗ If the description or the detail text is missing, the discussion will be deleted. -->
"""; """;
private final Application application; private final Application application;
@@ -15,7 +15,7 @@ public enum FxmlFile {
HEALTH_CHECK_LIST("/fxml/health_check_list.fxml"), // HEALTH_CHECK_LIST("/fxml/health_check_list.fxml"), //
HUB_NO_KEYCHAIN("/fxml/hub_no_keychain.fxml"), // HUB_NO_KEYCHAIN("/fxml/hub_no_keychain.fxml"), //
HUB_AUTH_FLOW("/fxml/hub_auth_flow.fxml"), // HUB_AUTH_FLOW("/fxml/hub_auth_flow.fxml"), //
HUB_LICENSE_EXCEEDED("/fxml/hub_license_exceeded.fxml"), // HUB_INVALID_LICENSE("/fxml/hub_invalid_license.fxml"), //
HUB_RECEIVE_KEY("/fxml/hub_receive_key.fxml"), // HUB_RECEIVE_KEY("/fxml/hub_receive_key.fxml"), //
HUB_REGISTER_DEVICE("/fxml/hub_register_device.fxml"), // HUB_REGISTER_DEVICE("/fxml/hub_register_device.fxml"), //
HUB_REGISTER_SUCCESS("/fxml/hub_register_success.fxml"), // HUB_REGISTER_SUCCESS("/fxml/hub_register_success.fxml"), //
@@ -42,6 +42,7 @@ public enum FontAwesome5Icon {
PLUS("\uF067"), // PLUS("\uF067"), //
PRINT("\uF02F"), // PRINT("\uF02F"), //
QUESTION("\uF128"), // QUESTION("\uF128"), //
QUESTION_CIRCLE("\uf059"), //
REDO("\uF01E"), // REDO("\uF01E"), //
SEARCH("\uF002"), // SEARCH("\uF002"), //
SPINNER("\uF110"), // SPINNER("\uF110"), //
@@ -102,10 +102,10 @@ public abstract class HubKeyLoadingModule {
} }
@Provides @Provides
@FxmlScene(FxmlFile.HUB_LICENSE_EXCEEDED) @FxmlScene(FxmlFile.HUB_INVALID_LICENSE)
@KeyLoadingScoped @KeyLoadingScoped
static Scene provideLicenseExceededScene(@KeyLoading FxmlLoaderFactory fxmlLoaders) { static Scene provideInvalidLicenseScene(@KeyLoading FxmlLoaderFactory fxmlLoaders) {
return fxmlLoaders.createScene(FxmlFile.HUB_LICENSE_EXCEEDED); return fxmlLoaders.createScene(FxmlFile.HUB_INVALID_LICENSE);
} }
@Provides @Provides
@@ -162,8 +162,8 @@ public abstract class HubKeyLoadingModule {
@Binds @Binds
@IntoMap @IntoMap
@FxControllerKey(LicenseExceededController.class) @FxControllerKey(InvalidLicenseController.class)
abstract FxController bindLicenseExceededController(LicenseExceededController controller); abstract FxController bindInvalidLicenseController(InvalidLicenseController controller);
@Binds @Binds
@IntoMap @IntoMap
@@ -7,12 +7,12 @@ import javax.inject.Inject;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.stage.Stage; import javafx.stage.Stage;
public class LicenseExceededController implements FxController { public class InvalidLicenseController implements FxController {
private final Stage window; private final Stage window;
@Inject @Inject
public LicenseExceededController(@KeyLoading Stage window) { public InvalidLicenseController(@KeyLoading Stage window) {
this.window = window; this.window = window;
} }
@@ -42,11 +42,11 @@ public class ReceiveKeyController implements FxController {
private final Lazy<Scene> registerDeviceScene; private final Lazy<Scene> registerDeviceScene;
private final Lazy<Scene> unauthorizedScene; private final Lazy<Scene> unauthorizedScene;
private final URI vaultBaseUri; private final URI vaultBaseUri;
private final Lazy<Scene> licenseExceededScene; private final Lazy<Scene> invalidLicenseScene;
private final HttpClient httpClient; private final HttpClient httpClient;
@Inject @Inject
public ReceiveKeyController(@KeyLoading Vault vault, ExecutorService executor, @KeyLoading Stage window, @Named("deviceId") String deviceId, @Named("bearerToken") AtomicReference<String> tokenRef, CompletableFuture<JWEObject> result, @FxmlScene(FxmlFile.HUB_REGISTER_DEVICE) Lazy<Scene> registerDeviceScene, @FxmlScene(FxmlFile.HUB_UNAUTHORIZED_DEVICE) Lazy<Scene> unauthorizedScene, @FxmlScene(FxmlFile.HUB_LICENSE_EXCEEDED) Lazy<Scene> licenseExceededScene) { public ReceiveKeyController(@KeyLoading Vault vault, ExecutorService executor, @KeyLoading Stage window, @Named("deviceId") String deviceId, @Named("bearerToken") AtomicReference<String> tokenRef, CompletableFuture<JWEObject> result, @FxmlScene(FxmlFile.HUB_REGISTER_DEVICE) Lazy<Scene> registerDeviceScene, @FxmlScene(FxmlFile.HUB_UNAUTHORIZED_DEVICE) Lazy<Scene> unauthorizedScene, @FxmlScene(FxmlFile.HUB_INVALID_LICENSE) Lazy<Scene> invalidLicenseScene) {
this.window = window; this.window = window;
this.deviceId = deviceId; this.deviceId = deviceId;
this.bearerToken = Objects.requireNonNull(tokenRef.get()); this.bearerToken = Objects.requireNonNull(tokenRef.get());
@@ -54,7 +54,7 @@ public class ReceiveKeyController implements FxController {
this.registerDeviceScene = registerDeviceScene; this.registerDeviceScene = registerDeviceScene;
this.unauthorizedScene = unauthorizedScene; this.unauthorizedScene = unauthorizedScene;
this.vaultBaseUri = getVaultBaseUri(vault); this.vaultBaseUri = getVaultBaseUri(vault);
this.licenseExceededScene = licenseExceededScene; this.invalidLicenseScene = invalidLicenseScene;
this.window.addEventHandler(WindowEvent.WINDOW_HIDING, this::windowClosed); this.window.addEventHandler(WindowEvent.WINDOW_HIDING, this::windowClosed);
this.httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).executor(executor).build(); this.httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).executor(executor).build();
} }
@@ -96,7 +96,7 @@ public class ReceiveKeyController implements FxController {
} }
private void licenseExceeded() { private void licenseExceeded() {
window.setScene(licenseExceededScene.get()); window.setScene(invalidLicenseScene.get());
} }
private void needsDeviceRegistration() { private void needsDeviceRegistration() {
@@ -5,6 +5,7 @@ import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader; import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;
import com.tobiasdiez.easybind.EasyBind; import com.tobiasdiez.easybind.EasyBind;
import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.Vault;
import org.cryptomator.integrations.mount.Mountpoint; import org.cryptomator.integrations.mount.Mountpoint;
import org.cryptomator.integrations.revealpath.RevealFailedException; import org.cryptomator.integrations.revealpath.RevealFailedException;
@@ -54,6 +55,7 @@ public class VaultDetailUnlockedController implements FxController {
private final VaultService vaultService; private final VaultService vaultService;
private final WrongFileAlertComponent.Builder wrongFileAlert; private final WrongFileAlertComponent.Builder wrongFileAlert;
private final Stage mainWindow; private final Stage mainWindow;
private final Optional<RevealPathService> revealPathService;
private final ResourceBundle resourceBundle; private final ResourceBundle resourceBundle;
private final LoadingCache<Vault, VaultStatisticsComponent> vaultStats; private final LoadingCache<Vault, VaultStatisticsComponent> vaultStats;
private final VaultStatisticsComponent.Builder vaultStatsBuilder; private final VaultStatisticsComponent.Builder vaultStatsBuilder;
@@ -67,12 +69,13 @@ public class VaultDetailUnlockedController implements FxController {
public Button dropZone; public Button dropZone;
@Inject @Inject
public VaultDetailUnlockedController(ObjectProperty<Vault> vault, FxApplicationWindows appWindows, VaultService vaultService, VaultStatisticsComponent.Builder vaultStatsBuilder, WrongFileAlertComponent.Builder wrongFileAlert, @MainWindow Stage mainWindow, ResourceBundle resourceBundle) { public VaultDetailUnlockedController(ObjectProperty<Vault> vault, FxApplicationWindows appWindows, VaultService vaultService, VaultStatisticsComponent.Builder vaultStatsBuilder, WrongFileAlertComponent.Builder wrongFileAlert, @MainWindow Stage mainWindow, Optional<RevealPathService> revealPathService, ResourceBundle resourceBundle) {
this.vault = vault; this.vault = vault;
this.appWindows = appWindows; this.appWindows = appWindows;
this.vaultService = vaultService; this.vaultService = vaultService;
this.wrongFileAlert = wrongFileAlert; this.wrongFileAlert = wrongFileAlert;
this.mainWindow = mainWindow; this.mainWindow = mainWindow;
this.revealPathService = revealPathService;
this.resourceBundle = resourceBundle; this.resourceBundle = resourceBundle;
this.vaultStats = CacheBuilder.newBuilder().weakValues().build(CacheLoader.from(this::buildVaultStats)); this.vaultStats = CacheBuilder.newBuilder().weakValues().build(CacheLoader.from(this::buildVaultStats));
this.vaultStatsBuilder = vaultStatsBuilder; this.vaultStatsBuilder = vaultStatsBuilder;
@@ -99,7 +102,11 @@ public class VaultDetailUnlockedController implements FxController {
private void handleDragEvent(DragEvent event) { private void handleDragEvent(DragEvent event) {
if (DragEvent.DRAG_OVER.equals(event.getEventType()) && event.getGestureSource() == null && event.getDragboard().hasFiles()) { if (DragEvent.DRAG_OVER.equals(event.getEventType()) && event.getGestureSource() == null && event.getDragboard().hasFiles()) {
event.acceptTransferModes(TransferMode.LINK); if(SystemUtils.IS_OS_WINDOWS || SystemUtils.IS_OS_MAC) {
event.acceptTransferModes(TransferMode.LINK);
} else {
event.acceptTransferModes(TransferMode.ANY);
}
draggingOver.set(true); draggingOver.set(true);
} else if (DragEvent.DRAG_DROPPED.equals(event.getEventType()) && event.getGestureSource() == null && event.getDragboard().hasFiles()) { } else if (DragEvent.DRAG_DROPPED.equals(event.getEventType()) && event.getGestureSource() == null && event.getDragboard().hasFiles()) {
List<Path> ciphertextPaths = event.getDragboard().getFiles().stream().map(File::toPath).map(this::getCiphertextPath).flatMap(Optional::stream).toList(); List<Path> ciphertextPaths = event.getDragboard().getFiles().stream().map(File::toPath).map(this::getCiphertextPath).flatMap(Optional::stream).toList();
@@ -164,42 +171,29 @@ public class VaultDetailUnlockedController implements FxController {
return Optional.empty(); return Optional.empty();
} }
try { try {
var accessPoint = mountPoint.getValue(); return Optional.of(vault.get().getCiphertextPath(path));
var cleartextPath = path.toString().substring(accessPoint.length());
if (!cleartextPath.startsWith("/")) {
cleartextPath = "/" + cleartextPath;
}
return Optional.of(vault.get().getCiphertextPath(cleartextPath));
} catch (IOException e) { } catch (IOException e) {
LOG.warn("Unable to get ciphertext path from path: {}", path); LOG.warn("Unable to get ciphertext path from path: {}", path, e);
return Optional.empty(); return Optional.empty();
} }
} }
private void revealOrCopyPaths(List<Path> paths) { private void revealOrCopyPaths(List<Path> paths) {
if (!revealPaths(paths)) { revealPathService.ifPresentOrElse(svc -> revealPaths(svc, paths), () -> {
LOG.warn("No service provider to reveal files found."); LOG.warn("No service provider to reveal files found.");
copyPathsToClipboard(paths); copyPathsToClipboard(paths);
} });
} }
/** private void revealPaths(RevealPathService service, List<Path> paths) {
* Reveals the paths over the {@link RevealPathService} in the file system paths.forEach(path -> {
* try {
* @param paths List of Paths to reveal LOG.debug("Revealing {}", path);
* @return true, if at least one service provider was present, false otherwise service.reveal(path);
*/ } catch (RevealFailedException e) {
private boolean revealPaths(List<Path> paths) { LOG.error("Revealing ciphertext file failed.", e);
return RevealPathService.get().findAny().map(s -> { }
paths.forEach(path -> { });
try {
s.reveal(path);
} catch (RevealFailedException e) {
LOG.error("Revealing ciphertext file failed.", e);
}
});
return true;
}).orElse(false);
} }
private void copyPathsToClipboard(List<Path> paths) { private void copyPathsToClipboard(List<Path> paths) {
@@ -16,7 +16,7 @@ import javafx.fxml.FXML;
public class WelcomeController implements FxController { public class WelcomeController implements FxController {
private static final Logger LOG = LoggerFactory.getLogger(WelcomeController.class); private static final Logger LOG = LoggerFactory.getLogger(WelcomeController.class);
private static final String GETTING_STARTED_URI = "https://docs.cryptomator.org/en/1.6/desktop/getting-started/"; private static final String GETTING_STARTED_URI = "https://docs.cryptomator.org/en/1.7/desktop/getting-started/";
private final Application application; private final Application application;
private final BooleanBinding noVaultPresent; private final BooleanBinding noVaultPresent;
@@ -10,7 +10,7 @@ import javafx.stage.Stage;
public class MigrationImpossibleController implements FxController { public class MigrationImpossibleController implements FxController {
private static final String HELP_URI = "https://docs.cryptomator.org/en/1.6/help/manual-migration/"; private static final String HELP_URI = "https://docs.cryptomator.org/en/1.7/help/manual-migration/";
private final Application application; private final Application application;
private final Stage window; private final Stage window;
@@ -1,5 +1,6 @@
package org.cryptomator.ui.preferences; package org.cryptomator.ui.preferences;
import dagger.Lazy;
import org.cryptomator.common.ObservableUtil; import org.cryptomator.common.ObservableUtil;
import org.cryptomator.common.settings.Settings; import org.cryptomator.common.settings.Settings;
import org.cryptomator.integrations.mount.MountCapability; import org.cryptomator.integrations.mount.MountCapability;
@@ -7,6 +8,7 @@ import org.cryptomator.integrations.mount.MountService;
import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxController;
import javax.inject.Inject; import javax.inject.Inject;
import javafx.application.Application;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanExpression; import javafx.beans.binding.BooleanExpression;
import javafx.beans.value.ObservableValue; import javafx.beans.value.ObservableValue;
@@ -21,6 +23,8 @@ import java.util.ResourceBundle;
@PreferencesScoped @PreferencesScoped
public class VolumePreferencesController implements FxController { public class VolumePreferencesController implements FxController {
private static final String DOCS_MOUNTING_URL = "https://docs.cryptomator.org/en/1.7/desktop/volume-type/";
private final Settings settings; private final Settings settings;
private final ObservableValue<MountService> selectedMountService; private final ObservableValue<MountService> selectedMountService;
private final ResourceBundle resourceBundle; private final ResourceBundle resourceBundle;
@@ -29,14 +33,16 @@ public class VolumePreferencesController implements FxController {
private final ObservableValue<Boolean> mountToDriveLetterSupported; private final ObservableValue<Boolean> mountToDriveLetterSupported;
private final ObservableValue<Boolean> mountFlagsSupported; private final ObservableValue<Boolean> mountFlagsSupported;
private final ObservableValue<Boolean> readonlySupported; private final ObservableValue<Boolean> readonlySupported;
private final Lazy<Application> application;
private final List<MountService> mountProviders; private final List<MountService> mountProviders;
public ChoiceBox<MountService> volumeTypeChoiceBox; public ChoiceBox<MountService> volumeTypeChoiceBox;
public TextField loopbackPortField; public TextField loopbackPortField;
public Button loopbackPortApplyButton; public Button loopbackPortApplyButton;
@Inject @Inject
VolumePreferencesController(Settings settings, List<MountService> mountProviders, ResourceBundle resourceBundle) { VolumePreferencesController(Settings settings, Lazy<Application> application, List<MountService> mountProviders, ResourceBundle resourceBundle) {
this.settings = settings; this.settings = settings;
this.application = application;
this.mountProviders = mountProviders; this.mountProviders = mountProviders;
this.resourceBundle = resourceBundle; this.resourceBundle = resourceBundle;
@@ -141,4 +147,8 @@ public class VolumePreferencesController implements FxController {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
} }
public void openDocs() {
application.get().getHostServices().showDocument(DOCS_MOUNTING_URL);
}
} }
@@ -4,6 +4,7 @@ import com.google.common.base.CharMatcher;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import dagger.Lazy; import dagger.Lazy;
import org.cryptomator.common.Nullable; import org.cryptomator.common.Nullable;
import org.cryptomator.common.ObservableUtil;
import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.Vault;
import org.cryptomator.cryptofs.VaultConfig; import org.cryptomator.cryptofs.VaultConfig;
import org.cryptomator.cryptofs.VaultConfigLoadException; import org.cryptomator.cryptofs.VaultConfigLoadException;
@@ -15,9 +16,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.inject.Inject; import javax.inject.Inject;
import javafx.beans.binding.Bindings; import javafx.beans.property.ObjectProperty;
import javafx.beans.binding.BooleanBinding; import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.StringProperty;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.control.TextArea; import javafx.scene.control.TextArea;
@@ -38,11 +40,16 @@ public class RecoveryKeyRecoverController implements FxController {
private final Vault vault; private final Vault vault;
private final VaultConfig.UnverifiedVaultConfig unverifiedVaultConfig; private final VaultConfig.UnverifiedVaultConfig unverifiedVaultConfig;
private final StringProperty recoveryKey; private final StringProperty recoveryKey;
private final ObservableValue<Boolean> recoveryKeyCorrect;
private final ObservableValue<Boolean> recoveryKeyWrong;
private final ObservableValue<Boolean> recoveryKeyInvalid;
private final RecoveryKeyFactory recoveryKeyFactory; private final RecoveryKeyFactory recoveryKeyFactory;
private final BooleanBinding validRecoveryKey; private final ObjectProperty<RecoveryKeyState> recoveryKeyState;
private final Lazy<Scene> resetPasswordScene; private final Lazy<Scene> resetPasswordScene;
private final AutoCompleter autoCompleter; private final AutoCompleter autoCompleter;
private volatile boolean isWrongKey;
public TextArea textarea; public TextArea textarea;
@Inject @Inject
@@ -53,14 +60,18 @@ public class RecoveryKeyRecoverController implements FxController {
this.unverifiedVaultConfig = unverifiedVaultConfig; this.unverifiedVaultConfig = unverifiedVaultConfig;
this.recoveryKey = recoveryKey; this.recoveryKey = recoveryKey;
this.recoveryKeyFactory = recoveryKeyFactory; this.recoveryKeyFactory = recoveryKeyFactory;
this.validRecoveryKey = Bindings.createBooleanBinding(this::isValidRecoveryKey, recoveryKey);
this.resetPasswordScene = resetPasswordScene; this.resetPasswordScene = resetPasswordScene;
this.autoCompleter = new AutoCompleter(recoveryKeyFactory.getDictionary()); this.autoCompleter = new AutoCompleter(recoveryKeyFactory.getDictionary());
this.recoveryKeyState = new SimpleObjectProperty<>();
this.recoveryKeyCorrect = ObservableUtil.mapWithDefault(recoveryKeyState, RecoveryKeyState.CORRECT::equals, false);
this.recoveryKeyWrong = ObservableUtil.mapWithDefault(recoveryKeyState, RecoveryKeyState.WRONG::equals, false);
this.recoveryKeyInvalid = ObservableUtil.mapWithDefault(recoveryKeyState, RecoveryKeyState.INVALID::equals, false);
} }
@FXML @FXML
public void initialize() { public void initialize() {
recoveryKey.bind(textarea.textProperty()); recoveryKey.bind(textarea.textProperty());
textarea.textProperty().addListener(((observable, oldValue, newValue) -> validateRecoveryKey()));
} }
private TextFormatter.Change filterTextChange(TextFormatter.Change change) { private TextFormatter.Change filterTextChange(TextFormatter.Change change) {
@@ -107,6 +118,12 @@ public class RecoveryKeyRecoverController implements FxController {
window.setScene(resetPasswordScene.get()); window.setScene(resetPasswordScene.get());
} }
/**
* Checks, if vault config is signed with the given key.
*
* @param key byte array of possible signing key
* @return true, if vault config is signed with this key
*/
private boolean checkKeyAgainstVaultConfig(byte[] key) { private boolean checkKeyAgainstVaultConfig(byte[] key) {
try { try {
var config = unverifiedVaultConfig.verify(key, unverifiedVaultConfig.allegedVaultVersion()); var config = unverifiedVaultConfig.verify(key, unverifiedVaultConfig.allegedVaultVersion());
@@ -114,6 +131,7 @@ public class RecoveryKeyRecoverController implements FxController {
return true; return true;
} catch (VaultKeyInvalidException e) { } catch (VaultKeyInvalidException e) {
LOG.debug("Provided recovery key does not match vault config signature."); LOG.debug("Provided recovery key does not match vault config signature.");
isWrongKey = true;
return false; return false;
} catch (VaultConfigLoadException e) { } catch (VaultConfigLoadException e) {
LOG.error("Failed to parse vault config", e); LOG.error("Failed to parse vault config", e);
@@ -121,25 +139,64 @@ public class RecoveryKeyRecoverController implements FxController {
} }
} }
private void validateRecoveryKey() {
isWrongKey = false;
var valid = recoveryKeyFactory.validateRecoveryKey(recoveryKey.get(), unverifiedVaultConfig != null ? this::checkKeyAgainstVaultConfig : null);
if (valid) {
recoveryKeyState.set(RecoveryKeyState.CORRECT);
} else if (isWrongKey) { //set via side effect in checkKeyAgainstVaultConfig()
recoveryKeyState.set(RecoveryKeyState.WRONG);
} else {
recoveryKeyState.set(RecoveryKeyState.INVALID);
}
}
/* Getter/Setter */ /* Getter/Setter */
public Vault getVault() { public Vault getVault() {
return vault; return vault;
} }
public BooleanBinding validRecoveryKeyProperty() {
return validRecoveryKey;
}
public boolean isValidRecoveryKey() {
if (unverifiedVaultConfig != null) {
return recoveryKeyFactory.validateRecoveryKey(recoveryKey.get(), this::checkKeyAgainstVaultConfig);
} else {
return recoveryKeyFactory.validateRecoveryKey(recoveryKey.get());
}
}
public TextFormatter getRecoveryKeyTextFormatter() { public TextFormatter getRecoveryKeyTextFormatter() {
return new TextFormatter<>(this::filterTextChange); return new TextFormatter<>(this::filterTextChange);
} }
public ObservableValue<Boolean> recoveryKeyInvalidProperty() {
return recoveryKeyInvalid;
}
public boolean isRecoveryKeyInvalid() {
return recoveryKeyInvalid.getValue();
}
public ObservableValue<Boolean> recoveryKeyCorrectProperty() {
return recoveryKeyCorrect;
}
public boolean isRecoveryKeyCorrect() {
return recoveryKeyCorrect.getValue();
}
public ObservableValue<Boolean> recoveryKeyWrongProperty() {
return recoveryKeyWrong;
}
public boolean isRecoveryKeyWrong() {
return recoveryKeyWrong.getValue();
}
private enum RecoveryKeyState {
/**
* Recovery key is a valid key and belongs to this vault
*/
CORRECT,
/**
* Recovery key is a valid key, but does not belong to this vault
*/
WRONG,
/**
* Recovery key is not a valid key.
*/
INVALID;
}
} }
@@ -40,6 +40,7 @@ public class MountOptionsController implements FxController {
private final ObservableValue<String> defaultMountFlags; private final ObservableValue<String> defaultMountFlags;
private final ObservableValue<Boolean> mountpointDirSupported; private final ObservableValue<Boolean> mountpointDirSupported;
private final ObservableValue<Boolean> mountpointDriveLetterSupported; private final ObservableValue<Boolean> mountpointDriveLetterSupported;
private final ObservableValue<Boolean> volumeIdSupported;
private final ObservableValue<Boolean> readOnlySupported; private final ObservableValue<Boolean> readOnlySupported;
private final ObservableValue<Boolean> mountFlagsSupported; private final ObservableValue<Boolean> mountFlagsSupported;
private final ObservableValue<String> directoryPath; private final ObservableValue<String> directoryPath;
@@ -48,6 +49,7 @@ public class MountOptionsController implements FxController {
//-- FXML objects -- //-- FXML objects --
public CheckBox readOnlyCheckbox; public CheckBox readOnlyCheckbox;
public CheckBox useVaultIdAsVolumeId;
public CheckBox customMountFlagsCheckbox; public CheckBox customMountFlagsCheckbox;
public TextField mountFlagsField; public TextField mountFlagsField;
public ToggleGroup mountPointToggleGroup; public ToggleGroup mountPointToggleGroup;
@@ -73,6 +75,7 @@ public class MountOptionsController implements FxController {
this.mountpointDirSupported = mountService.map(as -> as.service().hasCapability(MountCapability.MOUNT_TO_EXISTING_DIR) || as.service().hasCapability(MountCapability.MOUNT_WITHIN_EXISTING_PARENT)); this.mountpointDirSupported = mountService.map(as -> as.service().hasCapability(MountCapability.MOUNT_TO_EXISTING_DIR) || as.service().hasCapability(MountCapability.MOUNT_WITHIN_EXISTING_PARENT));
this.mountpointDriveLetterSupported = mountService.map(as -> as.service().hasCapability(MountCapability.MOUNT_AS_DRIVE_LETTER)); this.mountpointDriveLetterSupported = mountService.map(as -> as.service().hasCapability(MountCapability.MOUNT_AS_DRIVE_LETTER));
this.mountFlagsSupported = mountService.map(as -> as.service().hasCapability(MountCapability.MOUNT_FLAGS)); this.mountFlagsSupported = mountService.map(as -> as.service().hasCapability(MountCapability.MOUNT_FLAGS));
this.volumeIdSupported = mountService.map(as -> as.service().hasCapability(MountCapability.VOLUME_ID));
this.readOnlySupported = mountService.map(as -> as.service().hasCapability(MountCapability.READ_ONLY)); this.readOnlySupported = mountService.map(as -> as.service().hasCapability(MountCapability.READ_ONLY));
this.directoryPath = vault.getVaultSettings().mountPoint().map(p -> isDriveLetter(p) ? null : p.toString()); this.directoryPath = vault.getVaultSettings().mountPoint().map(p -> isDriveLetter(p) ? null : p.toString());
this.applicationWindows = applicationWindows; this.applicationWindows = applicationWindows;
@@ -83,6 +86,9 @@ public class MountOptionsController implements FxController {
// readonly: // readonly:
readOnlyCheckbox.selectedProperty().bindBidirectional(vaultSettings.usesReadOnlyMode()); readOnlyCheckbox.selectedProperty().bindBidirectional(vaultSettings.usesReadOnlyMode());
// use volume name as volume id
useVaultIdAsVolumeId.selectedProperty().bindBidirectional(vaultSettings.usesVaultIdAsVolumeId());
// custom mount flags: // custom mount flags:
mountFlagsField.disableProperty().bind(customMountFlagsCheckbox.selectedProperty().not()); mountFlagsField.disableProperty().bind(customMountFlagsCheckbox.selectedProperty().not());
customMountFlagsCheckbox.setSelected(!Strings.isNullOrEmpty(vaultSettings.mountFlags().getValue())); customMountFlagsCheckbox.setSelected(!Strings.isNullOrEmpty(vaultSettings.mountFlags().getValue()));
@@ -267,6 +273,16 @@ public class MountOptionsController implements FxController {
return readOnlySupported.getValue(); return readOnlySupported.getValue();
} }
public ObservableValue<Boolean> volumeIdSupportedProperty() {
return volumeIdSupported;
}
public boolean getVolumeIdSupported() {
return volumeIdSupported.getValue();
}
public ObservableValue<String> directoryPathProperty() { public ObservableValue<String> directoryPathProperty() {
return directoryPath; return directoryPath;
} }
@@ -15,7 +15,7 @@ import java.io.UncheckedIOException;
@WrongFileAlertScoped @WrongFileAlertScoped
public class WrongFileAlertController implements FxController { public class WrongFileAlertController implements FxController {
private static final String DOCUMENTATION_URI = "https://docs.cryptomator.org/en/1.6/desktop/accessing-vaults/"; private static final String DOCUMENTATION_URI = "https://docs.cryptomator.org/en/1.7/desktop/accessing-vaults/";
private final Application app; private final Application app;
private final Stage window; private final Stage window;
@@ -13,7 +13,7 @@
<?import javafx.scene.shape.Circle?> <?import javafx.scene.shape.Circle?>
<HBox xmlns:fx="http://javafx.com/fxml" <HBox xmlns:fx="http://javafx.com/fxml"
xmlns="http://javafx.com/javafx" xmlns="http://javafx.com/javafx"
fx:controller="org.cryptomator.ui.keyloading.hub.LicenseExceededController" fx:controller="org.cryptomator.ui.keyloading.hub.InvalidLicenseController"
minWidth="400" minWidth="400"
maxWidth="400" maxWidth="400"
minHeight="145" minHeight="145"
@@ -33,12 +33,12 @@
</StackPane> </StackPane>
</Group> </Group>
<VBox HBox.hgrow="ALWAYS"> <VBox HBox.hgrow="ALWAYS">
<Label styleClass="label-large" text="%hub.licenseExceeded.message" wrapText="true" textAlignment="LEFT"> <Label styleClass="label-large" text="%hub.invalidLicense.message" wrapText="true" textAlignment="LEFT">
<padding> <padding>
<Insets bottom="6" top="6"/> <Insets bottom="6" top="6"/>
</padding> </padding>
</Label> </Label>
<Label text="%hub.licenseExceeded.description" wrapText="true"/> <Label text="%hub.invalidLicense.description" wrapText="true"/>
<Region VBox.vgrow="ALWAYS" minHeight="18"/> <Region VBox.vgrow="ALWAYS" minHeight="18"/>
<ButtonBar buttonMinWidth="120" buttonOrder="+C"> <ButtonBar buttonMinWidth="120" buttonOrder="+C">
@@ -5,10 +5,12 @@
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?> <?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.control.Separator?> <?import javafx.scene.control.Separator?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Tooltip?>
<VBox xmlns:fx="http://javafx.com/fxml" <VBox xmlns:fx="http://javafx.com/fxml"
xmlns="http://javafx.com/javafx" xmlns="http://javafx.com/javafx"
fx:controller="org.cryptomator.ui.preferences.VolumePreferencesController" fx:controller="org.cryptomator.ui.preferences.VolumePreferencesController"
@@ -20,6 +22,14 @@
<HBox spacing="12" alignment="CENTER_LEFT"> <HBox spacing="12" alignment="CENTER_LEFT">
<Label text="%preferences.volume.type"/> <Label text="%preferences.volume.type"/>
<ChoiceBox fx:id="volumeTypeChoiceBox"/> <ChoiceBox fx:id="volumeTypeChoiceBox"/>
<Hyperlink contentDisplay="GRAPHIC_ONLY" onAction="#openDocs">
<graphic>
<FontAwesome5IconView glyph="QUESTION_CIRCLE" styleClass="glyph-icon-muted"/>
</graphic>
<tooltip>
<Tooltip text="%preferences.volume.docsTooltip" showDelay="100ms"/>
</tooltip>
</Hyperlink>
</HBox> </HBox>
<HBox spacing="12" alignment="CENTER_LEFT" visible="${controller.loopbackPortSupported}" managed="${controller.loopbackPortSupported}"> <HBox spacing="12" alignment="CENTER_LEFT" visible="${controller.loopbackPortSupported}" managed="${controller.loopbackPortSupported}">
@@ -9,6 +9,8 @@
<?import javafx.scene.control.TextArea?> <?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.Region?> <?import javafx.scene.layout.Region?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.Group?>
<VBox xmlns:fx="http://javafx.com/fxml" <VBox xmlns:fx="http://javafx.com/fxml"
xmlns="http://javafx.com/javafx" xmlns="http://javafx.com/javafx"
fx:controller="org.cryptomator.ui.recoverykey.RecoveryKeyRecoverController" fx:controller="org.cryptomator.ui.recoverykey.RecoveryKeyRecoverController"
@@ -25,12 +27,28 @@
<TextArea wrapText="true" prefRowCount="4" fx:id="textarea" textFormatter="${controller.recoveryKeyTextFormatter}" onKeyPressed="#onKeyPressed"/> <TextArea wrapText="true" prefRowCount="4" fx:id="textarea" textFormatter="${controller.recoveryKeyTextFormatter}" onKeyPressed="#onKeyPressed"/>
<!-- TODO: add Label when the recovery key is not valid --> <StackPane>
<Label text="%recoveryKey.recover.validKey" graphicTextGap="6" contentDisplay="LEFT" visible="${controller.validRecoveryKey}"> <Label text="Just some Filler" visible="false" graphicTextGap="6">
<graphic> <graphic>
<FontAwesome5IconView glyph="CHECK"/> <FontAwesome5IconView glyph="ANCHOR"/>
</graphic> </graphic>
</Label> </Label>
<Label text="%recoveryKey.recover.correctKey" graphicTextGap="6" contentDisplay="LEFT" visible="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyCorrect}">
<graphic>
<FontAwesome5IconView glyph="CHECK"/>
</graphic>
</Label>
<Label text="%recoveryKey.recover.wrongKey" graphicTextGap="6" contentDisplay="LEFT" visible="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyWrong}">
<graphic>
<FontAwesome5IconView glyph="TIMES" styleClass="glyph-icon-red"/>
</graphic>
</Label>
<Label text="%recoveryKey.recover.invalidKey" graphicTextGap="6" contentDisplay="LEFT" visible="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyInvalid}">
<graphic>
<FontAwesome5IconView glyph="TIMES" styleClass="glyph-icon-red"/>
</graphic>
</Label>
</StackPane>
<Region VBox.vgrow="ALWAYS"/> <Region VBox.vgrow="ALWAYS"/>
@@ -38,7 +56,7 @@
<ButtonBar buttonMinWidth="120" buttonOrder="+CX"> <ButtonBar buttonMinWidth="120" buttonOrder="+CX">
<buttons> <buttons>
<Button text="%generic.button.cancel" ButtonBar.buttonData="CANCEL_CLOSE" cancelButton="true" onAction="#close"/> <Button text="%generic.button.cancel" ButtonBar.buttonData="CANCEL_CLOSE" cancelButton="true" onAction="#close"/>
<Button text="%generic.button.next" ButtonBar.buttonData="NEXT_FORWARD" defaultButton="true" onAction="#recover" disable="${!controller.validRecoveryKey}"/> <Button text="%generic.button.next" ButtonBar.buttonData="NEXT_FORWARD" defaultButton="true" onAction="#recover" disable="${!controller.recoveryKeyCorrect}"/>
</buttons> </buttons>
</ButtonBar> </ButtonBar>
</VBox> </VBox>
@@ -12,7 +12,6 @@
<?import javafx.scene.control.ToggleGroup?> <?import javafx.scene.control.ToggleGroup?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Text?>
<?import javafx.scene.text.TextFlow?> <?import javafx.scene.text.TextFlow?>
<VBox xmlns:fx="http://javafx.com/fxml" <VBox xmlns:fx="http://javafx.com/fxml"
xmlns="http://javafx.com/javafx" xmlns="http://javafx.com/javafx"
@@ -26,11 +25,12 @@
</padding> </padding>
<children> <children>
<TextFlow> <TextFlow>
<Text text="%vaultOptions.mount.info"/> <Label text="%vaultOptions.mount.info"/>
<Text text=" "/> <Label text=" "/>
<Hyperlink styleClass="hyperlink-underline" text="%vaultOptions.mount.linkToPreferences" onAction="#openVolumePreferences" wrapText="true"/> <Hyperlink styleClass="hyperlink-underline" text="%vaultOptions.mount.linkToPreferences" onAction="#openVolumePreferences" wrapText="true"/>
</TextFlow> </TextFlow>
<CheckBox fx:id="readOnlyCheckbox" text="%vaultOptions.mount.readonly" visible="${controller.readOnlySupported}" managed="${controller.readOnlySupported}"/> <CheckBox fx:id="readOnlyCheckbox" text="%vaultOptions.mount.readonly" visible="${controller.readOnlySupported}" managed="${controller.readOnlySupported}"/>
<CheckBox fx:id="useVaultIdAsVolumeId" text="TODO vault id as volume id" visible="${controller.volumeIdSupported}" managed="${controller.volumeIdSupported}"/>
<VBox visible="${controller.mountFlagsSupported}" managed="${controller.mountFlagsSupported}"> <VBox visible="${controller.mountFlagsSupported}" managed="${controller.mountFlagsSupported}">
<CheckBox fx:id="customMountFlagsCheckbox" text="%vaultOptions.mount.customMountFlags" onAction="#toggleUseCustomMountFlags"/> <CheckBox fx:id="customMountFlagsCheckbox" text="%vaultOptions.mount.customMountFlags" onAction="#toggleUseCustomMountFlags"/>
+13 -11
View File
@@ -155,9 +155,8 @@ hub.registerFailed.description=An error was thrown in the naming process. For mo
hub.unauthorized.message=Access denied hub.unauthorized.message=Access denied
hub.unauthorized.description=Your device has not yet been authorized to access this vault. Ask the vault owner to authorize it. hub.unauthorized.description=Your device has not yet been authorized to access this vault. Ask the vault owner to authorize it.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=License exceeded hub.invalidLicense.message=Hub License invalid
hub.licenseExceeded.description=Cryptomator Hub has given access to more users than its license permits. Please contact your Hub admin to upgrade the license or a vault admin to remove users from vaults. hub.invalidLicense.description=Your Cryptomator Hub instance has an invalid license. Please inform a Hub administrator to upgrade or renew the license.
# Lock # Lock
## Force ## Force
@@ -278,6 +277,7 @@ preferences.interface.showTrayIcon=Show tray icon (requires restart)
preferences.volume=Virtual Drive preferences.volume=Virtual Drive
preferences.volume.type=Volume Type (requires restart) preferences.volume.type=Volume Type (requires restart)
preferences.volume.type.automatic=Automatic preferences.volume.type.automatic=Automatic
preferences.volume.docsTooltip=Open the documentation to learn more about the different volume types.
preferences.volume.tcp.port=TCP Port preferences.volume.tcp.port=TCP Port
preferences.volume.supportedFeatures=The chosen volume type supports the following features: preferences.volume.supportedFeatures=The chosen volume type supports the following features:
preferences.volume.feature.mountAuto=Automatic mount point selection preferences.volume.feature.mountAuto=Automatic mount point selection
@@ -307,27 +307,27 @@ stats.title=Statistics for %s
stats.cacheHitRate=Cache Hit Rate stats.cacheHitRate=Cache Hit Rate
## Read ## Read
stats.read.throughput.idle=Read: idle stats.read.throughput.idle=Read: idle
stats.read.throughput.kibs=Read: %.2f kiB/s stats.read.throughput.kibs=Read: %.2f KiB/s
stats.read.throughput.mibs=Read: %.2f MiB/s stats.read.throughput.mibs=Read: %.2f MiB/s
stats.read.total.data.none=Data read: - stats.read.total.data.none=Data read: -
stats.read.total.data.kib=Data read: %.1f kiB stats.read.total.data.kib=Data read: %.1f KiB
stats.read.total.data.mib=Data read: %.1f MiB stats.read.total.data.mib=Data read: %.1f MiB
stats.read.total.data.gib=Data read: %.1f GiB stats.read.total.data.gib=Data read: %.1f GiB
stats.decr.total.data.none=Data decrypted: - stats.decr.total.data.none=Data decrypted: -
stats.decr.total.data.kib=Data decrypted: %.1f kiB stats.decr.total.data.kib=Data decrypted: %.1f KiB
stats.decr.total.data.mib=Data decrypted: %.1f MiB stats.decr.total.data.mib=Data decrypted: %.1f MiB
stats.decr.total.data.gib=Data decrypted: %.1f GiB stats.decr.total.data.gib=Data decrypted: %.1f GiB
stats.read.accessCount=Total reads: %d stats.read.accessCount=Total reads: %d
## Write ## Write
stats.write.throughput.idle=Write: idle stats.write.throughput.idle=Write: idle
stats.write.throughput.kibs=Write: %.2f kiB/s stats.write.throughput.kibs=Write: %.2f KiB/s
stats.write.throughput.mibs=Write: %.2f MiB/s stats.write.throughput.mibs=Write: %.2f MiB/s
stats.write.total.data.none=Data written: - stats.write.total.data.none=Data written: -
stats.write.total.data.kib=Data written: %.1f kiB stats.write.total.data.kib=Data written: %.1f KiB
stats.write.total.data.mib=Data written: %.1f MiB stats.write.total.data.mib=Data written: %.1f MiB
stats.write.total.data.gib=Data written: %.1f GiB stats.write.total.data.gib=Data written: %.1f GiB
stats.encr.total.data.none=Data encrypted: - stats.encr.total.data.none=Data encrypted: -
stats.encr.total.data.kib=Data encrypted: %.1f kiB stats.encr.total.data.kib=Data encrypted: %.1f KiB
stats.encr.total.data.mib=Data encrypted: %.1f MiB stats.encr.total.data.mib=Data encrypted: %.1f MiB
stats.encr.total.data.gib=Data encrypted: %.1f GiB stats.encr.total.data.gib=Data encrypted: %.1f GiB
stats.write.accessCount=Total writes: %d stats.write.accessCount=Total writes: %d
@@ -370,7 +370,7 @@ main.vaultDetail.lockBtn=Lock
main.vaultDetail.bytesPerSecondRead=Read: main.vaultDetail.bytesPerSecondRead=Read:
main.vaultDetail.bytesPerSecondWritten=Write: main.vaultDetail.bytesPerSecondWritten=Write:
main.vaultDetail.throughput.idle=idle main.vaultDetail.throughput.idle=idle
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Vault Statistics main.vaultDetail.stats=Vault Statistics
main.vaultDetail.locateEncryptedFileBtn=Locate Encrypted File main.vaultDetail.locateEncryptedFileBtn=Locate Encrypted File
@@ -446,7 +446,9 @@ recoveryKey.display.StorageHints=Keep it somewhere very secure, e.g.:\n • Stor
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Reset Password recoveryKey.recover.title=Reset Password
recoveryKey.recover.prompt=Enter your recovery key for "%s": recoveryKey.recover.prompt=Enter your recovery key for "%s":
recoveryKey.recover.validKey=This is a valid recovery key recoveryKey.recover.correctKey=This recovery key is correct
recoveryKey.recover.wrongKey=This recovery key belongs to a different vault
recoveryKey.recover.invalidKey=This recovery key is not valid
recoveryKey.printout.heading=Cryptomator Recovery Key\n"%s"\n recoveryKey.printout.heading=Cryptomator Recovery Key\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Reset recoveryKey.recover.resetBtn=Reset
@@ -113,7 +113,6 @@ hub.register.registerBtn=تأكيد
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.description=تم حظر قفل "%s" بواسطة العمليات المعلقة أو الملفات المفتوحة. يمكنك فرض قفل هذا المخزن، ولكن مقاطعة عمليات الادخال والاخراج I/O قد تؤدي لفقدان البيانات غير المحفوظة. lock.forced.description=تم حظر قفل "%s" بواسطة العمليات المعلقة أو الملفات المفتوحة. يمكنك فرض قفل هذا المخزن، ولكن مقاطعة عمليات الادخال والاخراج I/O قد تؤدي لفقدان البيانات غير المحفوظة.
@@ -234,7 +233,6 @@ main.vaultDetail.lockBtn=قفل
main.vaultDetail.bytesPerSecondRead=قراءة: main.vaultDetail.bytesPerSecondRead=قراءة:
main.vaultDetail.bytesPerSecondWritten=كتابة: main.vaultDetail.bytesPerSecondWritten=كتابة:
main.vaultDetail.throughput.idle=خمول main.vaultDetail.throughput.idle=خمول
main.vaultDetail.throughput.kbps=%.1f كيلوبايت/ث
main.vaultDetail.throughput.mbps=%.1f ميجابايت/ث main.vaultDetail.throughput.mbps=%.1f ميجابايت/ث
main.vaultDetail.stats=إحصائيات الخزنة main.vaultDetail.stats=إحصائيات الخزنة
main.vaultDetail.locateEncryptedFileBtn=تحديد موقع الملف المشفر main.vaultDetail.locateEncryptedFileBtn=تحديد موقع الملف المشفر
@@ -296,7 +294,7 @@ recoveryKey.display.StorageHints=حافظ عليه في مكان ما آمن ج
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt=أدخل مفتاح الاسترداد الخاص لـ "%s": recoveryKey.recover.prompt=أدخل مفتاح الاسترداد الخاص لـ "%s":
recoveryKey.recover.validKey=هذا مفتاح استرداد صالح recoveryKey.recover.correctKey=هذا مفتاح استرداد صالح
recoveryKey.printout.heading=مفتاح استرداد Cryptomator\n"%s"\n recoveryKey.printout.heading=مفتاح استرداد Cryptomator\n"%s"\n
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
+80 -8
View File
@@ -123,7 +123,14 @@ unlock.success.description=Змест скарбніцы "%s" цяпер дас
unlock.success.rememberChoice=Запомні мой выбар і больш не пытай unlock.success.rememberChoice=Запомні мой выбар і больш не пытай
unlock.success.revealBtn=Паказаць дыск unlock.success.revealBtn=Паказаць дыск
## Failure ## Failure
unlock.error.customPath.message=Не магчыма змантажаваць скарбніцу да карыстальніцкай сцежкі
unlock.error.customPath.description.notSupported=Калі ты надалей жадаеш карыстацца адмысловаю сцежкаю, калі ласка, пайдзі ў налады ды абары там тып тому, які падтрымлівае яе. У іншым выпадку пайдзі ў опцыі скарбніцы ды абяры там пункт мантажавання, які падтрымліваецца.
unlock.error.customPath.description.notExists=Адмысловая сцежка мантажавання не існуе. Ствары яе ў сваёй файлавай сістэме, альбо змяні яе ў опцыях скарбніцы.
unlock.error.customPath.description.generic=Ты абраў адмысловую сцежку мантажавання для гэтай скарбніцы, але скарыстацца ёю не ўдалося. Вось паведамленне пра памылку: %s
## Hub ## Hub
hub.noKeychain.message=Няма доступу да ключа прылады
hub.noKeychain.description=Каб разамкнуць скарбніцы Hub, патрэбны ключ прылады, які захаваны ў звязку ключоў. Каб працягнуць, уключы "%s" ды абяры звязак ключоў у наладах.
hub.noKeychain.openBtn=Адчыніць налады
### Waiting ### Waiting
hub.auth.message=Чаканне спраўджання… hub.auth.message=Чаканне спраўджання…
hub.auth.description=Ты мусіш аўтаматычна перанакіравацца на старонку ўваходу. hub.auth.description=Ты мусіш аўтаматычна перанакіравацца на старонку ўваходу.
@@ -147,8 +154,8 @@ hub.registerFailed.description=Падчас прысваення імя адбы
hub.unauthorized.message=Адмова ў доступе hub.unauthorized.message=Адмова ў доступе
hub.unauthorized.description=Тваёй прыладзе ў дадзены момант не дазволена мець доступ да гэтай скрабніцы. Запытайся ўладальніка скрабніцы за дазволам. hub.unauthorized.description=Тваёй прыладзе ў дадзены момант не дазволена мець доступ да гэтай скрабніцы. Запытайся ўладальніка скрабніцы за дазволам.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Ліцэнзія пратэрмінаваная hub.invalidLicense.message=Несапраўдная ліцэнзія Hub
hub.invalidLicense.description=Твая інстанцыя Cryptomator Hub мае некарэктную ліцэнзію. Калі ласка, паведамі адміністратару Hub пра гэта, каб абнавіць альбо аднавіць ліцэнзію.
# Lock # Lock
## Force ## Force
@@ -164,6 +171,12 @@ lock.fail.description=Скарбніцу "%s" не мажліва замкнуц
migration.title=Абнавіць скарбніцу migration.title=Абнавіць скарбніцу
## Start ## Start
migration.start.header=Абнавіць скарбніцу migration.start.header=Абнавіць скарбніцу
migration.start.text=Каб адчыніць тваю скарбніцу "%s" у гэтай новай вэрсіі Cryptomator, скарбніца мусіць быць абноўленая да навейшага фармату. Перад тым, як пачаць, трэба ведаць наступнае:
migration.start.remarkUndone=Не магчыма скасаваць гэта абнаўленне.
migration.start.remarkVersions=Старэйшыя вэрсіі Cryptomator ня змогуць адчыніць абноўленую скарбніцу.
migration.start.remarkCanRun=Ты мусіш упэўніцца, што на кожнай прыладзе, якая мае доступ да скарбніцы, працуе гэта вэрсія Cryptomator.
migration.start.remarkSynced=Ты мусіш упэўніцца, што твая скарбніца цалкам сынхранаваная на гэтай ды іншых прыладах, перад тым як пачаць абнаўленне.
migration.start.confirm=Я прачытала і зразумела інфармацыю зверху
## Run ## Run
migration.run.enterPassword=Увядзіце пароль да "%s" migration.run.enterPassword=Увядзіце пароль да "%s"
migration.run.startMigrationBtn=Перамясціць скарбніцу migration.run.startMigrationBtn=Перамясціць скарбніцу
@@ -185,17 +198,47 @@ migration.impossible.heading=Не мажліва перанесці скарбн
## Start ## Start
health.title=Тэст на цэласнасць для "%s" health.title=Тэст на цэласнасць для "%s"
health.intro.header=Тэст на цэласнасць health.intro.header=Тэст на цэласнасць
health.intro.remarkFix=Ня ўсе хібы могуць быць выпраўленыя.
health.intro.remarkBackup=Калі даныя пашкоджаныя, дапаможа толькі рэзервовая копія. health.intro.remarkBackup=Калі даныя пашкоджаныя, дапаможа толькі рэзервовая копія.
health.intro.affirmation=Я прачытала і зразумела інфармацыю зверху
## Start Failure ## Start Failure
health.fail.header=Падчас загрузкі налад скарбніцы адбылася памылка
health.fail.ioError=Здарылася памылка падчас спробы прачытаць канфіґурацыйны файл.
health.fail.parseError=Здарылася памылка падчас ператварэння канфіґурацыі скарбніцы.
health.fail.moreInfo=Падрабязней health.fail.moreInfo=Падрабязней
## Check Selection ## Check Selection
health.checkList.description=Абяры тэсты ў левым спісе альбо скарыстайся кнопкамі ўнізе.
health.checkList.selectAllButton=Вылучыць усе элементы health.checkList.selectAllButton=Вылучыць усе элементы
health.checkList.deselectAllButton=Адрабіць вылучэнне ўсіх элементаў health.checkList.deselectAllButton=Адрабіць вылучэнне ўсіх элементаў
health.check.runBatchBtn=Выканаць вылучаныя элементы health.check.runBatchBtn=Выканаць вылучаныя элементы
## Detail view ## Detail view
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.detail.checkCancelled=Праверка была скасавана.
health.check.detail.listFilters.label=Фільтр
health.check.detail.fixAllSpecificBtn=Адрамантаваць усё гэтага тыпу
health.check.exportBtn=Экспартаваць справаздачу health.check.exportBtn=Экспартаваць справаздачу
## Result view ## Result view
health.result.severityFilter.all=Стан – Усе
health.result.severityFilter.good=Добра
health.result.severityFilter.info=Інфармацыя
health.result.severityFilter.warn=Папярэджанне
health.result.severityFilter.crit=Крытычна
health.result.severityTip.good=Стан: Добры\nНармальная структура скарбніцы.
health.result.severityTip.info=Стан: Інфармацыя\nСтруктура скарбніцы непашкоджаная.
health.result.severityTip.warn=Стан: Папярэджанне\nСтруктура скарбніцы пашкоджаная, тэрмінова патрабуецца рамонт.
health.result.severityTip.crit=Стан: Крытычны\nСтруктура скарбніцы пашкоджаная, выяўлена страта даных.
health.result.fixStateFilter.all=Стан выпраўлення – Усе
health.result.fixStateFilter.fixable=Папраўны
health.result.fixStateFilter.notFixable=Непапраўны
health.result.fixStateFilter.fixing=Выпраўленне…
health.result.fixStateFilter.fixed=Выпраўлена
health.result.fixStateFilter.fixFailed=Няўдача выпраўлення
## Fix Application ## Fix Application
health.fix.fixBtn=Выправіць health.fix.fixBtn=Выправіць
health.fix.successTip=Паспяхова выпраўлена health.fix.successTip=Паспяхова выпраўлена
@@ -227,7 +270,16 @@ preferences.interface.showMinimizeButton=Паказаць кнопку згор
preferences.interface.showTrayIcon=Паказваць іконку на інфармацыйнай панэлі (спатрэбіцца перазапуск) preferences.interface.showTrayIcon=Паказваць іконку на інфармацыйнай панэлі (спатрэбіцца перазапуск)
## Volume ## Volume
preferences.volume=Віртуальны дыск preferences.volume=Віртуальны дыск
preferences.volume.type=Тып тому (спатрэбіцца перазапуск)
preferences.volume.type.automatic=Аўтаматычна preferences.volume.type.automatic=Аўтаматычна
preferences.volume.docsTooltip=Адчыні дакумэнтацыю, каб даведацца больш пра розныя тыпы тому.
preferences.volume.tcp.port=Порт TCP
preferences.volume.supportedFeatures=Абраны тып тому падтрымлівае наступныя функцыі:
preferences.volume.feature.mountAuto=Аўтаматычны выбар пункту мантажавання
preferences.volume.feature.mountToDir=Карыстальніцкая тэчка як пункт мантажавання
preferences.volume.feature.mountToDriveLetter=Літара тому як пункт мантажавання
preferences.volume.feature.mountFlags=Карыстальніцкія опцыі мантажавання
preferences.volume.feature.readOnly=Мантажаванне толькі для чытання
## Updates ## Updates
preferences.updates=Абнаўленні preferences.updates=Абнаўленні
preferences.updates.currentVersion=Бягучая версія: %s preferences.updates.currentVersion=Бягучая версія: %s
@@ -236,7 +288,10 @@ preferences.updates.checkNowBtn=Праверыць зараз
preferences.updates.updateAvailable=Даступна абнаўленне да версіі %s preferences.updates.updateAvailable=Даступна абнаўленне да версіі %s
## Contribution ## Contribution
preferences.contribute=Падтрымай нас preferences.contribute=Падтрымай нас
preferences.contribute.registeredFor=Сэртыфікат ахвяравальніка зарэгістраваны на %s
preferences.contribute.noCertificate=Ахвяруй на Cryptomator ды атрымай сэртыфікат ахвяравальніка. Гэта штось падобнае на ліцэнзійны ключ, але для цудоўных людзей, якія карыстаюцца бясплатнай праграмай. ;-)
preferences.contribute.getCertificate=Яшчэ ня маеш такога? Даведайся, як атрымаць. preferences.contribute.getCertificate=Яшчэ ня маеш такога? Даведайся, як атрымаць.
preferences.contribute.promptText=Устаў код сэртыфікату ахвяравальніка сюды
#<-- Add entries for donations and code/translation/documentation contribution --> #<-- Add entries for donations and code/translation/documentation contribution -->
## About ## About
@@ -244,9 +299,10 @@ preferences.about=Пра нас
# Vault Statistics # Vault Statistics
stats.title=Статыстыкі для %s stats.title=Статыстыкі для %s
stats.cacheHitRate=Трапнасць кэшу
## Read ## Read
stats.read.throughput.idle=Чытанне: - stats.read.throughput.idle=Чытанне: нічога
stats.read.throughput.kibs=Чытанне: %.2f КіБ/с stats.read.throughput.kibs=Чытанне: %.2f KiB/s
stats.read.throughput.mibs=Чытанне: %.2f МіБ/с stats.read.throughput.mibs=Чытанне: %.2f МіБ/с
stats.read.total.data.none=Прачытана: - stats.read.total.data.none=Прачытана: -
stats.read.total.data.kib=Прачытана: %.1f КіБ stats.read.total.data.kib=Прачытана: %.1f КіБ
@@ -256,9 +312,9 @@ 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=Напісана: -
@@ -269,9 +325,11 @@ 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
## Accesses ## Accesses
stats.access.current=Доступ: %d
stats.access.total=Доступы агулам: %d
# Main Window # Main Window
@@ -301,6 +359,7 @@ main.vaultDetail.passwordSavedInKeychain=Пароль захаваны
main.vaultDetail.unlockedStatus=РАЗАМКНЁНА main.vaultDetail.unlockedStatus=РАЗАМКНЁНА
main.vaultDetail.accessLocation=Змест тваёй скарбніцы даступны тут: main.vaultDetail.accessLocation=Змест тваёй скарбніцы даступны тут:
main.vaultDetail.revealBtn=Паказаць дыск main.vaultDetail.revealBtn=Паказаць дыск
main.vaultDetail.copyUri=Скапіяваць URI
main.vaultDetail.lockBtn=Замкнуць main.vaultDetail.lockBtn=Замкнуць
main.vaultDetail.bytesPerSecondRead=Чытанне: main.vaultDetail.bytesPerSecondRead=Чытанне:
main.vaultDetail.bytesPerSecondWritten=Пісанне: main.vaultDetail.bytesPerSecondWritten=Пісанне:
@@ -308,6 +367,10 @@ main.vaultDetail.throughput.idle=бяздзейны
main.vaultDetail.throughput.kbps=%.1f КіБ/с main.vaultDetail.throughput.kbps=%.1f КіБ/с
main.vaultDetail.throughput.mbps=%.1f МіБ/с main.vaultDetail.throughput.mbps=%.1f МіБ/с
main.vaultDetail.stats=Статыстыка скарбніцы main.vaultDetail.stats=Статыстыка скарбніцы
main.vaultDetail.locateEncryptedFileBtn=Знайсці зашыфраваны файл
main.vaultDetail.locateEncryptedFileBtn.tooltip=Абяры файл у тваёй скрабніцы, каб знайсці ягоны зашыфраваны адпаведнік
main.vaultDetail.encryptedPathsCopied=Шлях скапіяваны ў буфер абмену!
main.vaultDetail.filePickerTitle=Абраць файл унутры скарбніцы
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator ня змог знайсці скарбніцу па гэтай сцежцы. main.vaultDetail.missing.info=Cryptomator ня змог знайсці скарбніцу па гэтай сцежцы.
main.vaultDetail.missing.recheck=Пераправерыць main.vaultDetail.missing.recheck=Пераправерыць
@@ -341,20 +404,26 @@ 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.info=Опцыі залежаць ад абранага тыпу тому.
vaultOptions.mount.linkToPreferences=Адчыніць налады віртуальнага дыску
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.directoryPickerButton=Абраць… vaultOptions.mount.mountPoint.directoryPickerButton=Абраць…
vaultOptions.mount.mountPoint.directoryPickerTitle=Абраць тэчку
## Master Key ## Master Key
vaultOptions.masterkey=Пароль vaultOptions.masterkey=Пароль
vaultOptions.masterkey.changePasswordBtn=Змяніць пароль vaultOptions.masterkey.changePasswordBtn=Змяніць пароль
vaultOptions.masterkey.forgetSavedPasswordBtn=Забыцца на захаваны пароль vaultOptions.masterkey.forgetSavedPasswordBtn=Забыцца на захаваны пароль
vaultOptions.masterkey.recoveryKeyExplanation=Ключ аднаўлення – гэта адзіная мажлівасць аднавіць доступ да тваёй скарбніцы, калі ты згубіш пароль.
vaultOptions.masterkey.showRecoveryKeyBtn=Паказаць ключ аднаўлення vaultOptions.masterkey.showRecoveryKeyBtn=Паказаць ключ аднаўлення
vaultOptions.masterkey.recoverPasswordBtn=Скінуць пароль vaultOptions.masterkey.recoverPasswordBtn=Скінуць пароль
@@ -370,7 +439,9 @@ recoveryKey.display.StorageHints=Захоўвай іх у бяспечным м
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Скінуць пароль recoveryKey.recover.title=Скінуць пароль
recoveryKey.recover.prompt=Увядзі свой ключ аднаўлення для "%s": recoveryKey.recover.prompt=Увядзі свой ключ аднаўлення для "%s":
recoveryKey.recover.validKey=Гэта валідны ключ аднаўлення recoveryKey.recover.correctKey=Гэта валідны ключ аднаўлення
recoveryKey.recover.wrongKey=Гэты ключ аднаўлення належыць іншай скарбніцы
recoveryKey.recover.invalidKey=Несапраўдны ключ аднаўлення
recoveryKey.printout.heading=Ключ аднаўлення Cryptomator\n"%s"\n recoveryKey.printout.heading=Ключ аднаўлення Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Скінуць recoveryKey.recover.resetBtn=Скінуць
@@ -398,4 +469,5 @@ quit.lockAndQuitBtn=Замкнуць ды вайсці
# Forced Quit # Forced Quit
quit.forced.message=Некаторыя скарбніцы не магчыма замкнуць quit.forced.message=Некаторыя скарбніцы не магчыма замкнуць
quit.forced.description=Замыканне скарбніц было заблакавана праз дзеючыя аперацыі альбо праз адчыненыя файлы. Ты можаш прымусова замкнуць скарбніцы, але гэта можа прывесці да страты незахаваных даных.
quit.forced.forceAndQuitBtn=Прымусіць і выйсці quit.forced.forceAndQuitBtn=Прымусіць і выйсці
@@ -97,7 +97,6 @@ hub.register.registerBtn=নিশ্চিত করুন
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.retryBtn=পুনরায় চেষ্টা করুন lock.forced.retryBtn=পুনরায় চেষ্টা করুন
@@ -113,7 +113,6 @@ hub.register.registerBtn=Potvrdi
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.description=Zaključavanje "%s" blokirano je operacijama na čekanju ili otvorenim datotekama. Možete prisilno zaključati ovaj sef, međutim prekid U / I-a može rezultirati gubitkom nespremljenih podataka. lock.forced.description=Zaključavanje "%s" blokirano je operacijama na čekanju ili otvorenim datotekama. Možete prisilno zaključati ovaj sef, međutim prekid U / I-a može rezultirati gubitkom nespremljenih podataka.
@@ -183,27 +182,21 @@ stats.title=Statistika za %s
stats.cacheHitRate=Brzina učitavanja u predmemoriju stats.cacheHitRate=Brzina učitavanja u predmemoriju
## Read ## Read
stats.read.throughput.idle=Čitaj: U pripravnosti stats.read.throughput.idle=Čitaj: U pripravnosti
stats.read.throughput.kibs=Čitanje: %.2f kiB/s
stats.read.throughput.mibs=Čitanje: %.2f MiB/s stats.read.throughput.mibs=Čitanje: %.2f MiB/s
stats.read.total.data.none=Pročitano podataka: - stats.read.total.data.none=Pročitano podataka: -
stats.read.total.data.kib=Pročitano podataka: %.1f kiB
stats.read.total.data.mib=Pročitano podataka: %.1f MiB stats.read.total.data.mib=Pročitano podataka: %.1f MiB
stats.read.total.data.gib=Pročitano podataka: %.1f GiB stats.read.total.data.gib=Pročitano podataka: %.1f GiB
stats.decr.total.data.none=Otključani podaci: - stats.decr.total.data.none=Otključani podaci: -
stats.decr.total.data.kib=Otključano podataka: %.1f kiB
stats.decr.total.data.mib=Otključano podataka: %.1f MiB stats.decr.total.data.mib=Otključano podataka: %.1f MiB
stats.decr.total.data.gib=Otključano podataka: %.1f GiB stats.decr.total.data.gib=Otključano podataka: %.1f GiB
stats.read.accessCount=Ukupno pročitano: %d stats.read.accessCount=Ukupno pročitano: %d
## Write ## Write
stats.write.throughput.idle=Pisanje: U pripravnosti stats.write.throughput.idle=Pisanje: U pripravnosti
stats.write.throughput.kibs=Upisano: %.2f kiB/s
stats.write.throughput.mibs=Upisano: %.2f MiB/s stats.write.throughput.mibs=Upisano: %.2f MiB/s
stats.write.total.data.none=Podaci su upisani:- stats.write.total.data.none=Podaci su upisani:-
stats.write.total.data.kib=Upisano podataka: %.1f kiB
stats.write.total.data.mib=Upisano podataka: %.1f MiB stats.write.total.data.mib=Upisano podataka: %.1f MiB
stats.write.total.data.gib=Upisano podataka: %.1f GiB stats.write.total.data.gib=Upisano podataka: %.1f GiB
stats.encr.total.data.none=Otključano podataka: - stats.encr.total.data.none=Otključano podataka: -
stats.encr.total.data.kib=Otključano podataka: %.1f kiB
stats.encr.total.data.mib=Otključano podataka: %.1f MiB stats.encr.total.data.mib=Otključano podataka: %.1f MiB
stats.encr.total.data.gib=Otključano podataka: %.1f GiB stats.encr.total.data.gib=Otključano podataka: %.1f GiB
stats.write.accessCount=Ukupno upisano: %d stats.write.accessCount=Ukupno upisano: %d
@@ -243,7 +236,6 @@ main.vaultDetail.lockBtn=Zaključaj
main.vaultDetail.bytesPerSecondRead=Čitaj: main.vaultDetail.bytesPerSecondRead=Čitaj:
main.vaultDetail.bytesPerSecondWritten=Piši: main.vaultDetail.bytesPerSecondWritten=Piši:
main.vaultDetail.throughput.idle=u stanju mirovanja main.vaultDetail.throughput.idle=u stanju mirovanja
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statistika sefa main.vaultDetail.stats=Statistika sefa
### Missing ### Missing
@@ -301,7 +293,7 @@ recoveryKey.display.StorageHints=Pohranite ga negdje vrlo sigurno, npr.:\n • S
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt=Unesite ključ za oporavak za "%s": recoveryKey.recover.prompt=Unesite ključ za oporavak za "%s":
recoveryKey.recover.validKey=Ključ za oporavak je ispravan recoveryKey.recover.correctKey=Ključ za oporavak je ispravan
recoveryKey.printout.heading=Cryptomator Ključ za oporavak za \n"%s"\n recoveryKey.printout.heading=Cryptomator Ključ za oporavak za \n"%s"\n
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
+50 -11
View File
@@ -73,7 +73,7 @@ addvault.new.readme.storageLocation.4=• modifiqueu cap fitxer dins d'aquest d
addvault.new.readme.storageLocation.5=• enganxeu cap fitxer a xifrar en aquest directori. addvault.new.readme.storageLocation.5=• enganxeu cap fitxer a xifrar en aquest directori.
addvault.new.readme.storageLocation.6=Si voleu xifrar fitxers i veure el contigut de la caixa forta, feu el següent: addvault.new.readme.storageLocation.6=Si voleu xifrar fitxers i veure el contigut de la caixa forta, feu el següent:
addvault.new.readme.storageLocation.7=1. Afegiu aquesta caixa forta a Cryptomator. addvault.new.readme.storageLocation.7=1. Afegiu aquesta caixa forta a Cryptomator.
addvault.new.readme.storageLocation.8=2. Desbloquejeu la caixa forta enCryptomator. addvault.new.readme.storageLocation.8=2. Desbloqueu la caixa forta a Cryptomator.
addvault.new.readme.storageLocation.9=3. Feu click damunt del botó "Mostra" per obrir la ubicació d'accès. addvault.new.readme.storageLocation.9=3. Feu click damunt del botó "Mostra" per obrir la ubicació d'accès.
addvault.new.readme.storageLocation.10=Si us cal ajuda, llegiu la documentació: %s addvault.new.readme.storageLocation.10=Si us cal ajuda, llegiu la documentació: %s
addvault.new.readme.accessLocation.fileName=BENVINGUTS.rtf addvault.new.readme.accessLocation.fileName=BENVINGUTS.rtf
@@ -123,6 +123,10 @@ unlock.success.description=S'ha desblocat %s correctament! Podeu accedir a la vo
unlock.success.rememberChoice=Recorda l'elecció. No ho tornis a mostrar. unlock.success.rememberChoice=Recorda l'elecció. No ho tornis a mostrar.
unlock.success.revealBtn=Mostra la unitat unlock.success.revealBtn=Mostra la unitat
## Failure ## Failure
unlock.error.customPath.message=No es pot muntar la caixa forta en la ruta personalitzada
unlock.error.customPath.description.notSupported=Si vol continuar fent servir una ruta personalitzada, vagi si us plau a Preferències i seleccioni un tipus de volum que la suporti. Altrament, vagi a les opcions de la caixa forta i escolli un punt de muntatge suportat.
unlock.error.customPath.description.notExists=La ruta de muntatge personalitzada no existeix. Creï-la o canviï-la en les opcions de la caixa forta.
unlock.error.customPath.description.generic=Ha seleccionat una ruta personalitzada on muntar la caixa forta, però ha fallat amb aquest missatge: %s
## Hub ## Hub
hub.noKeychain.message=No es pot accedir a la clau del dispositiu hub.noKeychain.message=No es pot accedir a la clau del dispositiu
hub.noKeychain.description=Per poder desblocar caixes fortes del Hub es requereix la clau d'un dispositiu, que s'emmagatzema de forma segura en un clauer. Per continuar, habiliti "%s" i seleccioni un clauer en les Preferències. hub.noKeychain.description=Per poder desblocar caixes fortes del Hub es requereix la clau d'un dispositiu, que s'emmagatzema de forma segura en un clauer. Per continuar, habiliti "%s" i seleccioni un clauer en les Preferències.
@@ -133,19 +137,25 @@ hub.auth.description=Hauríeu de ser redirigits a la pàgina d'accés.
hub.auth.loginLink=No heu estat redirigit? Feu clic aquí per a obrir-la. hub.auth.loginLink=No heu estat redirigit? Feu clic aquí per a obrir-la.
### Receive Key ### Receive Key
hub.receive.message=S'està processant la resposta… hub.receive.message=S'està processant la resposta…
hub.receive.description=Cryptomator està rebent i processant la resposta del Hub. Espereu, si us plau.
### Register Device ### Register Device
hub.register.message=Cal un nom de dispositiu hub.register.message=Cal un nom de dispositiu
hub.register.description=Sembla que és el primer accés al Hub des d'aquest dispositiu. Per identificar-lo i poder autoritzar l'accés necessiteu anomenar aquest dispositiu.
hub.register.nameLabel=Nom del dispositiu hub.register.nameLabel=Nom del dispositiu
hub.register.occupiedMsg=El nom ja està en ús hub.register.occupiedMsg=El nom ja està en ús
hub.register.registerBtn=Confirma hub.register.registerBtn=Confirma
### Registration Success ### Registration Success
hub.registerSuccess.message=Unitat anomenada
hub.registerSuccess.description=Per a accedir a la caixa forta, el vostre dispositiu ha de ser autoritzat pel propietari de la caixa. hub.registerSuccess.description=Per a accedir a la caixa forta, el vostre dispositiu ha de ser autoritzat pel propietari de la caixa.
### Registration Failed ### Registration Failed
hub.registerFailed.message=Error al nombrar el dispositiu
hub.registerFailed.description=S'ha produït un error en el procés de nomenament. Per més detalls vegeu el registre de l'aplicació.
### Unauthorized ### Unauthorized
hub.unauthorized.message=Accés denegat hub.unauthorized.message=Accés denegat
hub.unauthorized.description=El vostre dispositiu no ha estat encara autoritzat a accedir a aquesta caixa forta. Demaneu autorització al propietari. hub.unauthorized.description=El vostre dispositiu no ha estat encara autoritzat a accedir a aquesta caixa forta. Demaneu autorització al propietari.
### License Exceeded ### License Exceeded
hub.invalidLicense.message=La llicència del Hub no és vàlida
hub.invalidLicense.description=Aquest Cryptomator Hub no té una llicència vàlida. Informa si us plau a l'administrador perquè actualitzi o renovi la llicència.
# Lock # Lock
## Force ## Force
@@ -161,6 +171,11 @@ lock.fail.description=La caixa forta "%s" no s'ha pogut blocar. Assegureu-vos qu
migration.title=Actualitza la caixa forta migration.title=Actualitza la caixa forta
## Start ## Start
migration.start.header=Actualitza la caixa forta migration.start.header=Actualitza la caixa forta
migration.start.text=Per obrir la caixa forta "%s" en aquesta nova versió de Cryptomator, la caixa forta necessita actualitzar-se al nou format. Abans de fer-ho, cal que sabeu el següent:
migration.start.remarkUndone=Aquesta actualització no pot ser desfeta.
migration.start.remarkVersions=Versions antigues de Cryptomator no podran obrir la caixa forta actualitzada.
migration.start.remarkCanRun=Assegureu-vos que tots els dispositius des dels quals accediu a la caixa forta poden executar aquesta versió de Cryptomator.
migration.start.remarkSynced=Assegureu-vos que la caixa forta està completament sincronitzada en aquest i altres dispositius abans d'actualitzar-la.
migration.start.confirm=He llegit i entès la informació anterior migration.start.confirm=He llegit i entès la informació anterior
## Run ## Run
migration.run.enterPassword=Introduïu la contrasenya per a "%s" migration.run.enterPassword=Introduïu la contrasenya per a "%s"
@@ -218,6 +233,10 @@ health.result.severityFilter.good=Bé
health.result.severityFilter.info=Info health.result.severityFilter.info=Info
health.result.severityFilter.warn=Avís health.result.severityFilter.warn=Avís
health.result.severityFilter.crit=Crític health.result.severityFilter.crit=Crític
health.result.severityTip.good=Gravetat: Bona.\nEstructura de la caixa forta correcta.
health.result.severityTip.info=Gravetat: Informació\nCaixa forta intacta, es recomana però arreglar-la.
health.result.severityTip.warn=Gravetat: Avís\nCaixa forta corrompuda, és altament recomanable arreglar-la.
health.result.severityTip.crit=Gravetat: Crítica\nCaixa forta corrompuda, s'ha determinat que s'han perdut dades.
health.result.fixStateFilter.all=Estat de reparació - Tot health.result.fixStateFilter.all=Estat de reparació - Tot
health.result.fixStateFilter.fixable=Es pot arreglar health.result.fixStateFilter.fixable=Es pot arreglar
health.result.fixStateFilter.notFixable=No es pot arreglar health.result.fixStateFilter.notFixable=No es pot arreglar
@@ -255,7 +274,16 @@ preferences.interface.showMinimizeButton=Mostra el botó 'minimitzar'
preferences.interface.showTrayIcon=Mostra la icona en la barra (cal reiniciar) preferences.interface.showTrayIcon=Mostra la icona en la barra (cal reiniciar)
## Volume ## Volume
preferences.volume=Unitat virtual preferences.volume=Unitat virtual
preferences.volume.type=Tipus de volum (requereix reiniciar)
preferences.volume.type.automatic=Automàtic preferences.volume.type.automatic=Automàtic
preferences.volume.docsTooltip=Obre la documentació per aprendre més sobre els diferents tipus de volums.
preferences.volume.tcp.port=Port TCP
preferences.volume.supportedFeatures=El tipus de volum escollit suporta les següents característiques:
preferences.volume.feature.mountAuto=Selecció automàtica del punt de muntatge
preferences.volume.feature.mountToDir=Directori personalitzat com a punt de muntatge
preferences.volume.feature.mountToDriveLetter=Lletra de la unitat com a punt de muntatge
preferences.volume.feature.mountFlags=Opcions de muntatge personalitzades
preferences.volume.feature.readOnly=Muntar de només lectura
## Updates ## Updates
preferences.updates=Actualitzacions preferences.updates=Actualitzacions
preferences.updates.currentVersion=Versió actual: %s preferences.updates.currentVersion=Versió actual: %s
@@ -278,27 +306,27 @@ stats.title=Estadístiques per a %s
stats.cacheHitRate=Relació d'encerts de la memòria cau stats.cacheHitRate=Relació d'encerts de la memòria cau
## Read ## Read
stats.read.throughput.idle=Llegit: inactiu stats.read.throughput.idle=Llegit: inactiu
stats.read.throughput.kibs=Llegit: %.2f kiB/s stats.read.throughput.kibs=Lectura: %.2f KiB/s
stats.read.throughput.mibs=Llegit: %.2f MiB/s stats.read.throughput.mibs=Llegit: %.2f MiB/s
stats.read.total.data.none=Dades llegides: - stats.read.total.data.none=Dades llegides: -
stats.read.total.data.kib=Dades llegides: %.1f kiB stats.read.total.data.kib=Dades llegides: %.1f KiB
stats.read.total.data.mib=Dades llegides: %.1f MiB stats.read.total.data.mib=Dades llegides: %.1f MiB
stats.read.total.data.gib=Dades llegides: %.1f GiB stats.read.total.data.gib=Dades llegides: %.1f GiB
stats.decr.total.data.none=Dades desxifrades: - stats.decr.total.data.none=Dades desxifrades: -
stats.decr.total.data.kib=Dades desxifrades: %.1f kiB stats.decr.total.data.kib=Dades desxifrades: %.1f KiB
stats.decr.total.data.mib=Dades desxifrades: %.1f MiB stats.decr.total.data.mib=Dades desxifrades: %.1f MiB
stats.decr.total.data.gib=Dades desxifrades: %.1f GiB stats.decr.total.data.gib=Dades desxifrades: %.1f GiB
stats.read.accessCount=Lectures en total: %d stats.read.accessCount=Lectures en total: %d
## Write ## Write
stats.write.throughput.idle=Escriu: inactiu stats.write.throughput.idle=Escriu: inactiu
stats.write.throughput.kibs=Escriu: %.2f kiB/s stats.write.throughput.kibs=Escriptura: %.2f KiB/s
stats.write.throughput.mibs=Escriu: %.2f MiB/s stats.write.throughput.mibs=Escriu: %.2f MiB/s
stats.write.total.data.none=Dades escrites stats.write.total.data.none=Dades escrites
stats.write.total.data.kib=Dades escrites: %.1f kiB stats.write.total.data.kib=Dades escrites: %.1f KiB
stats.write.total.data.mib=Dades escrites: %.1f MiB stats.write.total.data.mib=Dades escrites: %.1f MiB
stats.write.total.data.gib=Dades escrites: %.1f GiB stats.write.total.data.gib=Dades escrites: %.1f GiB
stats.encr.total.data.none=Dades xifrades: - stats.encr.total.data.none=Dades xifrades: -
stats.encr.total.data.kib=Dades xifrades: %.1f kiB stats.encr.total.data.kib=Dades xifrades: %.1f KiB
stats.encr.total.data.mib=Dades xifrades: %.1f MiB stats.encr.total.data.mib=Dades xifrades: %.1f MiB
stats.encr.total.data.gib=Dades xifrades: %.1f GiB stats.encr.total.data.gib=Dades xifrades: %.1f GiB
stats.write.accessCount=Total escrits: %d stats.write.accessCount=Total escrits: %d
@@ -336,15 +364,20 @@ main.vaultDetail.passwordSavedInKeychain=Contrasenya desada
main.vaultDetail.unlockedStatus=DESBLOQUEJADA main.vaultDetail.unlockedStatus=DESBLOQUEJADA
main.vaultDetail.accessLocation=Els continguts de la vostra caixa forta són accessibles aquí: main.vaultDetail.accessLocation=Els continguts de la vostra caixa forta són accessibles aquí:
main.vaultDetail.revealBtn=Mostra la unitat main.vaultDetail.revealBtn=Mostra la unitat
main.vaultDetail.copyUri=Copiar URI
main.vaultDetail.lockBtn=Bloqueja main.vaultDetail.lockBtn=Bloqueja
main.vaultDetail.bytesPerSecondRead=Lectura: main.vaultDetail.bytesPerSecondRead=Lectura:
main.vaultDetail.bytesPerSecondWritten=Escriu: main.vaultDetail.bytesPerSecondWritten=Escriu:
main.vaultDetail.throughput.idle=inactiu main.vaultDetail.throughput.idle=inactiu
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=Estadístiques de la caixa forta main.vaultDetail.stats=Estadístiques de la caixa forta
main.vaultDetail.locateEncryptedFileBtn=Trobar fitxer xifrat
main.vaultDetail.locateEncryptedFileBtn.tooltip=Esculli un fitxer de la caixa forta per trobar el seu homòleg xifrat
main.vaultDetail.encryptedPathsCopied=Rutes copiades al porta-retalls!
main.vaultDetail.filePickerTitle=Seleccioni un fitxer dins la caixa forta
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator no ha trobat una caixa forta en aquest camí. main.vaultDetail.missing.info=Cryptomator no ha trobat una caixa forta en aquesta ruta.
main.vaultDetail.missing.recheck=Torna a comprovar main.vaultDetail.missing.recheck=Torna a comprovar
main.vaultDetail.missing.remove=Eliminar de la llista de la caixa forta… main.vaultDetail.missing.remove=Eliminar de la llista de la caixa forta…
main.vaultDetail.missing.changeLocation=Canvia la localització de la caixa forta… main.vaultDetail.missing.changeLocation=Canvia la localització de la caixa forta…
@@ -381,13 +414,17 @@ vaultOptions.general.startHealthCheckBtn=Inicia la comprovació
## Mount ## Mount
vaultOptions.mount=Muntatge vaultOptions.mount=Muntatge
vaultOptions.mount.info=Les opcions depenen del tipus de volum escollit.
vaultOptions.mount.linkToPreferences=Obre les preferències del disc virtual
vaultOptions.mount.readonly=Només lectura vaultOptions.mount.readonly=Només lectura
vaultOptions.mount.customMountFlags=Senyaladors de muntatge personalitzats vaultOptions.mount.customMountFlags=Senyaladors de muntatge personalitzats
vaultOptions.mount.winDriveLetterOccupied=ocupat vaultOptions.mount.winDriveLetterOccupied=ocupat
vaultOptions.mount.mountPoint=Punt de muntatge vaultOptions.mount.mountPoint=Punt de muntatge
vaultOptions.mount.mountPoint.auto=Tria automàticament una ubicació adequada vaultOptions.mount.mountPoint.auto=Tria automàticament una ubicació adequada
vaultOptions.mount.mountPoint.driveLetter=Utilitza la lletra de la unitat assignada vaultOptions.mount.mountPoint.driveLetter=Utilitza la lletra de la unitat assignada
vaultOptions.mount.mountPoint.custom=Faci servir el directori escollit
vaultOptions.mount.mountPoint.directoryPickerButton=Trieu… vaultOptions.mount.mountPoint.directoryPickerButton=Trieu…
vaultOptions.mount.mountPoint.directoryPickerTitle=Triï un directori
## Master Key ## Master Key
vaultOptions.masterkey=Contrasenya vaultOptions.masterkey=Contrasenya
vaultOptions.masterkey.changePasswordBtn=Canvi de contrasenya vaultOptions.masterkey.changePasswordBtn=Canvi de contrasenya
@@ -408,7 +445,9 @@ recoveryKey.display.StorageHints=Conserveu-la en un lloc molt segur. P. ex.:\n
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Canviar contrasenya recoveryKey.recover.title=Canviar contrasenya
recoveryKey.recover.prompt=Introduïu la vostra clau de recuperació de "%s": recoveryKey.recover.prompt=Introduïu la vostra clau de recuperació de "%s":
recoveryKey.recover.validKey=La clau de recuperació és vàlida recoveryKey.recover.correctKey=La clau de recuperació és vàlida
recoveryKey.recover.wrongKey=Aquesta clau de recuperació pertany a una caixa forta diferent
recoveryKey.recover.invalidKey=Aquesta clau de recuperació no és vàlida
recoveryKey.printout.heading=Clau de recuperació de Cryptomator\n"%s"\n recoveryKey.printout.heading=Clau de recuperació de Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Reinicia recoveryKey.recover.resetBtn=Reinicia
+1 -11
View File
@@ -142,9 +142,6 @@ hub.registerFailed.message=Pojmenování zařízení se nezdařilo
hub.unauthorized.message=Přístup odepřen hub.unauthorized.message=Přístup odepřen
hub.unauthorized.description=Vaše zařízení dosud nebylo oprávněno k přístupu k tomuto trezoru. Požádejte vlastníka trezoru, aby jej autorizoval. hub.unauthorized.description=Vaše zařízení dosud nebylo oprávněno k přístupu k tomuto trezoru. Požádejte vlastníka trezoru, aby jej autorizoval.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Licence byla překročena
hub.licenseExceeded.description=Cryptomator Hub poskytl přístup více uživatelům, než jsou jeho licenční povolení. Obraťte se na správce Hubu pro aktualizaci licence nebo správce trezoru pro odstranění uživatelů z trezoru.
# Lock # Lock
## Force ## Force
@@ -275,27 +272,21 @@ stats.title=Statistika pro %s
stats.cacheHitRate=Rychlost dosažené mezipaměti stats.cacheHitRate=Rychlost dosažené mezipaměti
## Read ## Read
stats.read.throughput.idle=Čtení: nečinné stats.read.throughput.idle=Čtení: nečinné
stats.read.throughput.kibs=Čtení: %.2f kiB/s
stats.read.throughput.mibs=Čtení: %.2f MiB/s stats.read.throughput.mibs=Čtení: %.2f MiB/s
stats.read.total.data.none=Přečteno: - stats.read.total.data.none=Přečteno: -
stats.read.total.data.kib=Přečteno: %.1f kiB
stats.read.total.data.mib=Přečteno: %.1f MiB stats.read.total.data.mib=Přečteno: %.1f MiB
stats.read.total.data.gib=Přečteno: %.1f GiB stats.read.total.data.gib=Přečteno: %.1f GiB
stats.decr.total.data.none=Dešifrováno: - stats.decr.total.data.none=Dešifrováno: -
stats.decr.total.data.kib=Dešifrováno: %.1f kiB
stats.decr.total.data.mib=Dešifrováno: %.1f MiB stats.decr.total.data.mib=Dešifrováno: %.1f MiB
stats.decr.total.data.gib=Dešifrováno: %.1f GiB stats.decr.total.data.gib=Dešifrováno: %.1f GiB
stats.read.accessCount=Celkem přečteno: %d stats.read.accessCount=Celkem přečteno: %d
## Write ## Write
stats.write.throughput.idle=Zápis: nečinný stats.write.throughput.idle=Zápis: nečinný
stats.write.throughput.kibs=Zápis: %.2f kiB/s
stats.write.throughput.mibs=Zápis: %.2f MiB/s stats.write.throughput.mibs=Zápis: %.2f MiB/s
stats.write.total.data.none=Zapsaná data: - stats.write.total.data.none=Zapsaná data: -
stats.write.total.data.kib=Zapsáno: %.1f kiB
stats.write.total.data.mib=Zapsáno: %.1f MiB stats.write.total.data.mib=Zapsáno: %.1f MiB
stats.write.total.data.gib=Zapsáno: %.1f GiB stats.write.total.data.gib=Zapsáno: %.1f GiB
stats.encr.total.data.none=Zašifrováno: - stats.encr.total.data.none=Zašifrováno: -
stats.encr.total.data.kib=Zašifrováno: %.1f kiB
stats.encr.total.data.mib=Zašifrováno: %.1f MiB stats.encr.total.data.mib=Zašifrováno: %.1f MiB
stats.encr.total.data.gib=Zašifrováno: %.1f GiB stats.encr.total.data.gib=Zašifrováno: %.1f GiB
stats.write.accessCount=Celkem zapsáno: %d stats.write.accessCount=Celkem zapsáno: %d
@@ -337,7 +328,6 @@ main.vaultDetail.lockBtn=Zamknout
main.vaultDetail.bytesPerSecondRead=Přečteno: main.vaultDetail.bytesPerSecondRead=Přečteno:
main.vaultDetail.bytesPerSecondWritten=Zapsáno: main.vaultDetail.bytesPerSecondWritten=Zapsáno:
main.vaultDetail.throughput.idle=nečinný main.vaultDetail.throughput.idle=nečinný
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statistiky trezoru main.vaultDetail.stats=Statistiky trezoru
### Missing ### Missing
@@ -405,7 +395,7 @@ recoveryKey.display.StorageHints=Uchovejte ho někde velmi bezpečně, např.\n
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Resetovat heslo recoveryKey.recover.title=Resetovat heslo
recoveryKey.recover.prompt=Zadejte váš obnovovací klíč pro "%s": recoveryKey.recover.prompt=Zadejte váš obnovovací klíč pro "%s":
recoveryKey.recover.validKey=Toto je platný obnovovací klíč recoveryKey.recover.correctKey=Toto je platný obnovovací klíč
recoveryKey.printout.heading=Obnovovací klíč Cryptomator\n"%s"\n recoveryKey.printout.heading=Obnovovací klíč Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Resetovat recoveryKey.recover.resetBtn=Resetovat
+30 -19
View File
@@ -123,6 +123,10 @@ unlock.success.description=Indholdet i boksen "%s" er nu tilgængeligt der hvor
unlock.success.rememberChoice=Husk mit valg. Spørg ikke igen unlock.success.rememberChoice=Husk mit valg. Spørg ikke igen
unlock.success.revealBtn=Vis drev unlock.success.revealBtn=Vis drev
## Failure ## Failure
unlock.error.customPath.message=Kan ikke montere boks til brugerdefineret sti
unlock.error.customPath.description.notSupported=Hvis du ønsker at fortsætte med at bruge den brugerdefinerede sti, skal du gå til præferencer og vælge en type drev der understøtter det. Hvis ikke, skal du gå til boksens indstillinger og vælge et understøttet monteringspunkt.
unlock.error.customPath.description.notExists=Den brugerdefinerede monteringssti eksisterer ikke. Opret den enten i dit lokale filsystem eller skift monteringssti i boksens indstillinger.
unlock.error.customPath.description.generic=Du har valgt en brugerdefineret monteringssti til denne boks, men det mislykkedes med beskeden: %s
## Hub ## Hub
hub.noKeychain.message=Kan ikke tilgå enhedsnøgle hub.noKeychain.message=Kan ikke tilgå enhedsnøgle
hub.noKeychain.description=En enhedsnøgle er påkrævet for at låse Hub bokse op. Enhedsnøglen er sikret i en nøglering. For at fortsætte, aktivér “%s” og vælg en nøglering i indstillingerne. hub.noKeychain.description=En enhedsnøgle er påkrævet for at låse Hub bokse op. Enhedsnøglen er sikret i en nøglering. For at fortsætte, aktivér “%s” og vælg en nøglering i indstillingerne.
@@ -150,9 +154,6 @@ hub.registerFailed.description=Der opstod en fejl i navngivnings-processen. Kig
hub.unauthorized.message=Adgang nægtet hub.unauthorized.message=Adgang nægtet
hub.unauthorized.description=Din enhed er endnu ikke blevet godkendt til at få adgang til denne boks. Spørg boks-ejeren om godkendelse. hub.unauthorized.description=Din enhed er endnu ikke blevet godkendt til at få adgang til denne boks. Spørg boks-ejeren om godkendelse.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Licens overskredet
hub.licenseExceeded.description=Cryptomator Hub har givet adgang til flere brugere end licensen tillader. Kontakt venligst din Hub administrator for at opgradere din licens eller en boks administrator for at fjerne brugere fra bokse.
# Lock # Lock
## Force ## Force
@@ -251,7 +252,7 @@ preferences.title=Præferencer
preferences.general=Generelt preferences.general=Generelt
preferences.general.startHidden=Skjul vinduet når Cryptomator starter preferences.general.startHidden=Skjul vinduet når Cryptomator starter
preferences.general.autoCloseVaults=Lås åbne bokse automatisk, når programmet afsluttes preferences.general.autoCloseVaults=Lås åbne bokse automatisk, når programmet afsluttes
preferences.general.debugLogging=Aktiver fejllogning preferences.general.debugLogging=Aktivér fejllogning
preferences.general.debugDirectory=Vis logfiler preferences.general.debugDirectory=Vis logfiler
preferences.general.autoStart=Start Cryptomator automatisk ved opstart preferences.general.autoStart=Start Cryptomator automatisk ved opstart
preferences.general.keychainBackend=Gem adgangskoder med preferences.general.keychainBackend=Gem adgangskoder med
@@ -271,7 +272,15 @@ preferences.interface.showMinimizeButton=Vis knap til minimering
preferences.interface.showTrayIcon=Vis ikon i system-bakken (kræver genstart) preferences.interface.showTrayIcon=Vis ikon i system-bakken (kræver genstart)
## Volume ## Volume
preferences.volume=Virtuelt drev preferences.volume=Virtuelt drev
preferences.volume.type=Drev type (kræver genstart)
preferences.volume.type.automatic=Automatisk preferences.volume.type.automatic=Automatisk
preferences.volume.tcp.port=TCP port
preferences.volume.supportedFeatures=Den valgte type drev understøtter følgende funktioner:
preferences.volume.feature.mountAuto=Automatisk valg af monteringspunkt
preferences.volume.feature.mountToDir=Brugerdefineret mappe som monteringspunkt
preferences.volume.feature.mountToDriveLetter=Enhedsbogstav som monteringspunkt
preferences.volume.feature.mountFlags=Brugerdefinerede monteringsindstillinger
preferences.volume.feature.readOnly=Skrivebeskyttet montering
## Updates ## Updates
preferences.updates=Opdateringer preferences.updates=Opdateringer
preferences.updates.currentVersion=Nuværende version: %s preferences.updates.currentVersion=Nuværende version: %s
@@ -294,27 +303,21 @@ stats.title=Statistik for %s
stats.cacheHitRate=Cache effektivitet stats.cacheHitRate=Cache effektivitet
## Read ## Read
stats.read.throughput.idle=Læser: afventer stats.read.throughput.idle=Læser: afventer
stats.read.throughput.kibs=Læser: %.2f kiB/s
stats.read.throughput.mibs=Læser: %.2f MiB/s stats.read.throughput.mibs=Læser: %.2f MiB/s
stats.read.total.data.none=Data læst: - stats.read.total.data.none=Data læst: -
stats.read.total.data.kib=Data læst: %.1f kiB
stats.read.total.data.mib=Data læst: %.1f MiB stats.read.total.data.mib=Data læst: %.1f MiB
stats.read.total.data.gib=Data læst: %.1f GiB stats.read.total.data.gib=Data læst: %.1f GiB
stats.decr.total.data.none=Data dekrypteret: - stats.decr.total.data.none=Data dekrypteret: -
stats.decr.total.data.kib=Data dekrypteret: %.1f kiB
stats.decr.total.data.mib=Data dekrypteret: %.1f MiB stats.decr.total.data.mib=Data dekrypteret: %.1f MiB
stats.decr.total.data.gib=Data dekrypteret: %.1f GiB stats.decr.total.data.gib=Data dekrypteret: %.1f GiB
stats.read.accessCount=Totalt antal læsninger: %d stats.read.accessCount=Totalt antal læsninger: %d
## Write ## Write
stats.write.throughput.idle=Skriver: afventer stats.write.throughput.idle=Skriver: afventer
stats.write.throughput.kibs=Skriver: %.2f kiB/s
stats.write.throughput.mibs=Skriver: %.2f MiB/s stats.write.throughput.mibs=Skriver: %.2f MiB/s
stats.write.total.data.none=Data skrevet: - stats.write.total.data.none=Data skrevet: -
stats.write.total.data.kib=Data skrevet: %.1f kiB
stats.write.total.data.mib=Data skrevet: %.1f MiB stats.write.total.data.mib=Data skrevet: %.1f MiB
stats.write.total.data.gib=Data skrevet: %.1f GiB stats.write.total.data.gib=Data skrevet: %.1f GiB
stats.encr.total.data.none=Data krypteret: - stats.encr.total.data.none=Data krypteret: -
stats.encr.total.data.kib=Data krypteret: %.1f kiB
stats.encr.total.data.mib=Data krypteret: %.1f MiB stats.encr.total.data.mib=Data krypteret: %.1f MiB
stats.encr.total.data.gib=Data krypteret: %.1f GiB stats.encr.total.data.gib=Data krypteret: %.1f GiB
stats.write.accessCount=Totalt antal skrivninger: %d stats.write.accessCount=Totalt antal skrivninger: %d
@@ -352,13 +355,17 @@ main.vaultDetail.passwordSavedInKeychain=Adgangskode gemt
main.vaultDetail.unlockedStatus=LÅST OP main.vaultDetail.unlockedStatus=LÅST OP
main.vaultDetail.accessLocation=Boksens indhold er tilgængeligt her: main.vaultDetail.accessLocation=Boksens indhold er tilgængeligt her:
main.vaultDetail.revealBtn=Vis drev main.vaultDetail.revealBtn=Vis drev
main.vaultDetail.copyUri=Kopiér URI
main.vaultDetail.lockBtn=Lås main.vaultDetail.lockBtn=Lås
main.vaultDetail.bytesPerSecondRead=Læser: main.vaultDetail.bytesPerSecondRead=Læser:
main.vaultDetail.bytesPerSecondWritten=Skriver: main.vaultDetail.bytesPerSecondWritten=Skriver:
main.vaultDetail.throughput.idle=afventer main.vaultDetail.throughput.idle=afventer
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Boks statistik main.vaultDetail.stats=Boks statistik
main.vaultDetail.locateEncryptedFileBtn=Find Krypteret Fil
main.vaultDetail.locateEncryptedFileBtn.tooltip=Vælg en fil fra din boks for at finde dens krypterede modpart
main.vaultDetail.encryptedPathsCopied=Stier kopieret!
main.vaultDetail.filePickerTitle=Vælg fil inde i boks
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator kunne ikke finde en boks på denne sti. main.vaultDetail.missing.info=Cryptomator kunne ikke finde en boks på denne sti.
main.vaultDetail.missing.recheck=Kontrollér igen main.vaultDetail.missing.recheck=Kontrollér igen
@@ -373,10 +380,10 @@ main.vaultDetail.error.reload=Genindlæs
main.vaultDetail.error.windowTitle=Fejl ved indlæsning af boks main.vaultDetail.error.windowTitle=Fejl ved indlæsning af boks
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Sådan krypteres filer wrongFileAlert.title=Sådan krypterer du filer
wrongFileAlert.message=Forsøgte du at kryptere disse filer? wrongFileAlert.message=Forsøgte du at kryptere disse filer?
wrongFileAlert.description=For kryptering af filer, skal du bruge det drev som Cryptomator har lavet i din stifinder. wrongFileAlert.description=Til dette formål opretter Cryptomator et drev i din filhåndtering.
wrongFileAlert.instruction.0=For at kryptere filer, gør følgende: wrongFileAlert.instruction.0=Følg disse trin for at kryptere filer:
wrongFileAlert.instruction.1=1. Lås din boks op. wrongFileAlert.instruction.1=1. Lås din boks op.
wrongFileAlert.instruction.2=2. Klik på "Vis drev" for at åbne drevet i din stifinder. wrongFileAlert.instruction.2=2. Klik på "Vis drev" for at åbne drevet i din stifinder.
wrongFileAlert.instruction.3=3. Tilføj filer til drevet. wrongFileAlert.instruction.3=3. Tilføj filer til drevet.
@@ -397,13 +404,17 @@ vaultOptions.general.startHealthCheckBtn=Start sunhedstjek
## Mount ## Mount
vaultOptions.mount=Montering vaultOptions.mount=Montering
vaultOptions.mount.info=Valgmulighederne afhænger af den valgte type drev.
vaultOptions.mount.linkToPreferences=Åbn virtuelle drev præferencer
vaultOptions.mount.readonly=Skrivebeskyttet vaultOptions.mount.readonly=Skrivebeskyttet
vaultOptions.mount.customMountFlags=Brugerdefinerede monterings-flag vaultOptions.mount.customMountFlags=Brugerdefinerede monterings-flag
vaultOptions.mount.winDriveLetterOccupied=optaget vaultOptions.mount.winDriveLetterOccupied=optaget
vaultOptions.mount.mountPoint=Monterings-sted vaultOptions.mount.mountPoint=Monterings-sted
vaultOptions.mount.mountPoint.auto=Vælg automatisk en passende placering vaultOptions.mount.mountPoint.auto=Vælg automatisk en passende placering
vaultOptions.mount.mountPoint.driveLetter=Brug et ledigt drevbogstav vaultOptions.mount.mountPoint.driveLetter=Brug et ledigt drevbogstav
vaultOptions.mount.mountPoint.custom=Brug en valgt mappe
vaultOptions.mount.mountPoint.directoryPickerButton=Vælg… vaultOptions.mount.mountPoint.directoryPickerButton=Vælg…
vaultOptions.mount.mountPoint.directoryPickerTitle=Vælg en mappe
## Master Key ## Master Key
vaultOptions.masterkey=Adgangskode vaultOptions.masterkey=Adgangskode
vaultOptions.masterkey.changePasswordBtn=Skift adgangskode vaultOptions.masterkey.changePasswordBtn=Skift adgangskode
@@ -424,7 +435,7 @@ recoveryKey.display.StorageHints=Opbevar den et meget sikkert sted, som fx:\n
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Nulstil adgangskode recoveryKey.recover.title=Nulstil adgangskode
recoveryKey.recover.prompt=Indtast din gendannelsesnøgle for "%s": recoveryKey.recover.prompt=Indtast din gendannelsesnøgle for "%s":
recoveryKey.recover.validKey=Dette er en gyldig gendannelsesnøgle recoveryKey.recover.correctKey=Dette er en gyldig gendannelsesnøgle
recoveryKey.printout.heading=Cryptomator gendannelsesnøgle\n"%s"\n recoveryKey.printout.heading=Cryptomator gendannelsesnøgle\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Nulstil recoveryKey.recover.resetBtn=Nulstil
@@ -437,11 +448,11 @@ newPassword.promptText=Skriv en ny adgangskode
newPassword.reenterPassword=Bekræft ny adgangskode newPassword.reenterPassword=Bekræft ny adgangskode
newPassword.passwordsMatch=Adgangskoderne er ens! newPassword.passwordsMatch=Adgangskoderne er ens!
newPassword.passwordsDoNotMatch=Adgangskoder stemmer ikke overens newPassword.passwordsDoNotMatch=Adgangskoder stemmer ikke overens
passwordStrength.messageLabel.tooShort=Angiv mindst %d tegn passwordStrength.messageLabel.tooShort=Brug mindst %d tegn
passwordStrength.messageLabel.0=Meget dårlig passwordStrength.messageLabel.0=Meget svag
passwordStrength.messageLabel.1=Dårlig passwordStrength.messageLabel.1=Svag
passwordStrength.messageLabel.2=Rimelig passwordStrength.messageLabel.2=Rimelig
passwordStrength.messageLabel.3=God passwordStrength.messageLabel.3=Stærk
passwordStrength.messageLabel.4=Meget god passwordStrength.messageLabel.4=Meget god
# Quit # Quit
+38 -15
View File
@@ -123,9 +123,13 @@ unlock.success.description=Der Inhalt des Tresors „%s“ ist nun über dessen
unlock.success.rememberChoice=Auswahl merken und nicht mehr fragen unlock.success.rememberChoice=Auswahl merken und nicht mehr fragen
unlock.success.revealBtn=Laufwerk anzeigen unlock.success.revealBtn=Laufwerk anzeigen
## Failure ## Failure
unlock.error.customPath.message=Tresor kann nicht an benutzerdefinierten Pfad eingehängt werden
unlock.error.customPath.description.notSupported=Wenn du den benutzerdefinierten Pfad weiter verwenden möchtest, gehe bitte in die Einstellungen und wähle einen Laufwerkstyp, der ihn unterstützt. Andernfalls gehe zu den Tresoroptionen und wähle einen unterstützten Einhängepunkt.
unlock.error.customPath.description.notExists=Der benutzerdefinierte Einhängepfad existiert nicht. Erstelle ihn entweder in deinem lokalen Dateisystem oder ändere ihn in den Tresoreinstellungen.
unlock.error.customPath.description.generic=Du hast einen benutzerdefinierten Einhängepfad für diesen Tresor ausgewählt, aber die Verwendung ist fehlgeschlagen. Fehlermeldung: %s
## Hub ## Hub
hub.noKeychain.message=Zugriff auf Geräteschlüssel nicht möglich hub.noKeychain.message=Zugriff auf Geräteschlüssel nicht möglich
hub.noKeychain.description=Um Hub Tresore zu entsperren, wird ein Geräteschlüssel benötigt, der mit einem Schlüsselbund gesichert ist. Um fortzufahren, aktiviere “%s” und wähle einen Schlüsselbund in den Einstellungen. hub.noKeychain.description=Zum Entsperren von Hub-Tresoren wird ein Geräteschlüssel benötigt, der in einem Schlüsselbund gesichert ist. Um fortzufahren, aktiviere „%s“ und wähle in den Einstellungen einen Schlüsselbund.
hub.noKeychain.openBtn=Einstellungen öffnen hub.noKeychain.openBtn=Einstellungen öffnen
### Waiting ### Waiting
hub.auth.message=Warten auf Authentifizierung … hub.auth.message=Warten auf Authentifizierung …
@@ -150,9 +154,8 @@ hub.registerFailed.description=Während der Namensvergabe wurde ein Fehler ausge
hub.unauthorized.message=Zugriff verweigert hub.unauthorized.message=Zugriff verweigert
hub.unauthorized.description=Dein Gerät wurde noch nicht für den Zugriff auf diesen Tresor autorisiert. Bitte den Tresorbesitzer, dein Gerät zu autorisieren. hub.unauthorized.description=Dein Gerät wurde noch nicht für den Zugriff auf diesen Tresor autorisiert. Bitte den Tresorbesitzer, dein Gerät zu autorisieren.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Lizenz überschritten hub.invalidLicense.message=Hub-Lizenz ungültig
hub.licenseExceeded.description=Im Cryptomator Hub wurden mehr Benutzern Zugriff gewährt, als dessen Lizenz erlaubt. Bitte kontaktiere deinen Hub-Administrator für ein Lizenz-Upgrade oder einen Tresor-Administrator, um Benutzer aus Tresoren zu entfernen. hub.invalidLicense.description=Die Lizenz deiner Cryptomator-Hub-Instanz ist ungültig. Bitte informiere deinen Hub-Administrator, um die Lizenz zu aktualisieren oder zu erneuern.
# Lock # Lock
## Force ## Force
@@ -241,8 +244,8 @@ health.result.fixStateFilter.fixing=Wird repariert …
health.result.fixStateFilter.fixed=Repariert health.result.fixStateFilter.fixed=Repariert
health.result.fixStateFilter.fixFailed=Reparatur gescheitert health.result.fixStateFilter.fixFailed=Reparatur gescheitert
## Fix Application ## Fix Application
health.fix.fixBtn=Beheben health.fix.fixBtn=Reparieren
health.fix.successTip=Fehlerbehebung erfolgreich health.fix.successTip=Reparatur erfolgreich
health.fix.failTip=Reparatur fehlgeschlagen, siehe Protokoll für Details health.fix.failTip=Reparatur fehlgeschlagen, siehe Protokoll für Details
# Preferences # Preferences
@@ -270,8 +273,17 @@ preferences.interface.interfaceOrientation.rtl=Von rechts nach links
preferences.interface.showMinimizeButton=Schaltfläche zum Minimieren anzeigen preferences.interface.showMinimizeButton=Schaltfläche zum Minimieren anzeigen
preferences.interface.showTrayIcon=Symbol im Infobereich anzeigen (Neustart erforderlich) preferences.interface.showTrayIcon=Symbol im Infobereich anzeigen (Neustart erforderlich)
## Volume ## Volume
preferences.volume=Tresorlaufwerk preferences.volume=Virtuelles Laufwerk
preferences.volume.type=Laufwerkstyp (Neustart erforderlich)
preferences.volume.type.automatic=Automatisch preferences.volume.type.automatic=Automatisch
preferences.volume.docsTooltip=Öffne die Dokumentation, um mehr über die verschiedenen Laufwerkstypen zu erfahren.
preferences.volume.tcp.port=TCP-Port
preferences.volume.supportedFeatures=Der gewählte Laufwerkstyp unterstützt folgende Funktionen:
preferences.volume.feature.mountAuto=Automatische Einhängepunkt Auswahl
preferences.volume.feature.mountToDir=Benutzerdefiniertes Verzeichnis als Einhängepunkt
preferences.volume.feature.mountToDriveLetter=Laufwerkbuchstaben als Einhängepunkt
preferences.volume.feature.mountFlags=Benutzerdefinierte Einhänge-Optionen
preferences.volume.feature.readOnly=Schreibgeschütztes Einhängen
## Updates ## Updates
preferences.updates=Updates preferences.updates=Updates
preferences.updates.currentVersion=Aktuelle Version: %s preferences.updates.currentVersion=Aktuelle Version: %s
@@ -294,27 +306,27 @@ stats.title=Statistiken für %s
stats.cacheHitRate=Cache-Trefferrate stats.cacheHitRate=Cache-Trefferrate
## Read ## Read
stats.read.throughput.idle=Leserate: inaktiv stats.read.throughput.idle=Leserate: inaktiv
stats.read.throughput.kibs=Leserate: %.2f kiB/s stats.read.throughput.kibs=Leserate: %.2f KiB/s
stats.read.throughput.mibs=Leserate: %.2f MiB/s stats.read.throughput.mibs=Leserate: %.2f MiB/s
stats.read.total.data.none=Gelesen: - stats.read.total.data.none=Gelesen: -
stats.read.total.data.kib=Gelesen: %.1f kiB stats.read.total.data.kib=Gelesen: %.1f KiB
stats.read.total.data.mib=Gelesen: %.1f MiB stats.read.total.data.mib=Gelesen: %.1f MiB
stats.read.total.data.gib=Gelesen: %.1f GiB stats.read.total.data.gib=Gelesen: %.1f GiB
stats.decr.total.data.none=Entschlüsselt: - stats.decr.total.data.none=Entschlüsselt: -
stats.decr.total.data.kib=Entschlüsselt: %.1f kiB stats.decr.total.data.kib=Entschlüsselt: %.1f KiB
stats.decr.total.data.mib=Entschlüsselt: %.1f MiB stats.decr.total.data.mib=Entschlüsselt: %.1f MiB
stats.decr.total.data.gib=Entschlüsselt: %.1f GiB stats.decr.total.data.gib=Entschlüsselt: %.1f GiB
stats.read.accessCount=Lesezugriffe: %d stats.read.accessCount=Lesezugriffe: %d
## Write ## Write
stats.write.throughput.idle=Schreibrate: inaktiv stats.write.throughput.idle=Schreibrate: inaktiv
stats.write.throughput.kibs=Schreibrate: %.2f kiB/s stats.write.throughput.kibs=Schreibrate: %.2f KiB/s
stats.write.throughput.mibs=Schreibrate: %.2f MiB/s stats.write.throughput.mibs=Schreibrate: %.2f MiB/s
stats.write.total.data.none=Geschrieben: - stats.write.total.data.none=Geschrieben: -
stats.write.total.data.kib=Geschrieben: %.1f kiB stats.write.total.data.kib=Geschrieben: %.1f KiB
stats.write.total.data.mib=Geschrieben: %.1f MiB stats.write.total.data.mib=Geschrieben: %.1f MiB
stats.write.total.data.gib=Geschrieben: %.1f GiB stats.write.total.data.gib=Geschrieben: %.1f GiB
stats.encr.total.data.none=Verschlüsselt: - stats.encr.total.data.none=Verschlüsselt: -
stats.encr.total.data.kib=Verschlüsselt: %.1f kiB stats.encr.total.data.kib=Verschlüsselt: %.1f KiB
stats.encr.total.data.mib=Verschlüsselt: %.1f MiB stats.encr.total.data.mib=Verschlüsselt: %.1f MiB
stats.encr.total.data.gib=Verschlüsselt: %.1f GiB stats.encr.total.data.gib=Verschlüsselt: %.1f GiB
stats.write.accessCount=Schreibzugriffe: %d stats.write.accessCount=Schreibzugriffe: %d
@@ -352,13 +364,18 @@ main.vaultDetail.passwordSavedInKeychain=Passwort gespeichert
main.vaultDetail.unlockedStatus=ENTSPERRT main.vaultDetail.unlockedStatus=ENTSPERRT
main.vaultDetail.accessLocation=Deine Tresorinhalte sind hier erreichbar: main.vaultDetail.accessLocation=Deine Tresorinhalte sind hier erreichbar:
main.vaultDetail.revealBtn=Laufwerk anzeigen main.vaultDetail.revealBtn=Laufwerk anzeigen
main.vaultDetail.copyUri=URI kopieren
main.vaultDetail.lockBtn=Sperren main.vaultDetail.lockBtn=Sperren
main.vaultDetail.bytesPerSecondRead=Leserate: main.vaultDetail.bytesPerSecondRead=Leserate:
main.vaultDetail.bytesPerSecondWritten=Schreibrate: main.vaultDetail.bytesPerSecondWritten=Schreibrate:
main.vaultDetail.throughput.idle=inaktiv main.vaultDetail.throughput.idle=inaktiv
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Tresorstatistik main.vaultDetail.stats=Tresorstatistik
main.vaultDetail.locateEncryptedFileBtn=Verschlüsselte Datei finden
main.vaultDetail.locateEncryptedFileBtn.tooltip=Wähle eine Datei aus deinem Tresor aus, um das verschlüsselte Gegenstück zu finden
main.vaultDetail.encryptedPathsCopied=Pfade in Zwischenablage kopiert!
main.vaultDetail.filePickerTitle=Datei im Tresor auswählen
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator konnte keinen Tresor mit diesem Pfad finden. main.vaultDetail.missing.info=Cryptomator konnte keinen Tresor mit diesem Pfad finden.
main.vaultDetail.missing.recheck=Erneut prüfen main.vaultDetail.missing.recheck=Erneut prüfen
@@ -397,13 +414,17 @@ vaultOptions.general.startHealthCheckBtn=Integritätsprüfung starten
## Mount ## Mount
vaultOptions.mount=Laufwerk vaultOptions.mount=Laufwerk
vaultOptions.mount.info=Die Optionen hängen vom gewählten Laufwerkstyp ab.
vaultOptions.mount.linkToPreferences=Einstellungen für virtuelles Laufwerk öffnen
vaultOptions.mount.readonly=Schreibgeschützt vaultOptions.mount.readonly=Schreibgeschützt
vaultOptions.mount.customMountFlags=Benutzerdefinierte Einhänge-Optionen vaultOptions.mount.customMountFlags=Benutzerdefinierte Einhänge-Optionen
vaultOptions.mount.winDriveLetterOccupied=belegt vaultOptions.mount.winDriveLetterOccupied=belegt
vaultOptions.mount.mountPoint=Einhängepunkt vaultOptions.mount.mountPoint=Einhängepunkt
vaultOptions.mount.mountPoint.auto=Automatisch einen geeigneten Ort auswählen vaultOptions.mount.mountPoint.auto=Automatisch einen geeigneten Ort auswählen
vaultOptions.mount.mountPoint.driveLetter=Laufwerksbuchstaben zuweisen vaultOptions.mount.mountPoint.driveLetter=Laufwerksbuchstaben zuweisen
vaultOptions.mount.mountPoint.custom=Ausgewähltes Verzeichnis verwenden
vaultOptions.mount.mountPoint.directoryPickerButton=Durchsuchen … vaultOptions.mount.mountPoint.directoryPickerButton=Durchsuchen …
vaultOptions.mount.mountPoint.directoryPickerTitle=Verzeichnis wählen
## Master Key ## Master Key
vaultOptions.masterkey=Passwort vaultOptions.masterkey=Passwort
vaultOptions.masterkey.changePasswordBtn=Passwort ändern vaultOptions.masterkey.changePasswordBtn=Passwort ändern
@@ -424,7 +445,9 @@ recoveryKey.display.StorageHints=Bewahre ihn möglichst sicher auf, z. B.\n •
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Passwort zurücksetzen recoveryKey.recover.title=Passwort zurücksetzen
recoveryKey.recover.prompt=Gib deinen Wiederherstellungsschlüssel für „%s“ ein: recoveryKey.recover.prompt=Gib deinen Wiederherstellungsschlüssel für „%s“ ein:
recoveryKey.recover.validKey=Dies ist ein gültiger Wiederherstellungsschlüssel recoveryKey.recover.correctKey=Dieser Wiederherstellungsschlüssel ist gültig
recoveryKey.recover.wrongKey=Dieser Wiederherstellungsschlüssel gehört zu einem anderen Tresor
recoveryKey.recover.invalidKey=Dieser Wiederherstellungsschlüssel ist ungültig
recoveryKey.printout.heading=Cryptomator-Wiederherstellungsschlüssel\n„%s“\n recoveryKey.printout.heading=Cryptomator-Wiederherstellungsschlüssel\n„%s“\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Zurücksetzen recoveryKey.recover.resetBtn=Zurücksetzen
+13 -11
View File
@@ -154,9 +154,8 @@ hub.registerFailed.description=Παρουσιάστηκε σφάλμα στη δ
hub.unauthorized.message=Δεν επιτρέπεται η πρόσβαση hub.unauthorized.message=Δεν επιτρέπεται η πρόσβαση
hub.unauthorized.description=Η συσκευή σας δεν έχει ακόμη εξουσιοδοτηθεί να έχει πρόσβαση σε αυτή την κρύπτη. Ζητήστε από τον κάτοχο της κρύπτης να την εξουσιοδοτήσει. hub.unauthorized.description=Η συσκευή σας δεν έχει ακόμη εξουσιοδοτηθεί να έχει πρόσβαση σε αυτή την κρύπτη. Ζητήστε από τον κάτοχο της κρύπτης να την εξουσιοδοτήσει.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Υπέρβαση άδειας hub.invalidLicense.message=Μη έγκυρη Άδεια Hub
hub.licenseExceeded.description=Το Cryptomator Hub έχει δώσει πρόσβαση σε περισσότερους χρήστες από ότι επιτρέπει η άδειά του. Παρακαλούμε επικοινωνήστε με το Hub admin για να αναβαθμίσετε την άδεια ή έναν διαχειριστή κρύπτης για να αφαιρέσετε τους χρήστες από τις κρύπτες. hub.invalidLicense.description=Η συνεδρία σας στο Cryptomator Hub έχει μη έγκυρη άδεια χρήσης. Ενημερώστε έναν διαχειριστή του Hub για να αναβαθμίσει ή να ανανεώσει την άδεια χρήσης.
# Lock # Lock
## Force ## Force
@@ -277,6 +276,7 @@ preferences.interface.showTrayIcon=Εμφάνιση εικονιδίου tray (
preferences.volume=Εικονικός δίσκος preferences.volume=Εικονικός δίσκος
preferences.volume.type=Τύπος Τόμου (απαιτείται επανεκκίνηση) preferences.volume.type=Τύπος Τόμου (απαιτείται επανεκκίνηση)
preferences.volume.type.automatic=Αυτόματα preferences.volume.type.automatic=Αυτόματα
preferences.volume.docsTooltip=Ανοίξτε τις οδηγίες για να μάθετε περισσότερα σχετικά με τους διαφορετικούς τύπους τόμων.
preferences.volume.tcp.port=Θύρα TCP preferences.volume.tcp.port=Θύρα TCP
preferences.volume.supportedFeatures=Ο επιλεγμένος τύπος τόμου υποστηρίζει τις ακόλουθες δυνατότητες: preferences.volume.supportedFeatures=Ο επιλεγμένος τύπος τόμου υποστηρίζει τις ακόλουθες δυνατότητες:
preferences.volume.feature.mountAuto=Αυτόματη επιλογή σημείου προσάρτησης preferences.volume.feature.mountAuto=Αυτόματη επιλογή σημείου προσάρτησης
@@ -306,27 +306,27 @@ stats.title=Στατιστικά για %s
stats.cacheHitRate=Ποσοστό χρήσης cache stats.cacheHitRate=Ποσοστό χρήσης cache
## Read ## Read
stats.read.throughput.idle=Ανάγνωση: ηρεμία stats.read.throughput.idle=Ανάγνωση: ηρεμία
stats.read.throughput.kibs=Ανάγνωση: %.2f kiB/s stats.read.throughput.kibs=Ανάγνωση: %.2f KiB/s
stats.read.throughput.mibs=Ανάγνωση: %.2f MiB/s stats.read.throughput.mibs=Ανάγνωση: %.2f MiB/s
stats.read.total.data.none=Ανάγνωση δεδομένων: - stats.read.total.data.none=Ανάγνωση δεδομένων: -
stats.read.total.data.kib=Ανάγνωση δεδομένων: %.1f kiB stats.read.total.data.kib=Ανάγνωση δεδομένων: %.1f KiB
stats.read.total.data.mib=Ανάγνωση δεδομένων: %.1f MiB stats.read.total.data.mib=Ανάγνωση δεδομένων: %.1f MiB
stats.read.total.data.gib=Ανάγνωση δεδομένων: %.1f GiB stats.read.total.data.gib=Ανάγνωση δεδομένων: %.1f GiB
stats.decr.total.data.none=Δεδομένα που αποκρυπτογραφήθηκαν: - stats.decr.total.data.none=Δεδομένα που αποκρυπτογραφήθηκαν: -
stats.decr.total.data.kib=Δεδομένα που αποκρυπτογραφήθηκαν: %.1f kiB stats.decr.total.data.kib=Δεδομένα που αποκρυπτογραφήθηκαν: %.1f KiB
stats.decr.total.data.mib=Δεδομένα που αποκρυπτογραφήθηκαν: %.1f MiB stats.decr.total.data.mib=Δεδομένα που αποκρυπτογραφήθηκαν: %.1f MiB
stats.decr.total.data.gib=Δεδομένα που αποκρυπτογραφήθηκαν: %.1f GiB stats.decr.total.data.gib=Δεδομένα που αποκρυπτογραφήθηκαν: %.1f GiB
stats.read.accessCount=Συνολικές αναγνώσεις: %d stats.read.accessCount=Συνολικές αναγνώσεις: %d
## Write ## Write
stats.write.throughput.idle=Εγγραφή: ηρεμία stats.write.throughput.idle=Εγγραφή: ηρεμία
stats.write.throughput.kibs=Εγγραφή: %.2f kiB/s stats.write.throughput.kibs=Εγγραφή: %.2f KiB/s
stats.write.throughput.mibs=Εγγραφή: %.2f MiB/s stats.write.throughput.mibs=Εγγραφή: %.2f MiB/s
stats.write.total.data.none=Δεδομένα που γράφηκαν: - stats.write.total.data.none=Δεδομένα που γράφηκαν: -
stats.write.total.data.kib=Δεδομένα που γράφτηκαν: %.1f kiB stats.write.total.data.kib=Δεδομένα που γράφτηκαν: %.1f KiB
stats.write.total.data.mib=Δεδομένα που γράφτηκαν: %.1f MiB stats.write.total.data.mib=Δεδομένα που γράφτηκαν: %.1f MiB
stats.write.total.data.gib=Δεδομένα που γράφτηκαν: %.1f GiB stats.write.total.data.gib=Δεδομένα που γράφτηκαν: %.1f GiB
stats.encr.total.data.none=Δεδομένα που κρυπτογραφήθηκαν: - stats.encr.total.data.none=Δεδομένα που κρυπτογραφήθηκαν: -
stats.encr.total.data.kib=Δεδομένα που κρυπτογραφήθηκαν: %.1f kiB stats.encr.total.data.kib=Δεδομένα που κρυπτογραφήθηκαν: %.1f KiB
stats.encr.total.data.mib=Δεδομένα που κρυπτογραφήθηκαν: %.1f MiB stats.encr.total.data.mib=Δεδομένα που κρυπτογραφήθηκαν: %.1f MiB
stats.encr.total.data.gib=Δεδομένα που κρυπτογραφήθηκαν: %.1f GiB stats.encr.total.data.gib=Δεδομένα που κρυπτογραφήθηκαν: %.1f GiB
stats.write.accessCount=Συνολικές εγγραφές: %d stats.write.accessCount=Συνολικές εγγραφές: %d
@@ -369,7 +369,7 @@ main.vaultDetail.lockBtn=Κλείδωμα
main.vaultDetail.bytesPerSecondRead=Ανάγνωση: main.vaultDetail.bytesPerSecondRead=Ανάγνωση:
main.vaultDetail.bytesPerSecondWritten=Εγγραφή: main.vaultDetail.bytesPerSecondWritten=Εγγραφή:
main.vaultDetail.throughput.idle=σε αδράνεια main.vaultDetail.throughput.idle=σε αδράνεια
main.vaultDetail.throughput.kbps=%.1f 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=Στατιστικά Vault main.vaultDetail.stats=Στατιστικά Vault
main.vaultDetail.locateEncryptedFileBtn=Εντοπισμός Κρυπτογραφημένου Αρχείου main.vaultDetail.locateEncryptedFileBtn=Εντοπισμός Κρυπτογραφημένου Αρχείου
@@ -445,7 +445,9 @@ recoveryKey.display.StorageHints=Φυλάξτε κάπου που θα είνα
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Επαναφορά Κωδικού Πρόσβασης recoveryKey.recover.title=Επαναφορά Κωδικού Πρόσβασης
recoveryKey.recover.prompt=Εισάγετε το κλειδί ανάκτησης για "%s": recoveryKey.recover.prompt=Εισάγετε το κλειδί ανάκτησης για "%s":
recoveryKey.recover.validKey=Αυτό είναι ένα έγκυρο κλειδί ανάκτησης recoveryKey.recover.correctKey=Αυτό το κλειδί ανάκτησης είναι έγκυρο
recoveryKey.recover.wrongKey=Αυτό το κλειδί ανάκτησης ανήκει σε διαφορετική κρύπτη
recoveryKey.recover.invalidKey=Αυτό το κλειδί ανάκτησης δεν είναι έγκυρο
recoveryKey.printout.heading=Κλειδί ανάκτησης Cryptomator\n"%s"\n recoveryKey.printout.heading=Κλειδί ανάκτησης Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Επαναφορά recoveryKey.recover.resetBtn=Επαναφορά
+13 -11
View File
@@ -154,9 +154,8 @@ hub.registerFailed.description=Ocurrió un error en el nombramiento. Para más d
hub.unauthorized.message=Acceso denegado hub.unauthorized.message=Acceso denegado
hub.unauthorized.description=Su dispositivo aún no ha sido autorizado para acceder a esta bóveda. Pídale al propietario de la bóveda que lo autorice. hub.unauthorized.description=Su dispositivo aún no ha sido autorizado para acceder a esta bóveda. Pídale al propietario de la bóveda que lo autorice.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Licencia excedida hub.invalidLicense.message=Licencia del Hub inválida
hub.licenseExceeded.description=Cryptomator Hub ha dado acceso a más usuarios de los que permite su licencia. Póngase en contacto con su administrador de Hub para actualizar la licencia o un administrador de la bóveda para eliminar usuarios de la misma. hub.invalidLicense.description=Su instancia del Hub de Cryptomator tiene una licencia inválida. Informe a un administrador del Hub para actualizar o renovar la licencia.
# Lock # Lock
## Force ## Force
@@ -277,6 +276,7 @@ preferences.interface.showTrayIcon=Mostrar ícono de bandeja (requiere reiniciar
preferences.volume=Unidad virtual preferences.volume=Unidad virtual
preferences.volume.type=Tipo de volumen (requiere reiniciar) preferences.volume.type=Tipo de volumen (requiere reiniciar)
preferences.volume.type.automatic=Automático preferences.volume.type.automatic=Automático
preferences.volume.docsTooltip=Abra la documentación para saber más sobre los diferentes tipos de volumen.
preferences.volume.tcp.port=Puerto TCP preferences.volume.tcp.port=Puerto TCP
preferences.volume.supportedFeatures=El tipo de volumen elegido admite las siguientes funciones: preferences.volume.supportedFeatures=El tipo de volumen elegido admite las siguientes funciones:
preferences.volume.feature.mountAuto=Selección automática del punto de montaje preferences.volume.feature.mountAuto=Selección automática del punto de montaje
@@ -306,27 +306,27 @@ stats.title=Estadísticas para %s
stats.cacheHitRate=La caché alcanzó la tasa stats.cacheHitRate=La caché alcanzó la tasa
## Read ## Read
stats.read.throughput.idle=Lectura: inactivo stats.read.throughput.idle=Lectura: inactivo
stats.read.throughput.kibs=Lectura: %.2f kiB/s stats.read.throughput.kibs=Lectura: %.2f KiB/s
stats.read.throughput.mibs=Lectura: %.2f MiB/s stats.read.throughput.mibs=Lectura: %.2f MiB/s
stats.read.total.data.none=Datos leídos: - stats.read.total.data.none=Datos leídos: -
stats.read.total.data.kib=Datos leídos: %.1f kiB stats.read.total.data.kib=Datos leídos: %.1f KiB
stats.read.total.data.mib=Datos leídos: %.1f MiB stats.read.total.data.mib=Datos leídos: %.1f MiB
stats.read.total.data.gib=Datos leídos: %.1f GiB stats.read.total.data.gib=Datos leídos: %.1f GiB
stats.decr.total.data.none=Datos descifrados: - stats.decr.total.data.none=Datos descifrados: -
stats.decr.total.data.kib=Datos descifrados: %.1f kiB stats.decr.total.data.kib=Datos descifrados: %.1f KiB
stats.decr.total.data.mib=Datos descifrados: %.1f MiB stats.decr.total.data.mib=Datos descifrados: %.1f MiB
stats.decr.total.data.gib=Datos descifrados: %.1f GiB stats.decr.total.data.gib=Datos descifrados: %.1f GiB
stats.read.accessCount=Total leídos: %d stats.read.accessCount=Total leídos: %d
## Write ## Write
stats.write.throughput.idle=Escritura: inactivo stats.write.throughput.idle=Escritura: inactivo
stats.write.throughput.kibs=Escritura: %.2f kiB/s stats.write.throughput.kibs=Escritura: %.2f KiB/s
stats.write.throughput.mibs=Escritura: %.2f MiB/s stats.write.throughput.mibs=Escritura: %.2f MiB/s
stats.write.total.data.none=Datos escritos: - stats.write.total.data.none=Datos escritos: -
stats.write.total.data.kib=Datos escritos: %.1f kiB stats.write.total.data.kib=Datos escritos: %.1f KiB
stats.write.total.data.mib=Datos escritos: %.1f MiB stats.write.total.data.mib=Datos escritos: %.1f MiB
stats.write.total.data.gib=Datos escritos: %.1f GiB stats.write.total.data.gib=Datos escritos: %.1f GiB
stats.encr.total.data.none=Datos cifrados: - stats.encr.total.data.none=Datos cifrados: -
stats.encr.total.data.kib=Datos cifrados: %.1f kiB stats.encr.total.data.kib=Datos cifrados: %.1f KiB
stats.encr.total.data.mib=Datos cifrados: %.1f MiB stats.encr.total.data.mib=Datos cifrados: %.1f MiB
stats.encr.total.data.gib=Datos cifrados: %.1f GiB stats.encr.total.data.gib=Datos cifrados: %.1f GiB
stats.write.accessCount=Total de escrituras: %d stats.write.accessCount=Total de escrituras: %d
@@ -369,7 +369,7 @@ main.vaultDetail.lockBtn=Bloquear
main.vaultDetail.bytesPerSecondRead=Lectura: main.vaultDetail.bytesPerSecondRead=Lectura:
main.vaultDetail.bytesPerSecondWritten=Escritura: main.vaultDetail.bytesPerSecondWritten=Escritura:
main.vaultDetail.throughput.idle=inactivo main.vaultDetail.throughput.idle=inactivo
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Estadísticas de la bóveda main.vaultDetail.stats=Estadísticas de la bóveda
main.vaultDetail.locateEncryptedFileBtn=Ubicar archivo cifrado main.vaultDetail.locateEncryptedFileBtn=Ubicar archivo cifrado
@@ -445,7 +445,9 @@ recoveryKey.display.StorageHints=Manténgala en algún lugar seguro, p.ej.:\n
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Restablecer contraseña recoveryKey.recover.title=Restablecer contraseña
recoveryKey.recover.prompt=Ingresar la clave de recuperación para "%s": recoveryKey.recover.prompt=Ingresar la clave de recuperación para "%s":
recoveryKey.recover.validKey=Esta es una clave de recuperación válida recoveryKey.recover.correctKey=Esta es una clave de recuperación válida
recoveryKey.recover.wrongKey=Esta clave de recuperación pertenece a una bóveda diferente
recoveryKey.recover.invalidKey=Esta clave de recuperación no es válida
recoveryKey.printout.heading=Clave de recuperación de Cryptomator\n"%s"\n recoveryKey.printout.heading=Clave de recuperación de Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=## Reiniciar contraseña\nrecoveryKey.recover.resetBtn recoveryKey.recover.resetBtn=## Reiniciar contraseña\nrecoveryKey.recover.resetBtn
+15 -1
View File
@@ -16,6 +16,7 @@ generic.button.print=چاپ
# Error # Error
error.message=خطایی رخ داده است error.message=خطایی رخ داده است
error.technicalDetails=جزئیات:
# Defaults # Defaults
defaults.vault.vaultName=گاوصندوق defaults.vault.vaultName=گاوصندوق
@@ -28,13 +29,24 @@ traymenu.vault.lock=قفل
traymenu.vault.reveal=ظاهر traymenu.vault.reveal=ظاهر
# Add Vault Wizard # Add Vault Wizard
addvaultwizard.title=اضافه کردن گاوصندوق
## Welcome ## Welcome
addvaultwizard.welcome.newButton=ساخت گاوصندوق جدید
addvaultwizard.welcome.existingButton=باز کردن گاوصندوق موجود
## New ## New
### Name ### Name
addvaultwizard.new.nameInstruction=یک نام برای گاوصندوق انتخاب کنید
addvaultwizard.new.namePrompt=نام گاوصندوق
### Location ### Location
addvaultwizard.new.locationLabel=مکان ذخیره‌سازی
addvaultwizard.new.directoryPickerLabel=مکان سفارشی
addvaultwizard.new.directoryPickerButton=انتخاب کنید…
addvaultwizard.new.fileAlreadyExists=در حال حاضر یک فایل یا پوشه با همین نام وجود دارد
addvaultwizard.new.validCharacters.numbers=اعداد
### Password ### Password
### Information ### Information
## Existing ## Existing
addvaultwizard.existing.chooseBtn=انتخاب کنید…
## Success ## Success
# Remove Vault # Remove Vault
@@ -57,7 +69,6 @@ unlock.unlockBtn=بازکردن قفل
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.retryBtn=تلاش مجدد lock.forced.retryBtn=تلاش مجدد
@@ -100,6 +111,7 @@ main.closeBtn.tooltip=ببند
main.supporterCertificateMissing.tooltip=لطفا کمک مالی در نظر بگیرند main.supporterCertificateMissing.tooltip=لطفا کمک مالی در نظر بگیرند
## Vault List ## Vault List
main.vaultlist.contextMenu.lock=قفل main.vaultlist.contextMenu.lock=قفل
main.vaultlist.addVaultBtn=اضافه کردن گاوصندوق
## Vault Detail ## Vault Detail
### Welcome ### Welcome
### Locked ### Locked
@@ -113,8 +125,10 @@ main.vaultDetail.lockBtn=قفل
# Vault Options # Vault Options
## General ## General
vaultOptions.general.vaultName=نام گاوصندوق
## Mount ## Mount
vaultOptions.mount.mountPoint.directoryPickerButton=انتخاب کنید…
## Master Key ## Master Key
@@ -75,7 +75,6 @@ unlock.unlockBtn=I-unlock
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.retryBtn=Subukan muli lock.forced.retryBtn=Subukan muli
+21 -19
View File
@@ -67,7 +67,7 @@ addvaultwizard.new.generateRecoveryKeyChoice.no=Non merci, je n'oublierai pas mo
### Information ### Information
addvault.new.readme.storageLocation.fileName=IMPORTANT.rtf addvault.new.readme.storageLocation.fileName=IMPORTANT.rtf
addvault.new.readme.storageLocation.1=Fichiers de coffre-fort 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 l'emplacement de stockage de votre coffre.
addvault.new.readme.storageLocation.3=NE PAS addvault.new.readme.storageLocation.3=NE PAS
addvault.new.readme.storageLocation.4=• modifier les fichiers dans ce répertoire ni addvault.new.readme.storageLocation.4=• modifier les fichiers dans ce répertoire ni
addvault.new.readme.storageLocation.5=• coller de fichier à chiffrer dans ce répertoire. addvault.new.readme.storageLocation.5=• coller de fichier à chiffrer dans ce répertoire.
@@ -124,8 +124,8 @@ unlock.success.rememberChoice=Se souvenir de mon choix et ne plus me le demander
unlock.success.revealBtn=Révéler le lecteur unlock.success.revealBtn=Révéler le lecteur
## Failure ## Failure
unlock.error.customPath.message=Impossible de monter le coffre vers le chemin personnalisé unlock.error.customPath.message=Impossible de monter le coffre vers le chemin personnalisé
unlock.error.customPath.description.notSupported=Si vous souhaitez continuer à utiliser le chemin personnalisé, veuillez aller dans les préférences et sélectionner un type de volume qui le supporte. Sinon, allez dans les options du coffre et choisissez un point de montage pris en charge. unlock.error.customPath.description.notSupported=Si vous souhaitez continuer à utiliser le chemin personnalisé, veuillez aller dans les préférences et sélectionner un type de volume qui le prend en charge. Sinon, allez dans les options du coffre et choisissez un point de montage pris en charge.
unlock.error.customPath.description.notExists=Le chemin de montage personnalisé n'existe pas. Créez le dans votre système de fichiers local ou modifiez-le dans les options du coffre. unlock.error.customPath.description.notExists=Le chemin de montage personnalisé n'existe pas. Créez-le dans votre système de fichiers local ou modifiez-le dans les options du coffre.
unlock.error.customPath.description.generic=Vous avez sélectionné un chemin de montage personnalisé pour ce coffre, mais son utilisation a échoué avec le message : %s unlock.error.customPath.description.generic=Vous avez sélectionné un chemin de montage personnalisé pour ce coffre, mais son utilisation a échoué avec le message : %s
## Hub ## Hub
hub.noKeychain.message=Impossible d'accéder à la clé du périphérique hub.noKeychain.message=Impossible d'accéder à la clé du périphérique
@@ -154,9 +154,8 @@ hub.registerFailed.description=Le processus de nommage a retourné une erreur. P
hub.unauthorized.message=Accès refusé hub.unauthorized.message=Accès refusé
hub.unauthorized.description=Votre appareil n'a pas encore été autorisé à accéder à ce coffre. Demandez au propriétaire du coffre de l'autoriser. hub.unauthorized.description=Votre appareil n'a pas encore été autorisé à accéder à ce coffre. Demandez au propriétaire du coffre de l'autoriser.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Licence dépassée hub.invalidLicense.message=Licence de Hub invalide
hub.licenseExceeded.description=Cryptomator Hub a donné accès à plus d'utilisateurs qu'autorisé par la licence. Veuillez contacter votre administrateur Hub pour étendre la licence ou un administrateur de coffre pour supprimer des utilisateurs des coffres. hub.invalidLicense.description=Votre instance Cryptomator Hub a une licence invalide. Veuillez informer un administrateur Hub pour la mettre à niveau ou la renouveler.
# Lock # Lock
## Force ## Force
@@ -275,13 +274,14 @@ preferences.interface.showMinimizeButton=Afficher le bouton Réduire
preferences.interface.showTrayIcon=Montrer l'icône de service (redémarrage nécessaire) preferences.interface.showTrayIcon=Montrer l'icône de service (redémarrage nécessaire)
## Volume ## Volume
preferences.volume=Disque virtuel preferences.volume=Disque virtuel
preferences.volume.type=Type de volume (nécessite un redémarrage) preferences.volume.type=Type de volume (redémarrage requis)
preferences.volume.type.automatic=Automatique preferences.volume.type.automatic=Automatique
preferences.volume.docsTooltip=Consultez la documentation pour en savoir plus sur les différents types de volumes.
preferences.volume.tcp.port=Port TCP preferences.volume.tcp.port=Port TCP
preferences.volume.supportedFeatures=Le type de volume choisi prend en charge les fonctionnalités suivantes : preferences.volume.supportedFeatures=Le type de volume choisi prend en charge les fonctionnalités suivantes :
preferences.volume.feature.mountAuto=Sélection automatique de point de montage preferences.volume.feature.mountAuto=Sélection automatique du point de montage
preferences.volume.feature.mountToDir=Répertoire personnalisé comme point de montage preferences.volume.feature.mountToDir=Répertoire personnalisé comme point de montage
preferences.volume.feature.mountToDriveLetter=Lettre du lecteur comme point de montage preferences.volume.feature.mountToDriveLetter=Lettre de lecteur comme point de montage
preferences.volume.feature.mountFlags=Options de montage personnalisées preferences.volume.feature.mountFlags=Options de montage personnalisées
preferences.volume.feature.readOnly=Montage en lecture seule preferences.volume.feature.readOnly=Montage en lecture seule
## Updates ## Updates
@@ -306,27 +306,27 @@ stats.title=Statistiques sur %s
stats.cacheHitRate=Taux de réussite du cache stats.cacheHitRate=Taux de réussite du cache
## Read ## Read
stats.read.throughput.idle=Lecture : inactif stats.read.throughput.idle=Lecture : inactif
stats.read.throughput.kibs=Lecture : %.2f kiB/s stats.read.throughput.kibs=Lecture : %.2f Mio/s
stats.read.throughput.mibs=Lecture : %.2f Mo/s stats.read.throughput.mibs=Lecture : %.2f Mo/s
stats.read.total.data.none=Lecture des données : - stats.read.total.data.none=Lecture des données : -
stats.read.total.data.kib=Lecture des données : %.1f kiO stats.read.total.data.kib=Lecture des données : %.1f kio
stats.read.total.data.mib=Lecture des données : %.1f MiO stats.read.total.data.mib=Lecture des données : %.1f MiO
stats.read.total.data.gib=Lecture des données : %.1f GiO stats.read.total.data.gib=Lecture des données : %.1f GiO
stats.decr.total.data.none=Données déchiffrées: - stats.decr.total.data.none=Données déchiffrées: -
stats.decr.total.data.kib=Données déchiffrées: %.1f kiO stats.decr.total.data.kib=Données déchiffrées: %.1f kio
stats.decr.total.data.mib=Données déchiffrées: %.1f MiO stats.decr.total.data.mib=Données déchiffrées: %.1f MiO
stats.decr.total.data.gib=Données déchiffrées: %.1f GiO stats.decr.total.data.gib=Données déchiffrées: %.1f GiO
stats.read.accessCount=Total des lectures: %d stats.read.accessCount=Total des lectures: %d
## Write ## Write
stats.write.throughput.idle=Écriture : inactif stats.write.throughput.idle=Écriture : inactif
stats.write.throughput.kibs=Écriture : %.2f kiO/s stats.write.throughput.kibs=Écriture : %.2f kio/s
stats.write.throughput.mibs=Écriture : %.2f Mo/s stats.write.throughput.mibs=Écriture : %.2f Mo/s
stats.write.total.data.none=Données écrites : - stats.write.total.data.none=Données écrites : -
stats.write.total.data.kib=Données écrites : %.1f kiO stats.write.total.data.kib=Données écrites : %.1f kio
stats.write.total.data.mib=Données écrites : %.1f MiO stats.write.total.data.mib=Données écrites : %.1f MiO
stats.write.total.data.gib=Données écrites : %.1f GiO stats.write.total.data.gib=Données écrites : %.1f GiO
stats.encr.total.data.none=Données chiffrées : - stats.encr.total.data.none=Données chiffrées : -
stats.encr.total.data.kib=Données chiffrées: %.1f kiO stats.encr.total.data.kib=Données chiffrées: %.1f kio
stats.encr.total.data.mib=Données chiffrées: %.1f MiO stats.encr.total.data.mib=Données chiffrées: %.1f MiO
stats.encr.total.data.gib=Données chiffrées: %.1f GiO stats.encr.total.data.gib=Données chiffrées: %.1f GiO
stats.write.accessCount=Total des écritures: %d stats.write.accessCount=Total des écritures: %d
@@ -353,7 +353,7 @@ main.vaultlist.contextMenu.reveal=Afficher le lecteur
main.vaultlist.addVaultBtn=Ajouter un volume chiffré main.vaultlist.addVaultBtn=Ajouter un volume chiffré
## Vault Detail ## Vault Detail
### Welcome ### Welcome
main.vaultDetail.welcomeOnboarding=Merci d'avoir choisi Cryptomateur pour protéger vos fichiers. Si vous avez besoin d'aide, consultez nos guides de démarrage : main.vaultDetail.welcomeOnboarding=Merci d'avoir choisi Cryptomator pour protéger vos fichiers. Si vous avez besoin d'aide, consultez nos guides de démarrage :
### Locked ### Locked
main.vaultDetail.lockedStatus=VERROUILLÉ main.vaultDetail.lockedStatus=VERROUILLÉ
main.vaultDetail.unlockBtn=Déverrouiller… main.vaultDetail.unlockBtn=Déverrouiller…
@@ -369,7 +369,7 @@ main.vaultDetail.lockBtn=Verrouiller
main.vaultDetail.bytesPerSecondRead=Lecture : main.vaultDetail.bytesPerSecondRead=Lecture :
main.vaultDetail.bytesPerSecondWritten=Écriture: main.vaultDetail.bytesPerSecondWritten=Écriture:
main.vaultDetail.throughput.idle=inactif main.vaultDetail.throughput.idle=inactif
main.vaultDetail.throughput.kbps=%.1f Ko/s main.vaultDetail.throughput.kbps=%.1f kio/s
main.vaultDetail.throughput.mbps=%.1f Mo/s main.vaultDetail.throughput.mbps=%.1f Mo/s
main.vaultDetail.stats=Statistiques du volume chiffré main.vaultDetail.stats=Statistiques du volume chiffré
main.vaultDetail.locateEncryptedFileBtn=Localiser le fichier chiffré main.vaultDetail.locateEncryptedFileBtn=Localiser le fichier chiffré
@@ -424,7 +424,7 @@ vaultOptions.mount.mountPoint.auto=Choisir automatiquement un emplacement approp
vaultOptions.mount.mountPoint.driveLetter=Utiliser la lettre du lecteur assignée vaultOptions.mount.mountPoint.driveLetter=Utiliser la lettre du lecteur assignée
vaultOptions.mount.mountPoint.custom=Utiliser le répertoire choisi vaultOptions.mount.mountPoint.custom=Utiliser le répertoire choisi
vaultOptions.mount.mountPoint.directoryPickerButton=Choisir... vaultOptions.mount.mountPoint.directoryPickerButton=Choisir...
vaultOptions.mount.mountPoint.directoryPickerTitle=Choisissez un dossier vaultOptions.mount.mountPoint.directoryPickerTitle=Choisissez un répertoire
## Master Key ## Master Key
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
@@ -445,7 +445,9 @@ recoveryKey.display.StorageHints=Gardez-la dans un endroit sûr, par ex. :\n •
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Réinitialiser le mot de passe recoveryKey.recover.title=Réinitialiser le mot de passe
recoveryKey.recover.prompt=Entrez votre clé de récupération pour "%s": recoveryKey.recover.prompt=Entrez votre clé de récupération pour "%s":
recoveryKey.recover.validKey=Cette clé de récupération est valide recoveryKey.recover.correctKey=Cette clé de récupération est correcte
recoveryKey.recover.wrongKey=Cette clé de récupération appartient à un autre coffre
recoveryKey.recover.invalidKey=Cette clé de récupération n'est pas valide
recoveryKey.printout.heading=Clé de récupération Cryptomator "%s"\n recoveryKey.printout.heading=Clé de récupération Cryptomator "%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Réinitialiser recoveryKey.recover.resetBtn=Réinitialiser
@@ -50,7 +50,6 @@ error.message=Produciuse un erro
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.retryBtn=Tentar de novo lock.forced.retryBtn=Tentar de novo
+159 -2
View File
@@ -123,37 +123,60 @@ unlock.success.description=הנעילה ל-"%s" בוטלה בהצלחה! הכס
unlock.success.rememberChoice=זכור בחירה, אל תראה שוב unlock.success.rememberChoice=זכור בחירה, אל תראה שוב
unlock.success.revealBtn=חשוף את הכונן unlock.success.revealBtn=חשוף את הכונן
## Failure ## Failure
unlock.error.customPath.message=כשלון בקישור הכספת לנתיב הידני שהוגדר
unlock.error.customPath.description.notSupported=אם ברצונך להשתמש בנתיב ידני, אנא גש להעדפות ובחר סוג volume שתומך בכך. אחרת, לך לאפשרויות הכספת ובחר אפשרות יעד קישור נתמך.
unlock.error.customPath.description.notExists=יעד הקישור הידני לא קיים. או שתיצור אותו במערכת הקבצים המקומית או שנה אותו באפשרויות הכספת.
unlock.error.customPath.description.generic=אתה בחרת באפשרות יעד קישור ידני לכספת זו, אבל השימוש בו נכשל עם ההודעה: %s
## Hub ## Hub
hub.noKeychain.message=לא ניתן לגשת למפתח המכשיר hub.noKeychain.message=לא ניתן לגשת למפתח המכשיר
hub.noKeychain.description=כדאי לשחרר כספות האב נדרש מפתח מכשיר שיאובטח בצרור מפתחות. כדאי להמשיך, אפשר ״%s״ ובחר את צרור המפתחות בהעדפות.
hub.noKeychain.openBtn=פתח העדפות
### Waiting ### Waiting
hub.auth.message=ממתין לאימות… hub.auth.message=ממתין לאימות…
hub.auth.description=אתה אמור להיות מופנה אוטומטית למסך ההזדהות.
hub.auth.loginLink=לא הופנת? לחצן כאן לפתיחה.
### Receive Key ### Receive Key
hub.receive.message=מעבד תשובה…
hub.receive.description=Cryptomator מקבל ומעבד את התשובה מה- האב. אנא המתן.
### Register Device ### Register Device
hub.register.message=שם המכשיר נדרש
hub.register.description=נראה שזו הגישה הראשונה ל- האב ממכשיר זה. כדי לזהות אותך למתן הרשאות, עליך לתת שם למכשיר זה.
hub.register.nameLabel=שם מכשיר hub.register.nameLabel=שם מכשיר
hub.register.occupiedMsg=שם זה נמצא כבר בשימוש hub.register.occupiedMsg=שם זה נמצא כבר בשימוש
hub.register.registerBtn=אישור hub.register.registerBtn=אישור
### Registration Success ### Registration Success
hub.registerSuccess.message=שם המכשיר hub.registerSuccess.message=שם המכשיר
hub.registerSuccess.description=כדי לגשת לכספת, המכשיר שלך צריך לקבל הרשאה על ידי בעלי הכספת.
### Registration Failed ### Registration Failed
hub.registerFailed.message=הגדרת שם למכשיר נכשלה hub.registerFailed.message=הגדרת שם למכשיר נכשלה
hub.registerFailed.description=ארעה שגיאה בתהליך עם השם. לפרטים נוספים הסתכל בלוג האפליקציה.
### Unauthorized ### Unauthorized
hub.unauthorized.message=הגישה נדחתה hub.unauthorized.message=הגישה נדחתה
hub.unauthorized.description=המכשיר שלך טרם אושר לגשת לכספת הזאת. יש לבקש אישור גישה מבעל הכספת. hub.unauthorized.description=המכשיר שלך טרם אושר לגשת לכספת הזאת. יש לבקש אישור גישה מבעל הכספת.
### License Exceeded ### License Exceeded
hub.invalidLicense.message=רישיון האב לא תקף
hub.invalidLicense.description=הרישיון שמותקן במופע ה- Cryptomator האב שלך אינו תקף. אנא ידע את מנהל ההאב שלך לשדרג או לחדש את הרישיון.
# Lock # Lock
## Force ## Force
lock.forced.message=הנעילה נכשלה lock.forced.message=הנעילה נכשלה
lock.forced.description=נעילת ״%s״ נחסמה על ידי פעולות ממתינות או קבצים פתוחים. אתה יכול לנעול את הכספת בכוח, אולם הפרעה לפעולת קריאה וכתיבה עשויה לגרום לאובדן מידע לא שמור.
lock.forced.retryBtn=נסה שנית lock.forced.retryBtn=נסה שנית
lock.forced.forceBtn=הכרח נעילה lock.forced.forceBtn=הכרח נעילה
## Failure ## Failure
lock.fail.message=נעילת הכספת נשכלה. lock.fail.message=נעילת הכספת נשכלה.
lock.fail.description=לא ניתן היה לנעול את הכספת ״%s״. וודא שכל העבודה הלא שמורה נשמרת במקום אחר ושפעולות קריאה/כתיבה חשובות מסתיימות. כדי לסגור את הכספת, הרוג את התהליך של Cryptomator.
# Migration # Migration
migration.title=שדרג הכספת migration.title=שדרג הכספת
## Start ## Start
migration.start.header=שדרג הכספת migration.start.header=שדרג הכספת
migration.start.text=כדי לפתוח את הכספת ״%s״ בגרסה החדשה הזו של Cryptomator, צריך לשדרג את הכספת לגרסה חדשה יותר. לפני שתעשה זאת, כדאי שתדע:
migration.start.remarkUndone=פעולת השדרוג אינה הפיכה.
migration.start.remarkVersions=גרסאות ישנות יותר של Cryptomator לא יוכלו לפתוח את הכספת המשודרגת.
migration.start.remarkCanRun=עליך לוודא שכל מכשיר ממנו אתה ניגש לכספת יכול להפעיל את גרסה זו של Cryptomator.
migration.start.remarkSynced=עליך לוודא שהכספת שלך מסונכרנת במלואה במכשיר זה ובמכשירים האחרים, לפני שדרוגה.
migration.start.confirm=קראתי והבנתי את המידע לעיל
## Run ## Run
migration.run.enterPassword=הכנס/י סיסמה עבור "%s" migration.run.enterPassword=הכנס/י סיסמה עבור "%s"
migration.run.startMigrationBtn=העבר הכספת migration.run.startMigrationBtn=העבר הכספת
@@ -170,22 +193,60 @@ 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.moreInfo=ניתן עדיין לפתוח את כספת זו עם גרסה ישנה יותר. להנחיות כיצד לבצע מיגרציה ידנית של הכספת בקר ב-
# Health Check # Health Check
## Start ## Start
health.title=בדיקת בריאות של ״%s״
health.intro.header=בדיקת תקינות health.intro.header=בדיקת תקינות
health.intro.text=בדיקת בריאות היא אוסף בדיקות לאיתור, ואולי תיקון, של בעיות במבנה הפנימי של הכספת. שים לב ש:
health.intro.remarkSync=ודא שכל המכשירים מסונכרנים באופן מלא, זה פותר את רוב הבעיות.
health.intro.remarkFix=לא ניתן לפתור את כל הבעיות.
health.intro.remarkBackup=עם המידע משובש, רק גיבוי יכול לעזור.
health.intro.affirmation=קראתי והבנתי את המידע לעיל
## Start Failure ## Start Failure
health.fail.header=שגיאה בהעלאת הגדרות הכספת
health.fail.ioError=ארעה שגיאה במהלך הגישה והקריאה של קובץ ההגדרות.
health.fail.parseError=ארעה שגיאה בעת עיבוד קובץ הגדרות הכספת.
health.fail.moreInfo=מידע נוסף health.fail.moreInfo=מידע נוסף
## Check Selection ## Check Selection
health.checkList.description=בחר בדיקות ברשימה בצד שמאל או השתמש בלחצנים מטה.
health.checkList.selectAllButton=בחירת כל הבדיקות
health.checkList.deselectAllButton=הסר בחירה של כל הבדיקות
health.check.runBatchBtn=הרץ את הבדיקות הנבחרות
## Detail view ## Detail view
health.check.detail.noSelectedCheck=לתוצאות, בחר בדיקת בריאות שהסתיימה ברשימה משמאל.
health.check.detail.checkScheduled=הבדיקה מתוזמנת.
health.check.detail.checkRunning=הבדיקה רצה כרגע…
health.check.detail.checkSkipped=הבדיקה לא נבחרה לרוץ.
health.check.detail.checkFinished=הבדיקה הסתיימה בהצלחה. health.check.detail.checkFinished=הבדיקה הסתיימה בהצלחה.
health.check.detail.checkFinishedAndFound=הבדיקה הסתיימה. ניתן לבחון את התוצאות. health.check.detail.checkFinishedAndFound=הבדיקה הסתיימה. ניתן לבחון את התוצאות.
health.check.detail.checkFailed=הבדיקה נכשלה בשל שגיאה. health.check.detail.checkFailed=הבדיקה נכשלה בשל שגיאה.
health.check.detail.checkCancelled=הבדיקה בוטלה. health.check.detail.checkCancelled=הבדיקה בוטלה.
health.check.detail.listFilters.label=סנן
health.check.detail.fixAllSpecificBtn=תקן הכל מסוג
health.check.exportBtn=יצוא דוחות health.check.exportBtn=יצוא דוחות
## Result view ## Result view
health.result.severityFilter.all=חומרה - הכל
health.result.severityFilter.good=טוב
health.result.severityFilter.info=מידע
health.result.severityFilter.warn=אזהרה
health.result.severityFilter.crit=קריטי
health.result.severityTip.good=חומרה: טוב\nמבנה כספת רגיל.
health.result.severityTip.info=חומרה: מידע\nמבנה כספת קיים, תיקון מומלץ.
health.result.severityTip.warn=חומרה: אזהרה\nמבנה כספת שגוי, מומלץ מאוד לתקן.
health.result.severityTip.crit=חומרה: קריטי\nמבנה כספת שגוי, אומת אובדן מידע.
health.result.fixStateFilter.all=מצב תיקון - הכל
health.result.fixStateFilter.fixable=בר תיקון
health.result.fixStateFilter.notFixable=לא בר תיקון
health.result.fixStateFilter.fixing=מתקן…
health.result.fixStateFilter.fixed=תוקן
health.result.fixStateFilter.fixFailed=התיקון נכשל
## Fix Application ## Fix Application
health.fix.fixBtn=תיקון health.fix.fixBtn=תיקון
health.fix.successTip=התיקון הצליח
health.fix.failTip=התיקון כשל, ראה את הלוג לפרטים
# Preferences # Preferences
preferences.title=העדפות preferences.title=העדפות
@@ -210,16 +271,31 @@ preferences.interface.interfaceOrientation=כיוון ממשק
preferences.interface.interfaceOrientation.ltr=משמאל לימין preferences.interface.interfaceOrientation.ltr=משמאל לימין
preferences.interface.interfaceOrientation.rtl=מימין לשמאל preferences.interface.interfaceOrientation.rtl=מימין לשמאל
preferences.interface.showMinimizeButton=הצג כפתור מזעור preferences.interface.showMinimizeButton=הצג כפתור מזעור
preferences.interface.showTrayIcon=הצג צלמית בשורה מטה (דורש הפעלה מחדש)
## Volume ## Volume
preferences.volume=כונן וירטואלי preferences.volume=כונן וירטואלי
preferences.volume.type=סוג volume (דורש הפעלה מחדש)
preferences.volume.type.automatic=אוטומטי preferences.volume.type.automatic=אוטומטי
preferences.volume.docsTooltip=בכדי ללמוד עוד על סוגי volume ניתן לקרוא את הדוקומנטציה.
preferences.volume.tcp.port=פורט TCP
preferences.volume.supportedFeatures=סוג ה- volume שבחרת תומך ביכולות הבאות:
preferences.volume.feature.mountAuto=נבחרה בחירת נקודת קישור אוטומטית
preferences.volume.feature.mountToDir=הגדרת תיקיה כנקודת קישור
preferences.volume.feature.mountToDriveLetter=אות כונן כנקודת קישור
preferences.volume.feature.mountFlags=בחירת אפשרויות לקישור
preferences.volume.feature.readOnly=קישור במצב קריאה בלבד
## Updates ## Updates
preferences.updates=עדכונים preferences.updates=עדכונים
preferences.updates.currentVersion=הגרסה הנוכחית: %s
preferences.updates.autoUpdateCheck=בצע בדיקת עדכונים אוטומטית
preferences.updates.checkNowBtn=בדוק כעת
preferences.updates.updateAvailable=שדרוג לגרסה %s זמין.
## Contribution ## Contribution
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=הדבק את קוד תעודת התומך כאן
#<-- Add entries for donations and code/translation/documentation contribution --> #<-- Add entries for donations and code/translation/documentation contribution -->
## About ## About
@@ -230,44 +306,98 @@ stats.title=סטטיסטיקה עבור %s
stats.cacheHitRate=אחוז שימוש במטמון stats.cacheHitRate=אחוז שימוש במטמון
## Read ## Read
stats.read.throughput.idle=קריאה: ללא פעילות stats.read.throughput.idle=קריאה: ללא פעילות
stats.read.throughput.kibs=קריאה: %.2f kiB/s stats.read.throughput.kibs=נקרא: %.2f קילובייט/שניה
stats.read.throughput.mibs=קריאה: %.2f MiB/s stats.read.throughput.mibs=קריאה: %.2f MiB/s
stats.read.total.data.none=מידע שנקרא: - stats.read.total.data.none=מידע שנקרא: -
stats.read.total.data.kib=מידע שנקרא: %.1f קילובייט
stats.read.total.data.mib=מידע שנקרא: %.1f מגהבייט
stats.read.total.data.gib=מידע שנקרא: %.1f גיגהבייט
stats.decr.total.data.none=מידע שפוענח: -
stats.decr.total.data.kib=מידע שפוענח: %.1f קילובייט
stats.decr.total.data.mib=מידע שפוענח: %.1f מגהבייט
stats.decr.total.data.gib=מידע שפוענח: %.1f גיגהבייט
stats.read.accessCount=מספר קריאות כולל: %d
## Write ## Write
stats.write.throughput.idle=כתיבה: ללא פעילות
stats.write.throughput.kibs=נכתב: %.2f קילובייט/שניה
stats.write.throughput.mibs=כתיבה: %.2f מגהבייט/שניה
stats.write.total.data.none=מידע שנכתב: -
stats.write.total.data.kib=מידע שנכתב: %.1f קילובייט
stats.write.total.data.mib=מידע שנכתב: %.1f מגהבייט
stats.write.total.data.gib=מידע שנכתב: %.1f גיגהבייט
stats.encr.total.data.none=מידע שהוצפן: -
stats.encr.total.data.kib=מידע שהוצפן: %.1f קילובייט
stats.encr.total.data.mib=מידע שהוצפן: %.1f מגהבייט
stats.encr.total.data.gib=מידע שהוצפן: %.1f גיגהבייט
stats.write.accessCount=מספר כתיבות כולל: %d
## Accesses ## Accesses
stats.access.current=גישה: %d
stats.access.total=מספר גישות כולל: %d
# Main Window # Main Window
main.closeBtn.tooltip=סגור main.closeBtn.tooltip=סגור
main.minimizeBtn.tooltip=מזער
main.preferencesBtn.tooltip=העדפות main.preferencesBtn.tooltip=העדפות
main.debugModeEnabled.tooltip=מצב דיבאג מופעל
main.supporterCertificateMissing.tooltip=תרומתך תתקבל בברכה main.supporterCertificateMissing.tooltip=תרומתך תתקבל בברכה
## Vault List ## Vault List
main.vaultlist.emptyList.onboardingInstruction=לחץ כאן להוספת כספת
main.vaultlist.contextMenu.remove=הסר…
main.vaultlist.contextMenu.lock=נעילה main.vaultlist.contextMenu.lock=נעילה
main.vaultlist.contextMenu.unlock=שחרר נעילה…
main.vaultlist.contextMenu.unlockNow=בטל נעילה כעת main.vaultlist.contextMenu.unlockNow=בטל נעילה כעת
main.vaultlist.contextMenu.vaultoptions=הצג את אפשרויות הכספת
main.vaultlist.contextMenu.reveal=חשוף את הכונן main.vaultlist.contextMenu.reveal=חשוף את הכונן
main.vaultlist.addVaultBtn=יצירת כספת main.vaultlist.addVaultBtn=יצירת כספת
## Vault Detail ## Vault Detail
### Welcome ### Welcome
main.vaultDetail.welcomeOnboarding=תודה שבחרת ב- Cryptomator להגן על הקבצים שלך. אם אתה זקוק לסיוע, אנא עיין במדריכים שלנו:
### Locked ### Locked
main.vaultDetail.lockedStatus=נעול
main.vaultDetail.unlockBtn=שחרר נעילה…
main.vaultDetail.unlockNowBtn=בטל נעילה כעת main.vaultDetail.unlockNowBtn=בטל נעילה כעת
main.vaultDetail.optionsBtn=אפשרויות הכספת
main.vaultDetail.passwordSavedInKeychain=הסיסמה נשמרה
### Unlocked ### Unlocked
main.vaultDetail.unlockedStatus=לא נעול
main.vaultDetail.accessLocation=תוכן הכספת שלך נגיש כאן:
main.vaultDetail.revealBtn=חשוף את הכונן main.vaultDetail.revealBtn=חשוף את הכונן
main.vaultDetail.copyUri=העתק קישור כתובת
main.vaultDetail.lockBtn=נעילה main.vaultDetail.lockBtn=נעילה
main.vaultDetail.bytesPerSecondRead=קריאה:
main.vaultDetail.bytesPerSecondWritten=כתיבה:
main.vaultDetail.throughput.idle=ללא פעילות
main.vaultDetail.throughput.kbps=%.1f קילובייט/שניה
main.vaultDetail.throughput.mbps=%.1f מגהביט לשניה
main.vaultDetail.stats=סטטיסטיקת הכספת
main.vaultDetail.locateEncryptedFileBtn=מצא קבצים מוצפנים main.vaultDetail.locateEncryptedFileBtn=מצא קבצים מוצפנים
main.vaultDetail.locateEncryptedFileBtn.tooltip=בחר קובץ מהכספת שלך על מנת לאתר את הקובץ התואם המוצפן main.vaultDetail.locateEncryptedFileBtn.tooltip=בחר קובץ מהכספת שלך על מנת לאתר את הקובץ התואם המוצפן
main.vaultDetail.encryptedPathsCopied=הנתיבים הועתקו ללוח! main.vaultDetail.encryptedPathsCopied=הנתיבים הועתקו ללוח!
main.vaultDetail.filePickerTitle=בחר קובץ בתוך הכספת main.vaultDetail.filePickerTitle=בחר קובץ בתוך הכספת
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator לא הצליח למצוא כספת בנתיב זה.
main.vaultDetail.missing.recheck=בדיקה נוספת
main.vaultDetail.missing.remove=הסר מרשימה הכספות…
main.vaultDetail.missing.changeLocation=שנה את מיקום הכספת…
### Needs Migration ### Needs Migration
main.vaultDetail.migrateButton=שדרג הכספת main.vaultDetail.migrateButton=שדרג הכספת
main.vaultDetail.migratePrompt=צריך לשדרג את הכספת שלך לגרסה חדשה לפני שניתן לגשת אליה
### Error ### Error
main.vaultDetail.error.info=ארעה שגיאה בהעלאת הכספת מהדיסק.
main.vaultDetail.error.reload=ריענון main.vaultDetail.error.reload=ריענון
main.vaultDetail.error.windowTitle=שגיאה בטעינת הכספת main.vaultDetail.error.windowTitle=שגיאה בטעינת הכספת
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=איך להצפין קבצים
wrongFileAlert.message=האם ניסית להצפין את הקבצים האלו? wrongFileAlert.message=האם ניסית להצפין את הקבצים האלו?
wrongFileAlert.description=לצורך כך, Cryptomator מספקת volume במנהל הקבצים של המערכת.
wrongFileAlert.instruction.0=כדי להצפין את הקבצים, בצע את השלבים הבאים:
wrongFileAlert.instruction.1=1. פתחו את הכספת. wrongFileAlert.instruction.1=1. פתחו את הכספת.
wrongFileAlert.instruction.2=2. לחץ על ״הצג״ לפתיחת ה- volume במנהל הקבצים.
wrongFileAlert.instruction.3=3. הוסף את הקבצים שלך ל- volume הזה.
wrongFileAlert.link=לסיוע נוסף, בקר ב-
# Vault Options # Vault Options
## General ## General
@@ -275,17 +405,32 @@ vaultOptions.general=כללי
vaultOptions.general.vaultName=שם הכספת vaultOptions.general.vaultName=שם הכספת
vaultOptions.general.autoLock.lockAfterTimePart1=נעילה לאחר חוסר שימוש של vaultOptions.general.autoLock.lockAfterTimePart1=נעילה לאחר חוסר שימוש של
vaultOptions.general.autoLock.lockAfterTimePart2=דקות vaultOptions.general.autoLock.lockAfterTimePart2=דקות
vaultOptions.general.unlockAfterStartup=פתח את הכספת בהפעלה של Cryptomator
vaultOptions.general.actionAfterUnlock=לאחר שחרור נעילה מוצלח
vaultOptions.general.actionAfterUnlock.ignore=אל תעשה דבר
vaultOptions.general.actionAfterUnlock.reveal=חשוף את הכונן vaultOptions.general.actionAfterUnlock.reveal=חשוף את הכונן
vaultOptions.general.actionAfterUnlock.ask=שאל
vaultOptions.general.startHealthCheckBtn=התחל בדיקת בריאות
## Mount ## Mount
vaultOptions.mount=קישור
vaultOptions.mount.info=האפשרויות תלויות בסוג ה- volume הנבחר.
vaultOptions.mount.linkToPreferences=פתח את העדפות הכונן הוירטואלי
vaultOptions.mount.readonly=קריאה בלבד vaultOptions.mount.readonly=קריאה בלבד
vaultOptions.mount.customMountFlags=דגלים ידנים לקישור
vaultOptions.mount.winDriveLetterOccupied=בשימוש vaultOptions.mount.winDriveLetterOccupied=בשימוש
vaultOptions.mount.mountPoint=נקודת עיגון vaultOptions.mount.mountPoint=נקודת עיגון
vaultOptions.mount.mountPoint.auto=בחר אוטומטית מיקום מתאים
vaultOptions.mount.mountPoint.driveLetter=השתמש באות הכונן המוקצאת
vaultOptions.mount.mountPoint.custom=השתמש בתיקיה שנבחרה
vaultOptions.mount.mountPoint.directoryPickerButton=בחר... vaultOptions.mount.mountPoint.directoryPickerButton=בחר...
vaultOptions.mount.mountPoint.directoryPickerTitle=בחר תיקיה
## Master Key ## Master Key
vaultOptions.masterkey=סיסמה vaultOptions.masterkey=סיסמה
vaultOptions.masterkey.changePasswordBtn=שנה סיסמה vaultOptions.masterkey.changePasswordBtn=שנה סיסמה
vaultOptions.masterkey.forgetSavedPasswordBtn=שכח סיסמה שמורה vaultOptions.masterkey.forgetSavedPasswordBtn=שכח סיסמה שמורה
vaultOptions.masterkey.recoveryKeyExplanation=מפתח שחזור הינו הדרך היחידה לשחזור הגישה לכספת אם תאבד את הסיסמה.
vaultOptions.masterkey.showRecoveryKeyBtn=הצג את מפתח השחזור
vaultOptions.masterkey.recoverPasswordBtn=איפוס סיסמה vaultOptions.masterkey.recoverPasswordBtn=איפוס סיסמה
@@ -295,9 +440,14 @@ recoveryKey.display.title=הצגת מפתח השחזור
recoveryKey.create.message=דרושה סיסמה recoveryKey.create.message=דרושה סיסמה
recoveryKey.create.description=נא להזין את הססמא ל "%s" בכדי להציג את מפתח השחזור. recoveryKey.create.description=נא להזין את הססמא ל "%s" בכדי להציג את מפתח השחזור.
recoveryKey.display.description=המפתח שחזור שלהלן ניתן לשימוש בכדי לשחזר גישה ל "%s": recoveryKey.display.description=המפתח שחזור שלהלן ניתן לשימוש בכדי לשחזר גישה ל "%s":
recoveryKey.display.StorageHints=שמור אותו במקום מאוד בטוח, לדוגמה:\n • שמור אותו במנהל סיסמאות\n • שמור אותו בדיסק און קי\n • הדפס אותו על נייר
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=איפוס סיסמה recoveryKey.recover.title=איפוס סיסמה
recoveryKey.recover.prompt=הקש את מפתח השחזור שלך עבור ״%s״:
recoveryKey.recover.correctKey=מפתח ה recovery נכון
recoveryKey.recover.wrongKey=מפתח ה recovery שייך ל vault אחר
recoveryKey.recover.invalidKey=מפתח ה recovery שגוי
recoveryKey.printout.heading=מפתח שחזור של Cryptomator\n"%s"\n recoveryKey.printout.heading=מפתח שחזור של Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=איפוס recoveryKey.recover.resetBtn=איפוס
@@ -306,6 +456,11 @@ recoveryKey.recover.resetSuccess.message=איפוס סיסמה הצליח
recoveryKey.recover.resetSuccess.description=ניתן לפתוח את הכספת עם הסיסמה החדשה. recoveryKey.recover.resetSuccess.description=ניתן לפתוח את הכספת עם הסיסמה החדשה.
# New Password # New Password
newPassword.promptText=הקש סיסמה חדשה
newPassword.reenterPassword=לאימות, הקש שוב את הסיסמא החדשה
newPassword.passwordsMatch=הסיסמאות תואמות!
newPassword.passwordsDoNotMatch=הסיסמאות אינם תואמות
passwordStrength.messageLabel.tooShort=השתמש בלפחות %d תווים
passwordStrength.messageLabel.0=חלשה מאוד passwordStrength.messageLabel.0=חלשה מאוד
passwordStrength.messageLabel.1=חלשה passwordStrength.messageLabel.1=חלשה
passwordStrength.messageLabel.2=סבירה passwordStrength.messageLabel.2=סבירה
@@ -315,8 +470,10 @@ passwordStrength.messageLabel.4=חזקה מאוד
# Quit # Quit
quit.title=יציאה quit.title=יציאה
quit.message=קיימים vaults פתוחים quit.message=קיימים vaults פתוחים
quit.description=נא אשר שאתה רוצה לצאת. Cryptomator יבצע נעילה מסודרת של כל הכספות הפתוחות למניעת אובדן מידע.
quit.lockAndQuitBtn=נעילה ויציאה quit.lockAndQuitBtn=נעילה ויציאה
# Forced Quit # Forced Quit
quit.forced.message=חלק מה vaults לא היו ניתנים לנעילה quit.forced.message=חלק מה vaults לא היו ניתנים לנעילה
quit.forced.description=נעילה כספות נחסמה על ידי תהליכים ממתינים או קבצים פתוחים. אתה יכול לנעול את הכספת בכוח, אולם הפרעה לפעולת קריאה וכתיבה עשויה לגרום לאובדן מידע לא שמור.
quit.forced.forceAndQuitBtn=נעילה בכח ויציאה quit.forced.forceAndQuitBtn=נעילה בכח ויציאה
@@ -128,7 +128,6 @@ hub.register.registerBtn=पुष्टि करें
hub.unauthorized.message=प्रवेश अस्वीकृत hub.unauthorized.message=प्रवेश अस्वीकृत
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.message=लॉक करना विफल हुआ lock.forced.message=लॉक करना विफल हुआ
@@ -123,7 +123,6 @@ hub.register.registerBtn=Potvrdi
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.message=Zaključavanje neuspješno lock.forced.message=Zaključavanje neuspješno
@@ -241,27 +240,21 @@ stats.title=Statistika za %s
stats.cacheHitRate=Stopa pogodaka predmemorije stats.cacheHitRate=Stopa pogodaka predmemorije
## Read ## Read
stats.read.throughput.idle=Čitanje: mirovanje stats.read.throughput.idle=Čitanje: mirovanje
stats.read.throughput.kibs=Čitanje: %.2f kiB/s
stats.read.throughput.mibs=Čitanje: %.2f MiB/s stats.read.throughput.mibs=Čitanje: %.2f MiB/s
stats.read.total.data.none=Podataka pročitano: - stats.read.total.data.none=Podataka pročitano: -
stats.read.total.data.kib=Podataka pročitano: %.1f kiB
stats.read.total.data.mib=Podataka pročitano: %.1f MiB stats.read.total.data.mib=Podataka pročitano: %.1f MiB
stats.read.total.data.gib=Podataka pročitano: %.1f GiB stats.read.total.data.gib=Podataka pročitano: %.1f GiB
stats.decr.total.data.none=Podataka dešifrirano: - stats.decr.total.data.none=Podataka dešifrirano: -
stats.decr.total.data.kib=Podataka dešifrirano: %.1f kiB
stats.decr.total.data.mib=Podataka dešifrirano: %.1f MiB stats.decr.total.data.mib=Podataka dešifrirano: %.1f MiB
stats.decr.total.data.gib=Podataka dešifrirano: %.1f GiB stats.decr.total.data.gib=Podataka dešifrirano: %.1f GiB
stats.read.accessCount=Ukupno čitanja: %d stats.read.accessCount=Ukupno čitanja: %d
## Write ## Write
stats.write.throughput.idle=Pisanje: mirovanje stats.write.throughput.idle=Pisanje: mirovanje
stats.write.throughput.kibs=Pisanje: %.2f kiB/s
stats.write.throughput.mibs=Pisanje: %.2f MiB/s stats.write.throughput.mibs=Pisanje: %.2f MiB/s
stats.write.total.data.none=Podataka zapisano: - stats.write.total.data.none=Podataka zapisano: -
stats.write.total.data.kib=Podataka zapisano: %.1f kiB
stats.write.total.data.mib=Podataka zapisano: %.1f MiB stats.write.total.data.mib=Podataka zapisano: %.1f MiB
stats.write.total.data.gib=Podataka zapisano: %.1f GiB stats.write.total.data.gib=Podataka zapisano: %.1f GiB
stats.encr.total.data.none=Podataka šifrirano: - stats.encr.total.data.none=Podataka šifrirano: -
stats.encr.total.data.kib=Podataka šifrirano: %.1f kiB
stats.encr.total.data.mib=Podataka šifrirano: %.1f MiB stats.encr.total.data.mib=Podataka šifrirano: %.1f MiB
stats.encr.total.data.gib=Podataka šifrirano: %.1f GiB stats.encr.total.data.gib=Podataka šifrirano: %.1f GiB
stats.write.accessCount=Ukupno pisanja: %d stats.write.accessCount=Ukupno pisanja: %d
@@ -301,7 +294,6 @@ main.vaultDetail.lockBtn=Zaključaj
main.vaultDetail.bytesPerSecondRead=Čitanje: main.vaultDetail.bytesPerSecondRead=Čitanje:
main.vaultDetail.bytesPerSecondWritten=Pisanje: main.vaultDetail.bytesPerSecondWritten=Pisanje:
main.vaultDetail.throughput.idle=neaktivan main.vaultDetail.throughput.idle=neaktivan
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statistika trezora main.vaultDetail.stats=Statistika trezora
### Missing ### Missing
@@ -365,7 +357,7 @@ recoveryKey.display.StorageHints=Držite ga na sigurnom mjestu, npr.:\n • Pohr
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt=Unesite ključ za oporavak za "%s": recoveryKey.recover.prompt=Unesite ključ za oporavak za "%s":
recoveryKey.recover.validKey=Ovo je valjani ključ za oporavak recoveryKey.recover.correctKey=Ovo je valjani ključ za oporavak
recoveryKey.printout.heading=Cryptomator-ov ključ za oporavak\n"%s"\n recoveryKey.printout.heading=Cryptomator-ov ključ za oporavak\n"%s"\n
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
+6 -10
View File
@@ -105,7 +105,7 @@ unlock.savePassword=Jelszó megjegyzése
unlock.unlockBtn=Feloldás unlock.unlockBtn=Feloldás
## Select ## Select
unlock.chooseMasterkey.description=Nem található a tároló kulcsfájlja a várt helyen. Kérjük válassza ki a kulcsfájlt manuálisan. unlock.chooseMasterkey.description=Nem található a tároló kulcsfájlja a várt helyen. Kérjük válassza ki a kulcsfájlt manuálisan.
unlock.chooseMasterkey.filePickerTitle=Kulcsfájl kiválasztása unlock.chooseMasterkey.filePickerTitle=Mesterkulcs fájl kiválasztása
## Success ## Success
unlock.success.description="%s" sikreresen feloldásra került! Mostmár hozzáférhet a virtuális trezorhoz. unlock.success.description="%s" sikreresen feloldásra került! Mostmár hozzáférhet a virtuális trezorhoz.
unlock.success.rememberChoice=Jegyezze meg a választást és ne mutassa többet unlock.success.rememberChoice=Jegyezze meg a választást és ne mutassa többet
@@ -115,12 +115,13 @@ unlock.success.revealBtn=Széf megjelenítése
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
hub.register.occupiedMsg=Ez a név már használatban van
hub.register.registerBtn=Megerősítés
### Registration Success ### Registration Success
### Registration Failed ### Registration Failed
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.message=A lezárás sikertelen volt lock.forced.message=A lezárás sikertelen volt
@@ -238,27 +239,21 @@ stats.title=Statisztika ehhez %s
stats.cacheHitRate=Gyorsítótár találati arány stats.cacheHitRate=Gyorsítótár találati arány
## Read ## Read
stats.read.throughput.idle=Olvasás: tétlen stats.read.throughput.idle=Olvasás: tétlen
stats.read.throughput.kibs=Olvasás: %.2f kiB/s
stats.read.throughput.mibs=Olvasás: %.2f MiB/s stats.read.throughput.mibs=Olvasás: %.2f MiB/s
stats.read.total.data.none=Olvasott adat: - stats.read.total.data.none=Olvasott adat: -
stats.read.total.data.kib=Olvasott adat: %.1f kiB
stats.read.total.data.mib=Olvasott adat: %.1f MiB stats.read.total.data.mib=Olvasott adat: %.1f MiB
stats.read.total.data.gib=Olvasott adat: %.1f GiB stats.read.total.data.gib=Olvasott adat: %.1f GiB
stats.decr.total.data.none=Dekódolt adat: - stats.decr.total.data.none=Dekódolt adat: -
stats.decr.total.data.kib=Dekódolt adat: %.1f kiB
stats.decr.total.data.mib=Dekódolt adat: %.1f MiB stats.decr.total.data.mib=Dekódolt adat: %.1f MiB
stats.decr.total.data.gib=Dekódolt adat: %.1f GiB stats.decr.total.data.gib=Dekódolt adat: %.1f GiB
stats.read.accessCount=Összes olvasás: %d stats.read.accessCount=Összes olvasás: %d
## Write ## Write
stats.write.throughput.idle=Írás: tétlen stats.write.throughput.idle=Írás: tétlen
stats.write.throughput.kibs=Írás: %.2f kiB/s
stats.write.throughput.mibs=Írás: %.2f MiB/s stats.write.throughput.mibs=Írás: %.2f MiB/s
stats.write.total.data.none=Írva: - stats.write.total.data.none=Írva: -
stats.write.total.data.kib=Írott adat: %.1f kiB
stats.write.total.data.mib=Írott adat: %.1f MiB stats.write.total.data.mib=Írott adat: %.1f MiB
stats.write.total.data.gib=Írott adat: %.1f GiB stats.write.total.data.gib=Írott adat: %.1f GiB
stats.encr.total.data.none=Titkosított adat: - stats.encr.total.data.none=Titkosított adat: -
stats.encr.total.data.kib=Titkosított adat: %.1f kiB
stats.encr.total.data.mib=Titkosított adat: %.1f MiB stats.encr.total.data.mib=Titkosított adat: %.1f MiB
stats.encr.total.data.gib=Titkosított adat: %.1f GiB stats.encr.total.data.gib=Titkosított adat: %.1f GiB
stats.write.accessCount=Összes írás: %d stats.write.accessCount=Összes írás: %d
@@ -298,7 +293,6 @@ main.vaultDetail.lockBtn=Zárolás
main.vaultDetail.bytesPerSecondRead=Olvasás: main.vaultDetail.bytesPerSecondRead=Olvasás:
main.vaultDetail.bytesPerSecondWritten=Írás: main.vaultDetail.bytesPerSecondWritten=Írás:
main.vaultDetail.throughput.idle=tétlen main.vaultDetail.throughput.idle=tétlen
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Széf statisztika main.vaultDetail.stats=Széf statisztika
### Missing ### Missing
@@ -362,7 +356,9 @@ recoveryKey.display.StorageHints=Tartsa nagyon biztonságos helyen. pl.:\n •T
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt=Írja be a visszaállítási kulcsát a következőhöz "%s": recoveryKey.recover.prompt=Írja be a visszaállítási kulcsát a következőhöz "%s":
recoveryKey.recover.validKey=Ez egy érvényes visszaállítási kulcs recoveryKey.recover.correctKey=Ez a visszaállítási kulcs érvényes
recoveryKey.recover.wrongKey=Ez a visszaállítási kulcs egy másik széfhez tartozik
recoveryKey.recover.invalidKey=Ez a visszaállítási kulcs nem érvényes
recoveryKey.printout.heading=Cryptomator visszaállítási kulcs\n"%s"\n recoveryKey.printout.heading=Cryptomator visszaállítási kulcs\n"%s"\n
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
@@ -123,7 +123,6 @@ hub.register.registerBtn=Konfirmasi
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.message=Gagal mengunci lock.forced.message=Gagal mengunci
@@ -241,27 +240,21 @@ stats.title=Statistik untuk %s
stats.cacheHitRate=Tingkat Hit Cache stats.cacheHitRate=Tingkat Hit Cache
## Read ## Read
stats.read.throughput.idle=Baca: diam stats.read.throughput.idle=Baca: diam
stats.read.throughput.kibs=Baca: %.2f kiB/detik
stats.read.throughput.mibs=Baca: %.2f MiB/detik stats.read.throughput.mibs=Baca: %.2f MiB/detik
stats.read.total.data.none=Data dibaca: - stats.read.total.data.none=Data dibaca: -
stats.read.total.data.kib=Data dibaca: %.1f kiB
stats.read.total.data.mib=Data dibaca: %.1f MiB stats.read.total.data.mib=Data dibaca: %.1f MiB
stats.read.total.data.gib=Data dibaca: %.1f GiB stats.read.total.data.gib=Data dibaca: %.1f GiB
stats.decr.total.data.none=Data terdekripsi: - stats.decr.total.data.none=Data terdekripsi: -
stats.decr.total.data.kib=Data terdekripsi: %.1f kiB
stats.decr.total.data.mib=Data terdeksripsi: %.1f MiB stats.decr.total.data.mib=Data terdeksripsi: %.1f MiB
stats.decr.total.data.gib=Data terdeksripsi: %.1f GiB stats.decr.total.data.gib=Data terdeksripsi: %.1f GiB
stats.read.accessCount=Total dibaca: %d stats.read.accessCount=Total dibaca: %d
## Write ## Write
stats.write.throughput.idle=Tulis: diam stats.write.throughput.idle=Tulis: diam
stats.write.throughput.kibs=Tulis: %.2f kiB/detik
stats.write.throughput.mibs=Tulis: %.2f MiB/detik stats.write.throughput.mibs=Tulis: %.2f MiB/detik
stats.write.total.data.none=Data tertulis: - stats.write.total.data.none=Data tertulis: -
stats.write.total.data.kib=Data tertulis: %.1f kiB
stats.write.total.data.mib=Data tertulis: %.1f MiB stats.write.total.data.mib=Data tertulis: %.1f MiB
stats.write.total.data.gib=Data tertulis: %.1f GiB stats.write.total.data.gib=Data tertulis: %.1f GiB
stats.encr.total.data.none=Data terenkripsi: - stats.encr.total.data.none=Data terenkripsi: -
stats.encr.total.data.kib=Data terenkripsi: %.1f kiB
stats.encr.total.data.mib=Data terenkripsi: %.1f MiB stats.encr.total.data.mib=Data terenkripsi: %.1f MiB
stats.encr.total.data.gib=Data terenkripsi: %.1f GiB stats.encr.total.data.gib=Data terenkripsi: %.1f GiB
stats.write.accessCount=Total ditulis: %d stats.write.accessCount=Total ditulis: %d
@@ -301,7 +294,6 @@ main.vaultDetail.lockBtn=Gembok
main.vaultDetail.bytesPerSecondRead=Read: main.vaultDetail.bytesPerSecondRead=Read:
main.vaultDetail.bytesPerSecondWritten=Write: main.vaultDetail.bytesPerSecondWritten=Write:
main.vaultDetail.throughput.idle=idle main.vaultDetail.throughput.idle=idle
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/detik main.vaultDetail.throughput.mbps=%.1f MiB/detik
main.vaultDetail.stats=Statistik Vault main.vaultDetail.stats=Statistik Vault
### Missing ### Missing
@@ -365,7 +357,7 @@ recoveryKey.display.StorageHints=Simpan di tempat yang sangat aman, misal.:\n
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt=Masukkan kunci pemulihan untuk "%s": recoveryKey.recover.prompt=Masukkan kunci pemulihan untuk "%s":
recoveryKey.recover.validKey=Ini adalah kunci pemulihan yang valid recoveryKey.recover.correctKey=Ini adalah kunci pemulihan yang valid
recoveryKey.printout.heading=Kunci Pemulihan Cryptomator\n"%s"\n recoveryKey.printout.heading=Kunci Pemulihan Cryptomator\n"%s"\n
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
+28 -11
View File
@@ -123,6 +123,10 @@ unlock.success.description="%s" sbloccato correttamente! La tua cassaforte è or
unlock.success.rememberChoice=Ricorda la scelta, non mostrarmelo più unlock.success.rememberChoice=Ricorda la scelta, non mostrarmelo più
unlock.success.revealBtn=Rivela l'Unità unlock.success.revealBtn=Rivela l'Unità
## Failure ## Failure
unlock.error.customPath.message=Impossibile montare la cassaforte sul percorso personalizzato
unlock.error.customPath.description.notSupported=Se desideri continuare a utilizzare il percorso personalizzato, vai alle preferenze e seleziona un tipo di volume che lo supporta. Altrimenti, vai alle opzioni della cassaforte e scegli un punto di montaggio supportato.
unlock.error.customPath.description.notExists=Il percorso di mount personalizzato non esiste. Crealo nel tuo file system locale o cambialo nelle opzioni della cassaforte.
unlock.error.customPath.description.generic=Hai selezionato un percorso di montaggio personalizzato per questa cassaforte, ma il suo utilizzo è fallito col messaggio: %s
## Hub ## Hub
hub.noKeychain.message=Impossibile accedere alla chiave del dispositivo hub.noKeychain.message=Impossibile accedere alla chiave del dispositivo
hub.noKeychain.description=Per sbloccare le casseforti Hub, è necessaria una chiave del dispositivo, che è protetta tramite un portachiavi. Per procedere, abilita "%s" e seleziona un portachiavi nelle preferenze. hub.noKeychain.description=Per sbloccare le casseforti Hub, è necessaria una chiave del dispositivo, che è protetta tramite un portachiavi. Per procedere, abilita "%s" e seleziona un portachiavi nelle preferenze.
@@ -150,9 +154,6 @@ hub.registerFailed.description=Si è verificato un errore nel processo di nomina
hub.unauthorized.message=Accesso negato hub.unauthorized.message=Accesso negato
hub.unauthorized.description=Il tuo dispositivo non è ancora stato autorizzato ad accedere a questa cassaforte. Chiedi al proprietario della cassaforte di autorizzarlo. hub.unauthorized.description=Il tuo dispositivo non è ancora stato autorizzato ad accedere a questa cassaforte. Chiedi al proprietario della cassaforte di autorizzarlo.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Licenza scaduta
hub.licenseExceeded.description=Cryptomator Hub ha dato accesso a più utenti rispetto ai suoi permessi di licenza. Contatta il tuo amministratore Hub per aggiornare la licenza o un amministratore del vault per rimuovere gli utenti dalle cassaforte.
# Lock # Lock
## Force ## Force
@@ -271,7 +272,15 @@ preferences.interface.showMinimizeButton=Mostra il pulsante minimizza
preferences.interface.showTrayIcon=Mostra l'icona della barra d'applicazioni (richiede il riavvio) preferences.interface.showTrayIcon=Mostra l'icona della barra d'applicazioni (richiede il riavvio)
## Volume ## Volume
preferences.volume=Unità Virtuale preferences.volume=Unità Virtuale
preferences.volume.type=Tipo di volume (richiede riavvio)
preferences.volume.type.automatic=Automatico preferences.volume.type.automatic=Automatico
preferences.volume.tcp.port=Porta TCP
preferences.volume.supportedFeatures=Il tipo di volume scelto supporta le seguenti caratteristiche:
preferences.volume.feature.mountAuto=Selezione automatica del punto di montaggio
preferences.volume.feature.mountToDir=Directory personalizzata come punto di montaggio
preferences.volume.feature.mountToDriveLetter=Lettera dispositivo come punto di montaggio
preferences.volume.feature.mountFlags=Opzioni di montaggio personalizzate
preferences.volume.feature.readOnly=Montaggio di sola lettura
## Updates ## Updates
preferences.updates=Aggiornamenti preferences.updates=Aggiornamenti
preferences.updates.currentVersion=Versione Corrente: %s preferences.updates.currentVersion=Versione Corrente: %s
@@ -294,27 +303,27 @@ stats.title=Statistiche per %s
stats.cacheHitRate=Frequenza di Raggiungimento della Cache stats.cacheHitRate=Frequenza di Raggiungimento 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
stats.read.throughput.mibs=Lettura: %.2f MiB/s stats.read.throughput.mibs=Lettura: %.2f MiB/s
stats.read.total.data.none=Dati letti: - stats.read.total.data.none=Dati letti: -
stats.read.total.data.kib=Dati letti: %.1f kiB stats.read.total.data.kib=Dati letti: %.1f KiB
stats.read.total.data.mib=Dati letti: %.1f MiB stats.read.total.data.mib=Dati letti: %.1f MiB
stats.read.total.data.gib=Dati letti: %.1f GiB stats.read.total.data.gib=Dati letti: %.1f GiB
stats.decr.total.data.none=Dati decrittografati: - stats.decr.total.data.none=Dati decrittografati: -
stats.decr.total.data.kib=Dati decrittografati: %.1f kiB stats.decr.total.data.kib=Dati decriptati: %.1f KiB
stats.decr.total.data.mib=Dati decrittografati: %.1f MiB stats.decr.total.data.mib=Dati decrittografati: %.1f MiB
stats.decr.total.data.gib=Dati decrittografati: %.1f GiB stats.decr.total.data.gib=Dati decrittografati: %.1f GiB
stats.read.accessCount=Letture totali: %d stats.read.accessCount=Letture totali: %d
## Write ## Write
stats.write.throughput.idle=Scrittura: inattivo stats.write.throughput.idle=Scrittura: inattivo
stats.write.throughput.kibs=Scrittura: %.2f kiB/s stats.write.throughput.kibs=Scrittura: %.2f KiB/s
stats.write.throughput.mibs=Scrittura: %.2f MiB/s stats.write.throughput.mibs=Scrittura: %.2f MiB/s
stats.write.total.data.none=Dati scritti: - stats.write.total.data.none=Dati scritti: -
stats.write.total.data.kib=Dati scritti: %.1f kiB stats.write.total.data.kib=Dati scritti: %.1f KiB
stats.write.total.data.mib=Dati scritti: %.1f MiB stats.write.total.data.mib=Dati scritti: %.1f MiB
stats.write.total.data.gib=Dati scritti: %.1f GiB stats.write.total.data.gib=Dati scritti: %.1f GiB
stats.encr.total.data.none=Dati crittografati: - stats.encr.total.data.none=Dati crittografati: -
stats.encr.total.data.kib=Dati crittografati: %.1f kiB stats.encr.total.data.kib=Dati criptati: %.1f KiB
stats.encr.total.data.mib=Dati crittografati: %.1f MiB stats.encr.total.data.mib=Dati crittografati: %.1f MiB
stats.encr.total.data.gib=Dati crittografati: %.1f GiB stats.encr.total.data.gib=Dati crittografati: %.1f GiB
stats.write.accessCount=Scritture totali: %d stats.write.accessCount=Scritture totali: %d
@@ -352,14 +361,18 @@ main.vaultDetail.passwordSavedInKeychain=Password salvata
main.vaultDetail.unlockedStatus=SBLOCCATA main.vaultDetail.unlockedStatus=SBLOCCATA
main.vaultDetail.accessLocation=I contenuti della tua cassaforte sono accessibili qui: main.vaultDetail.accessLocation=I contenuti della tua cassaforte sono accessibili qui:
main.vaultDetail.revealBtn=Rivela Unità main.vaultDetail.revealBtn=Rivela Unità
main.vaultDetail.copyUri=Copia URI
main.vaultDetail.lockBtn=Blocca main.vaultDetail.lockBtn=Blocca
main.vaultDetail.bytesPerSecondRead=Lettura: main.vaultDetail.bytesPerSecondRead=Lettura:
main.vaultDetail.bytesPerSecondWritten=Scrittura: main.vaultDetail.bytesPerSecondWritten=Scrittura:
main.vaultDetail.throughput.idle=inattivo main.vaultDetail.throughput.idle=inattivo
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statistiche della Cassaforte main.vaultDetail.stats=Statistiche della Cassaforte
main.vaultDetail.locateEncryptedFileBtn=Individua File Crittografato
main.vaultDetail.locateEncryptedFileBtn.tooltip=Scegli un file dalla cassaforte per individuare la controparte cifrata
main.vaultDetail.encryptedPathsCopied=Percorsi copiati negli Appunti! main.vaultDetail.encryptedPathsCopied=Percorsi copiati negli Appunti!
main.vaultDetail.filePickerTitle=Seleziona File Nella Cassaforte
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator non è riuscito a trovare una cassaforte in questo percorso. main.vaultDetail.missing.info=Cryptomator non è riuscito a trovare una cassaforte in questo percorso.
main.vaultDetail.missing.recheck=Ricontrolla main.vaultDetail.missing.recheck=Ricontrolla
@@ -398,13 +411,17 @@ vaultOptions.general.startHealthCheckBtn=Avvia il Controllo della Salute
## Mount ## Mount
vaultOptions.mount=Montaggio vaultOptions.mount=Montaggio
vaultOptions.mount.info=Le opzioni dipendono dal tipo di volume selezionato.
vaultOptions.mount.linkToPreferences=Apri le preferenze dell'unità virtuale
vaultOptions.mount.readonly=Sola Lettura vaultOptions.mount.readonly=Sola Lettura
vaultOptions.mount.customMountFlags=Flag di Montaggio Personalizzati vaultOptions.mount.customMountFlags=Flag di Montaggio Personalizzati
vaultOptions.mount.winDriveLetterOccupied=occupato vaultOptions.mount.winDriveLetterOccupied=occupato
vaultOptions.mount.mountPoint=Punto di Montaggio vaultOptions.mount.mountPoint=Punto di Montaggio
vaultOptions.mount.mountPoint.auto=Scegli automaticamente una posizione idonea vaultOptions.mount.mountPoint.auto=Scegli automaticamente una posizione idonea
vaultOptions.mount.mountPoint.driveLetter=Usa la lettera del drive assegnata vaultOptions.mount.mountPoint.driveLetter=Usa la lettera del drive assegnata
vaultOptions.mount.mountPoint.custom=Usa la directory scelta
vaultOptions.mount.mountPoint.directoryPickerButton=Scegli… vaultOptions.mount.mountPoint.directoryPickerButton=Scegli…
vaultOptions.mount.mountPoint.directoryPickerTitle=Scegli una directory
## Master Key ## Master Key
vaultOptions.masterkey=Password vaultOptions.masterkey=Password
vaultOptions.masterkey.changePasswordBtn=Modifica password vaultOptions.masterkey.changePasswordBtn=Modifica password
@@ -425,7 +442,7 @@ recoveryKey.display.StorageHints=Mantienilo da qualche parte molto sicuro, ad es
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Reimposta Password recoveryKey.recover.title=Reimposta Password
recoveryKey.recover.prompt=Inserisci la tua chiave di recupero per "%s": recoveryKey.recover.prompt=Inserisci la tua chiave di recupero per "%s":
recoveryKey.recover.validKey=Questa è una chiave di recupero valida recoveryKey.recover.correctKey=Questa è una chiave di recupero valida
recoveryKey.printout.heading=Chiave di recupero Cryptomator\n"%s"\n recoveryKey.printout.heading=Chiave di recupero Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Reimposta recoveryKey.recover.resetBtn=Reimposta
+16 -11
View File
@@ -126,6 +126,7 @@ unlock.success.revealBtn=ドライブを表示
unlock.error.customPath.message=カスタム パスに金庫をマウントできません unlock.error.customPath.message=カスタム パスに金庫をマウントできません
unlock.error.customPath.description.notSupported=カスタム パスを使い続けたい場合、環境設定に移動してサポートしているボリューム タイプを選択してください。もしくは、金庫のオプションに移動してサポートされるマウント ポイントを選択してください。 unlock.error.customPath.description.notSupported=カスタム パスを使い続けたい場合、環境設定に移動してサポートしているボリューム タイプを選択してください。もしくは、金庫のオプションに移動してサポートされるマウント ポイントを選択してください。
unlock.error.customPath.description.notExists=カスタム マウント パスが存在していません。ローカル ファイルシステムで作成するか、金庫のオプションで変更を加えてください。 unlock.error.customPath.description.notExists=カスタム マウント パスが存在していません。ローカル ファイルシステムで作成するか、金庫のオプションで変更を加えてください。
unlock.error.customPath.description.generic=この金庫のカスタム・マウント・パスを選択しましたが、その使用は次のメッセージで失敗しました: %s
## Hub ## Hub
hub.noKeychain.message=デバイス キーにアクセスできません hub.noKeychain.message=デバイス キーにアクセスできません
hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。 hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。
@@ -153,9 +154,8 @@ hub.registerFailed.description=デバイス名登録中にエラーが発生し
hub.unauthorized.message=アクセスが拒否されました hub.unauthorized.message=アクセスが拒否されました
hub.unauthorized.description=お使いのデバイスはまだこの金庫にアクセスする権限がありません。金庫のオーナーに権限を与えてもらってください。 hub.unauthorized.description=お使いのデバイスはまだこの金庫にアクセスする権限がありません。金庫のオーナーに権限を与えてもらってください。
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=ライセンス数が不足しています hub.invalidLicense.message=ハブライセンスが無効です
hub.licenseExceeded.description=Cryptomator Hubがライセンスの許可よりも多くのユーザーにアクセス権を与えています。ハブ管理者にライセンスをアップグレードするよう連絡するか,金庫の管理者に金庫からユーザーを削除するよう連絡してください。 hub.invalidLicense.description=Cryptomator ハブインスタンスに無効なライセンスがあります。ライセンスをアップグレードまたは更新するには、ハブ管理者に連絡してください。
# Lock # Lock
## Force ## Force
@@ -171,8 +171,11 @@ lock.fail.description=金庫 "%s" を施錠できませんでした。保存さ
migration.title=金庫をアップグレード migration.title=金庫をアップグレード
## Start ## Start
migration.start.header=金庫をアップグレード migration.start.header=金庫をアップグレード
migration.start.text=Cryptomatorのこの新しいバージョンであなたの金庫「%s」を開くには、金庫を新しい形式にアップグレードする必要があります。これを行う前に、次のことを知っておく必要があります:
migration.start.remarkUndone=このアップグレードは取り消すことができません。 migration.start.remarkUndone=このアップグレードは取り消すことができません。
migration.start.remarkVersions=古い Cryptomator では、アップグレードされた金庫を開くことができなくなります。 migration.start.remarkVersions=古い Cryptomator では、アップグレードされた金庫を開くことができなくなります。
migration.start.remarkCanRun=あなたが金庫にアクセスするすべてのデバイスは、Cryptomatorのこのバージョンを実行できることを確認する必要があります。
migration.start.remarkSynced=アップグレードする前に、このデバイスと他のデバイスで、金庫が完全に同期されていることを確認する必要があります。
migration.start.confirm=上記の情報を理解しました。 migration.start.confirm=上記の情報を理解しました。
## Run ## Run
migration.run.enterPassword="%s" のパスワードを入力してください migration.run.enterPassword="%s" のパスワードを入力してください
@@ -273,7 +276,12 @@ preferences.interface.showTrayIcon=トレイアイコンを表示 (再起動が
preferences.volume=仮想ドライブ preferences.volume=仮想ドライブ
preferences.volume.type=ボリューム タイプ (再起動が必要) preferences.volume.type=ボリューム タイプ (再起動が必要)
preferences.volume.type.automatic=自動 preferences.volume.type.automatic=自動
preferences.volume.docsTooltip=異なるボリュームタイプの詳細については、ドキュメントを確認してください。
preferences.volume.tcp.port=TCP ポート preferences.volume.tcp.port=TCP ポート
preferences.volume.supportedFeatures=選択されたボリュームタイプは、以下の機能をサポートしています。
preferences.volume.feature.mountAuto=マウント先の自動選択
preferences.volume.feature.mountToDir=カスタムディレクトリをマウント先に指定
preferences.volume.feature.mountToDriveLetter=ドライブレターをマウント先に指定
preferences.volume.feature.mountFlags=カスタム マウント オプション preferences.volume.feature.mountFlags=カスタム マウント オプション
preferences.volume.feature.readOnly=読み取り専用マウント preferences.volume.feature.readOnly=読み取り専用マウント
## Updates ## Updates
@@ -298,27 +306,21 @@ stats.title=%s の統計情報
stats.cacheHitRate=キャッシュ ヒット率 stats.cacheHitRate=キャッシュ ヒット率
## Read ## Read
stats.read.throughput.idle=読み取り: アイドル状態 stats.read.throughput.idle=読み取り: アイドル状態
stats.read.throughput.kibs=読み取り: %.2f kiB/s
stats.read.throughput.mibs=読み取り: %.2f MiB/s stats.read.throughput.mibs=読み取り: %.2f MiB/s
stats.read.total.data.none=データ読み取り: - stats.read.total.data.none=データ読み取り: -
stats.read.total.data.kib=データ読み取り: %.1f kiB
stats.read.total.data.mib=データ読み取り: %.1f MiB stats.read.total.data.mib=データ読み取り: %.1f MiB
stats.read.total.data.gib=データ読み取り: %.1f GiB stats.read.total.data.gib=データ読み取り: %.1f GiB
stats.decr.total.data.none=復号済みデータ: - stats.decr.total.data.none=復号済みデータ: -
stats.decr.total.data.kib=復号済みデータ: %.1f kiB
stats.decr.total.data.mib=復号済みデータ: %.1f MiB stats.decr.total.data.mib=復号済みデータ: %.1f MiB
stats.decr.total.data.gib=復号済みデータ: %.1f GiB stats.decr.total.data.gib=復号済みデータ: %.1f GiB
stats.read.accessCount=合計読み取り: %d stats.read.accessCount=合計読み取り: %d
## Write ## Write
stats.write.throughput.idle=書き込み: アイドル状態 stats.write.throughput.idle=書き込み: アイドル状態
stats.write.throughput.kibs=書き込み: %.2f kiB/s
stats.write.throughput.mibs=書き込み: %.2f MiB/s stats.write.throughput.mibs=書き込み: %.2f MiB/s
stats.write.total.data.none=書き込み済みデータ: - stats.write.total.data.none=書き込み済みデータ: -
stats.write.total.data.kib=書き込み済みデータ: %.1f kiB
stats.write.total.data.mib=書き込み済みデータ: %.1f MiB stats.write.total.data.mib=書き込み済みデータ: %.1f MiB
stats.write.total.data.gib=書き込み済みデータ: %.1f GiB stats.write.total.data.gib=書き込み済みデータ: %.1f GiB
stats.encr.total.data.none=暗号化済みデータ: - stats.encr.total.data.none=暗号化済みデータ: -
stats.encr.total.data.kib=暗号化済みデータ: %.1f kiB
stats.encr.total.data.mib=暗号化済みデータ: %.1f MiB stats.encr.total.data.mib=暗号化済みデータ: %.1f MiB
stats.encr.total.data.gib=暗号化済みデータ: %.1f GiB stats.encr.total.data.gib=暗号化済みデータ: %.1f GiB
stats.write.accessCount=合計書き込み: %d stats.write.accessCount=合計書き込み: %d
@@ -361,12 +363,12 @@ main.vaultDetail.lockBtn=施錠
main.vaultDetail.bytesPerSecondRead=読み取り: main.vaultDetail.bytesPerSecondRead=読み取り:
main.vaultDetail.bytesPerSecondWritten=書き込み: main.vaultDetail.bytesPerSecondWritten=書き込み:
main.vaultDetail.throughput.idle=アイドル main.vaultDetail.throughput.idle=アイドル
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=金庫の統計情報 main.vaultDetail.stats=金庫の統計情報
main.vaultDetail.locateEncryptedFileBtn=暗号化されたファイルの場所 main.vaultDetail.locateEncryptedFileBtn=暗号化されたファイルの場所
main.vaultDetail.locateEncryptedFileBtn.tooltip=暗号化された金庫のファイルを選択してください main.vaultDetail.locateEncryptedFileBtn.tooltip=暗号化された金庫のファイルを選択してください
main.vaultDetail.encryptedPathsCopied=パスをクリップボードにコピーしました! main.vaultDetail.encryptedPathsCopied=パスをクリップボードにコピーしました!
main.vaultDetail.filePickerTitle=金庫内のファイルを選択
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator はこの場所に金庫を見つけることができませんでした。 main.vaultDetail.missing.info=Cryptomator はこの場所に金庫を見つけることができませんでした。
main.vaultDetail.missing.recheck=再確認 main.vaultDetail.missing.recheck=再確認
@@ -405,6 +407,7 @@ vaultOptions.general.startHealthCheckBtn=正常性チェックを開始
## Mount ## Mount
vaultOptions.mount=マウント vaultOptions.mount=マウント
vaultOptions.mount.info=オプションは、選択されたボリュームタイプによって異なります。
vaultOptions.mount.linkToPreferences=仮想ドライブの環境設定を開く vaultOptions.mount.linkToPreferences=仮想ドライブの環境設定を開く
vaultOptions.mount.readonly=読み取り専用 vaultOptions.mount.readonly=読み取り専用
vaultOptions.mount.customMountFlags=カスタム マウント フラグ vaultOptions.mount.customMountFlags=カスタム マウント フラグ
@@ -435,7 +438,9 @@ recoveryKey.display.StorageHints=十分に安全な場所に保存してくだ
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=パスワードをリセット recoveryKey.recover.title=パスワードをリセット
recoveryKey.recover.prompt="%s" の回復キーを入力してください: recoveryKey.recover.prompt="%s" の回復キーを入力してください:
recoveryKey.recover.validKey=有効な回復キー recoveryKey.recover.correctKey=有効な回復キー
recoveryKey.recover.wrongKey=この回復キーは別の金庫に属しています
recoveryKey.recover.invalidKey=この回復キーは有効ではありません
recoveryKey.printout.heading=Cryptomator 回復キー\n"%s"\n recoveryKey.printout.heading=Cryptomator 回復キー\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=リセット recoveryKey.recover.resetBtn=リセット
@@ -121,7 +121,6 @@ hub.register.registerBtn=확인
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.description=대기 중인 작동이나 파일이 열려있어 "%s"를 잠그는데 실패하였습니다. 이 Vault를 강제로 잠글 수 있으나, 입/출력의 중단은 저장되지 않은 데이터의 유실을 초래할 수 있습니다. lock.forced.description=대기 중인 작동이나 파일이 열려있어 "%s"를 잠그는데 실패하였습니다. 이 Vault를 강제로 잠글 수 있으나, 입/출력의 중단은 저장되지 않은 데이터의 유실을 초래할 수 있습니다.
@@ -231,27 +230,21 @@ stats.title=%s에 대한 통계
stats.cacheHitRate=캐시 히트율 stats.cacheHitRate=캐시 히트율
## Read ## Read
stats.read.throughput.idle=읽기: 대기중 stats.read.throughput.idle=읽기: 대기중
stats.read.throughput.kibs=읽기: %.2f kiB/s
stats.read.throughput.mibs=읽기: %.2f MiB/s stats.read.throughput.mibs=읽기: %.2f MiB/s
stats.read.total.data.none=데이터 읽기: - stats.read.total.data.none=데이터 읽기: -
stats.read.total.data.kib=데이터 읽기: %.1f kiB
stats.read.total.data.mib=데이터 읽기: %.1f MiB stats.read.total.data.mib=데이터 읽기: %.1f MiB
stats.read.total.data.gib=데이터 읽기: %.1f GiB stats.read.total.data.gib=데이터 읽기: %.1f GiB
stats.decr.total.data.none=데이터 복호화: - stats.decr.total.data.none=데이터 복호화: -
stats.decr.total.data.kib=데이터 복호화: %.1f kiB
stats.decr.total.data.mib=데이터 복호화: %.1f MiB stats.decr.total.data.mib=데이터 복호화: %.1f MiB
stats.decr.total.data.gib=데이터 복호화: %.1f GiB stats.decr.total.data.gib=데이터 복호화: %.1f GiB
stats.read.accessCount=총 읽기 횟수: %d stats.read.accessCount=총 읽기 횟수: %d
## Write ## Write
stats.write.throughput.idle=쓰기: 대기중 stats.write.throughput.idle=쓰기: 대기중
stats.write.throughput.kibs=쓰기: %.2f kiB/s
stats.write.throughput.mibs=쓰기: %.2f MiB/s stats.write.throughput.mibs=쓰기: %.2f MiB/s
stats.write.total.data.none=데이터 기록됨: - stats.write.total.data.none=데이터 기록됨: -
stats.write.total.data.kib=데이터 쓰기: %.1f kiB
stats.write.total.data.mib=데이터 쓰기: %.1f MiB stats.write.total.data.mib=데이터 쓰기: %.1f MiB
stats.write.total.data.gib=데이터 쓰기: %.1f GiB stats.write.total.data.gib=데이터 쓰기: %.1f GiB
stats.encr.total.data.none=데이터 암호화: - stats.encr.total.data.none=데이터 암호화: -
stats.encr.total.data.kib=데이터 암호화: %.1f kiB
stats.encr.total.data.mib=데이터 암호화: %.1f MiB stats.encr.total.data.mib=데이터 암호화: %.1f MiB
stats.encr.total.data.gib=데이터 암호화: %.1f GiB stats.encr.total.data.gib=데이터 암호화: %.1f GiB
stats.write.accessCount=총 쓰기 횟수: %d stats.write.accessCount=총 쓰기 횟수: %d
@@ -291,7 +284,6 @@ main.vaultDetail.lockBtn=잠금
main.vaultDetail.bytesPerSecondRead=읽기: main.vaultDetail.bytesPerSecondRead=읽기:
main.vaultDetail.bytesPerSecondWritten=쓰기: main.vaultDetail.bytesPerSecondWritten=쓰기:
main.vaultDetail.throughput.idle=대기 main.vaultDetail.throughput.idle=대기
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Vault 통계 main.vaultDetail.stats=Vault 통계
### Missing ### Missing
@@ -352,7 +344,7 @@ recoveryKey.display.StorageHints=매우 안전한곳에 보관하십시요. 예
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt="%s"의 복구키를 입력하십시요: recoveryKey.recover.prompt="%s"의 복구키를 입력하십시요:
recoveryKey.recover.validKey=올바른 복구 키 입니다 recoveryKey.recover.correctKey=올바른 복구 키 입니다
recoveryKey.printout.heading=Cryptomator 복구 키\n"%s"\n recoveryKey.printout.heading=Cryptomator 복구 키\n"%s"\n
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
@@ -117,7 +117,6 @@ hub.register.registerBtn=Apstiprināt
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
## Failure ## Failure
@@ -205,7 +204,6 @@ main.vaultDetail.revealBtn=Atklāt disku
main.vaultDetail.lockBtn=Aizslēgt main.vaultDetail.lockBtn=Aizslēgt
main.vaultDetail.bytesPerSecondRead=Nolasīts: main.vaultDetail.bytesPerSecondRead=Nolasīts:
main.vaultDetail.throughput.idle=dīkstāvē main.vaultDetail.throughput.idle=dīkstāvē
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator šajā ceļā nevarēja atrast glabātuvi. main.vaultDetail.missing.info=Cryptomator šajā ceļā nevarēja atrast glabātuvi.
@@ -255,7 +253,7 @@ recoveryKey.display.StorageHints=Glabājiet to drošā vietā, piemēram:\n 
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt=Ievadiet "%s" atjaunošanas atslēgu: recoveryKey.recover.prompt=Ievadiet "%s" atjaunošanas atslēgu:
recoveryKey.recover.validKey=Šī ir derīga atjaunošanas atslēga recoveryKey.recover.correctKey=Šī ir derīga atjaunošanas atslēga
recoveryKey.printout.heading=Cryptomator atjaunošanas atslēga\n"%s" \n recoveryKey.printout.heading=Cryptomator atjaunošanas atslēga\n"%s" \n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Atiestatīt recoveryKey.recover.resetBtn=Atiestatīt
@@ -39,7 +39,6 @@ hub.register.registerBtn=Потврди
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
## Failure ## Failure
+13 -11
View File
@@ -154,9 +154,8 @@ hub.registerFailed.description=Under navngivingsprosessen oppsto det en feilmeld
hub.unauthorized.message=Ingen tilgang hub.unauthorized.message=Ingen tilgang
hub.unauthorized.description=Enheten din har ikke blitt autorisert til å få tilgang til dette hvelvet ennå. Spør hvelveieren om å tillate det. hub.unauthorized.description=Enheten din har ikke blitt autorisert til å få tilgang til dette hvelvet ennå. Spør hvelveieren om å tillate det.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Lisensen overskredet hub.invalidLicense.message=Hub-lisens er ugyldig
hub.licenseExceeded.description=Cryptomator Hub har gitt tilgang til flere brukere enn lisensen dens tillater. Vennligst kontakt Hub-administratoren din for å få oppgradert lisensen eller få en hvelv-administrator til å fjerne brukere fra hvelv. hub.invalidLicense.description=Cryptomator Hub instansen din har en ugyldig lisens. Vennligst informer en Hub-administrator om å oppgradere eller fornye lisensen.
# Lock # Lock
## Force ## Force
@@ -277,6 +276,7 @@ preferences.interface.showTrayIcon=Vis verktøykasseikon (krever omstart)
preferences.volume=Virtuell enhet preferences.volume=Virtuell enhet
preferences.volume.type=Volumtype (krever omstart) preferences.volume.type=Volumtype (krever omstart)
preferences.volume.type.automatic=Automatisk preferences.volume.type.automatic=Automatisk
preferences.volume.docsTooltip=Åpne dokumentasjonen for å lære mer om de forskjellige volumtypene.
preferences.volume.tcp.port=TCP Port preferences.volume.tcp.port=TCP Port
preferences.volume.supportedFeatures=Valgt volumtype støtter følgende funksjoner: preferences.volume.supportedFeatures=Valgt volumtype støtter følgende funksjoner:
preferences.volume.feature.mountAuto=Valg av automatisk monteringspunkt preferences.volume.feature.mountAuto=Valg av automatisk monteringspunkt
@@ -306,27 +306,27 @@ stats.title=Statistikk for %s
stats.cacheHitRate=Treffrate på hurtigminnet stats.cacheHitRate=Treffrate på hurtigminnet
## Read ## Read
stats.read.throughput.idle=Les: inaktiv stats.read.throughput.idle=Les: inaktiv
stats.read.throughput.kibs=Lest: %.2f kiB/s stats.read.throughput.kibs=Lest: %.2f KiB/s
stats.read.throughput.mibs=Lest: %.2f MiB/s stats.read.throughput.mibs=Lest: %.2f MiB/s
stats.read.total.data.none=Data lest: - stats.read.total.data.none=Data lest: -
stats.read.total.data.kib=Data lest: %.1f kiB stats.read.total.data.kib=Data lest: %.1f KiB
stats.read.total.data.mib=Data lest: %.1f MiB stats.read.total.data.mib=Data lest: %.1f MiB
stats.read.total.data.gib=Data lest: %.1f GiB stats.read.total.data.gib=Data lest: %.1f GiB
stats.decr.total.data.none=Data dekryptert: - stats.decr.total.data.none=Data dekryptert: -
stats.decr.total.data.kib=Data dekryptert: %.1f kiB stats.decr.total.data.kib=Data dekryptert: %.1f KiB
stats.decr.total.data.mib=Data dekryptert: %.1f MiB stats.decr.total.data.mib=Data dekryptert: %.1f MiB
stats.decr.total.data.gib=Data dekryptert: %.1f GiB stats.decr.total.data.gib=Data dekryptert: %.1f GiB
stats.read.accessCount=Lesninger totalt: %d stats.read.accessCount=Lesninger totalt: %d
## Write ## Write
stats.write.throughput.idle=Skrive: inaktiv stats.write.throughput.idle=Skrive: inaktiv
stats.write.throughput.kibs=Skriver: %.2f kiB/s stats.write.throughput.kibs=Skriver: %.2f KiB/s
stats.write.throughput.mibs=Skriver: %.2f MiB/s stats.write.throughput.mibs=Skriver: %.2f MiB/s
stats.write.total.data.none=Data skrevet: - stats.write.total.data.none=Data skrevet: -
stats.write.total.data.kib=Data skrevet: %.1f kiB stats.write.total.data.kib=Data skrevet: %.1f KiB
stats.write.total.data.mib=Data skrevet: %.1f MiB stats.write.total.data.mib=Data skrevet: %.1f MiB
stats.write.total.data.gib=Data skrevet: %.1f GiB stats.write.total.data.gib=Data skrevet: %.1f GiB
stats.encr.total.data.none=Data kryptert: - stats.encr.total.data.none=Data kryptert: -
stats.encr.total.data.kib=Data kryptert: %.1f kiB stats.encr.total.data.kib=Data kryptert: %.1f KiB
stats.encr.total.data.mib=Data kryptert: %.1f MiB stats.encr.total.data.mib=Data kryptert: %.1f MiB
stats.encr.total.data.gib=Data kryptert: %.1f GiB stats.encr.total.data.gib=Data kryptert: %.1f GiB
stats.write.accessCount=Skrivninger totalt: %d stats.write.accessCount=Skrivninger totalt: %d
@@ -369,7 +369,7 @@ main.vaultDetail.lockBtn=Lås
main.vaultDetail.bytesPerSecondRead=Lesehastighet: main.vaultDetail.bytesPerSecondRead=Lesehastighet:
main.vaultDetail.bytesPerSecondWritten=Skriv: main.vaultDetail.bytesPerSecondWritten=Skriv:
main.vaultDetail.throughput.idle=inaktiv main.vaultDetail.throughput.idle=inaktiv
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Hvelvstatistikk main.vaultDetail.stats=Hvelvstatistikk
main.vaultDetail.locateEncryptedFileBtn=Finn kryptert fil main.vaultDetail.locateEncryptedFileBtn=Finn kryptert fil
@@ -445,7 +445,9 @@ recoveryKey.display.StorageHints=Oppbevar den et veldig sikkert sted, f.eks. ved
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Nullstill passordet recoveryKey.recover.title=Nullstill passordet
recoveryKey.recover.prompt=Skriv inn gjenopprettingsnøkkelen for "%s": recoveryKey.recover.prompt=Skriv inn gjenopprettingsnøkkelen for "%s":
recoveryKey.recover.validKey=Dette er en gyldig gjenopprettingsnøkkel recoveryKey.recover.correctKey=Gjenopprettingsnøkkelen er gyldig
recoveryKey.recover.wrongKey=Gjenopprettingsnøkkelen tilhører et annet hvelv
recoveryKey.recover.invalidKey=Gjennopprettingsnøkkelen er ugyldig
recoveryKey.printout.heading=Cryptomator-gjenopprettingsnøkkel\n"%s"\n recoveryKey.printout.heading=Cryptomator-gjenopprettingsnøkkel\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Nullstill recoveryKey.recover.resetBtn=Nullstill
+14 -11
View File
@@ -125,6 +125,7 @@ unlock.success.revealBtn=Toon Schijf
## Failure ## Failure
unlock.error.customPath.message=Kan kluis niet aan aangepast pad koppelen unlock.error.customPath.message=Kan kluis niet aan aangepast pad koppelen
unlock.error.customPath.description.notSupported=Als je het aangepaste pad wilt blijven gebruiken, ga dan naar de voorkeuren en selecteer een volume type dat het ondersteunt. Anders ga je naar de kluis opties en kies je een steunpunt voor het koppelplaten. unlock.error.customPath.description.notSupported=Als je het aangepaste pad wilt blijven gebruiken, ga dan naar de voorkeuren en selecteer een volume type dat het ondersteunt. Anders ga je naar de kluis opties en kies je een steunpunt voor het koppelplaten.
unlock.error.customPath.description.notExists=Het aangepaste koppelpad bestaat niet. Maak het aan in uw lokale bestandssysteem of verander het in de kluis opties.
unlock.error.customPath.description.generic=Je hebt een aangepast koppel pad geselecteerd voor deze kluis, maar het gebruik ervan is mislukt met het bericht: %s unlock.error.customPath.description.generic=Je hebt een aangepast koppel pad geselecteerd voor deze kluis, maar het gebruik ervan is mislukt met het bericht: %s
## Hub ## Hub
hub.noKeychain.message=Geen toegang tot de apparaatsleutel hub.noKeychain.message=Geen toegang tot de apparaatsleutel
@@ -153,9 +154,8 @@ hub.registerFailed.description=Er is een fout in het naamproces geworpen. Kijk i
hub.unauthorized.message=Toegang geweigerd hub.unauthorized.message=Toegang geweigerd
hub.unauthorized.description=Uw apparaat is nog niet gemachtigd om toegang te krijgen tot deze kluis. Vraag de eigenaar van de kluis om toestemming te geven. hub.unauthorized.description=Uw apparaat is nog niet gemachtigd om toegang te krijgen tot deze kluis. Vraag de eigenaar van de kluis om toestemming te geven.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Licentie vervallen hub.invalidLicense.message=Hub Licentie ongeldig
hub.licenseExceeded.description=Cryptomator Hub heeft toegang gegeven aan meer gebruikers dan er licentievergunningen zijn. Neem contact op met uw Hub beheerder om de licentie of een kluisbeheerder te upgraden om gebruikers uit kluizen te verwijderen. hub.invalidLicense.description=Uw Cryptomator Hub installatie heeft een ongeldige licentie. Informeer een Hub administrator om de licentie te upgraden of te verlengen.
# Lock # Lock
## Force ## Force
@@ -276,6 +276,7 @@ preferences.interface.showTrayIcon=Pictogram in systeemvak weergeven (herstart v
preferences.volume=Virtuele schijf preferences.volume=Virtuele schijf
preferences.volume.type=Type Volume (herstart vereist) preferences.volume.type=Type Volume (herstart vereist)
preferences.volume.type.automatic=Automatisch preferences.volume.type.automatic=Automatisch
preferences.volume.docsTooltip=Open de documentatie om meer te weten te komen over de verschillende volume types.
preferences.volume.tcp.port=TCP-poort preferences.volume.tcp.port=TCP-poort
preferences.volume.supportedFeatures=Het gekozen volume type ondersteunt de volgende functies: preferences.volume.supportedFeatures=Het gekozen volume type ondersteunt de volgende functies:
preferences.volume.feature.mountAuto=Automatische koppelpunt selectie preferences.volume.feature.mountAuto=Automatische koppelpunt selectie
@@ -305,27 +306,27 @@ stats.title=Statistieken voor %s
stats.cacheHitRate=Succespercentage van cache stats.cacheHitRate=Succespercentage van cache
## Read ## Read
stats.read.throughput.idle=Lezen: inactief stats.read.throughput.idle=Lezen: inactief
stats.read.throughput.kibs=Lezen: %.2f kiB/s stats.read.throughput.kibs=Lezen: %.2f KiB/s
stats.read.throughput.mibs=Lezen: %.2f MiB/s stats.read.throughput.mibs=Lezen: %.2f MiB/s
stats.read.total.data.none=Gegevens gelezen: - stats.read.total.data.none=Gegevens gelezen: -
stats.read.total.data.kib=Gegevens gelezen: %.1f kiB stats.read.total.data.kib=Gegevens gelezen: %.1f KiB
stats.read.total.data.mib=Gegevens gelezen: %.1f MiB stats.read.total.data.mib=Gegevens gelezen: %.1f MiB
stats.read.total.data.gib=Gegevens gelezen: %.1f GiB stats.read.total.data.gib=Gegevens gelezen: %.1f GiB
stats.decr.total.data.none=Gegevens ontsleuteld: - stats.decr.total.data.none=Gegevens ontsleuteld: -
stats.decr.total.data.kib=Gegevens ontsleuteld: %.1f kiB stats.decr.total.data.kib=Gegevens gedecodeerd: %.1f KiB
stats.decr.total.data.mib=Gegevens ontsleuteld: %.1f MiB stats.decr.total.data.mib=Gegevens ontsleuteld: %.1f MiB
stats.decr.total.data.gib=Gegevens ontsleuteld: %.1f GiB stats.decr.total.data.gib=Gegevens ontsleuteld: %.1f GiB
stats.read.accessCount=Totaal gelezen: %d stats.read.accessCount=Totaal gelezen: %d
## Write ## Write
stats.write.throughput.idle=Schrijven: inactief stats.write.throughput.idle=Schrijven: inactief
stats.write.throughput.kibs=Schrijven: %.2f kiB/s stats.write.throughput.kibs=Schrijf: %.2f KiB/s
stats.write.throughput.mibs=Schrijven: %.2f MiB/s stats.write.throughput.mibs=Schrijven: %.2f MiB/s
stats.write.total.data.none=Gegevens geschreven: - stats.write.total.data.none=Gegevens geschreven: -
stats.write.total.data.kib=Gegevens geschreven: %.1f kiB stats.write.total.data.kib=Gegevens geschreven: %.1f KiB
stats.write.total.data.mib=Gegevens geschreven: %.1f MiB stats.write.total.data.mib=Gegevens geschreven: %.1f MiB
stats.write.total.data.gib=Gegevens geschreven: %.1f GiB stats.write.total.data.gib=Gegevens geschreven: %.1f GiB
stats.encr.total.data.none=Gegevens versleuteld: - stats.encr.total.data.none=Gegevens versleuteld: -
stats.encr.total.data.kib=Gegevens versleuteld: %.1f kiB stats.encr.total.data.kib=Gegevens versleuteld: %.1f KiB
stats.encr.total.data.mib=Gegevens versleuteld: %.1f MiB stats.encr.total.data.mib=Gegevens versleuteld: %.1f MiB
stats.encr.total.data.gib=Gegevens versleuteld: %.1f GiB stats.encr.total.data.gib=Gegevens versleuteld: %.1f GiB
stats.write.accessCount=Totaal geschreven: %d stats.write.accessCount=Totaal geschreven: %d
@@ -368,7 +369,7 @@ main.vaultDetail.lockBtn=Vergrendel
main.vaultDetail.bytesPerSecondRead=Lezen: main.vaultDetail.bytesPerSecondRead=Lezen:
main.vaultDetail.bytesPerSecondWritten=Schrijven: main.vaultDetail.bytesPerSecondWritten=Schrijven:
main.vaultDetail.throughput.idle=inactief main.vaultDetail.throughput.idle=inactief
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Kluisstatistieken main.vaultDetail.stats=Kluisstatistieken
main.vaultDetail.locateEncryptedFileBtn=Zoek versleuteld bestand main.vaultDetail.locateEncryptedFileBtn=Zoek versleuteld bestand
@@ -444,7 +445,9 @@ recoveryKey.display.StorageHints=Bewaar het op een veilige plek, bv:\n • Bewaa
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Wachtwoord resetten recoveryKey.recover.title=Wachtwoord resetten
recoveryKey.recover.prompt=Voer uw herstelsleutel in voor "%s": recoveryKey.recover.prompt=Voer uw herstelsleutel in voor "%s":
recoveryKey.recover.validKey=Dit is een geldige herstelsleutel recoveryKey.recover.correctKey=Deze herstelsleutel is geldig
recoveryKey.recover.wrongKey=Deze herstelsleutel behoort tot een andere kluis
recoveryKey.recover.invalidKey=Deze herstelsleutel is niet geldig
recoveryKey.printout.heading=Cryptomator herstelsleutel\n"%s"\n recoveryKey.printout.heading=Cryptomator herstelsleutel\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Resetten recoveryKey.recover.resetBtn=Resetten
@@ -104,7 +104,6 @@ unlock.success.revealBtn=Gjer eininga synleg
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
## Failure ## Failure
@@ -200,7 +199,6 @@ main.vaultDetail.revealBtn=Gjer eininga synleg
main.vaultDetail.lockBtn=Lås main.vaultDetail.lockBtn=Lås
main.vaultDetail.bytesPerSecondRead=Lesafart: main.vaultDetail.bytesPerSecondRead=Lesafart:
main.vaultDetail.throughput.idle=inaktiv main.vaultDetail.throughput.idle=inaktiv
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator kunne ikkje finna ein kvelv på denne søkastien. main.vaultDetail.missing.info=Cryptomator kunne ikkje finna ein kvelv på denne søkastien.
@@ -255,7 +253,6 @@ recoveryKey.display.StorageHints=Ta vare på han ein veldig sikker stad, t.d. ve
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt=Skriv inn gjenopprettingsnøkkelen for "%s": recoveryKey.recover.prompt=Skriv inn gjenopprettingsnøkkelen for "%s":
recoveryKey.recover.validKey=Dette er ein gyldig gjenopprettingsnøkkel
recoveryKey.printout.heading=Cryptomator-gjenopprettingsnøkkel\n"%s"\n recoveryKey.printout.heading=Cryptomator-gjenopprettingsnøkkel\n"%s"\n
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
@@ -106,7 +106,6 @@ unlock.success.revealBtn=ਡਰਾਇਵ ਦਿਖਾਓ
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.description=ਬਾਕੀ ਰਹਿੰਦੀਆਂ ਕਾਰਵਾਈਆਂ ਜਾਂ ਫ਼ਾਈਲਾਂ ਖੁੱਲ੍ਹਣ ਕਰਕੇ "%s" ਲਾਕ ਕਰਨ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ। ਤੁਸੀਂ ਇਸ ਵਾਲਟ ਨੂੰ ਧੱਕੇ ਨਾਲ ਲਾਕ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ I/O ਵਿੱਚ ਰੁਕਾਵਟ ਪਾਉਣ ਨਾਲ ਨਾ-ਸੰਭਾਲਿਆ ਡਾਟਾ ਖਤਮ ਹੋ ਜਾ ਸਕਦਾ ਹੈ। lock.forced.description=ਬਾਕੀ ਰਹਿੰਦੀਆਂ ਕਾਰਵਾਈਆਂ ਜਾਂ ਫ਼ਾਈਲਾਂ ਖੁੱਲ੍ਹਣ ਕਰਕੇ "%s" ਲਾਕ ਕਰਨ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ। ਤੁਸੀਂ ਇਸ ਵਾਲਟ ਨੂੰ ਧੱਕੇ ਨਾਲ ਲਾਕ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ I/O ਵਿੱਚ ਰੁਕਾਵਟ ਪਾਉਣ ਨਾਲ ਨਾ-ਸੰਭਾਲਿਆ ਡਾਟਾ ਖਤਮ ਹੋ ਜਾ ਸਕਦਾ ਹੈ।
@@ -176,27 +175,21 @@ stats.title=%s ਲਈ ਅੰਕੜੇ
stats.cacheHitRate=ਕੈਸ਼ ਹਿੱਟ ਦਰ stats.cacheHitRate=ਕੈਸ਼ ਹਿੱਟ ਦਰ
## Read ## Read
stats.read.throughput.idle=ਪੜ੍ਹਨ: ਵੇਹਲਾ stats.read.throughput.idle=ਪੜ੍ਹਨ: ਵੇਹਲਾ
stats.read.throughput.kibs=ਪੜ੍ਹਨ: %.2f kiB/s
stats.read.throughput.mibs=ਪੜ੍ਹਨ: %.2f MiB/s stats.read.throughput.mibs=ਪੜ੍ਹਨ: %.2f MiB/s
stats.read.total.data.none=ਡਾਟਾ ਪੜ੍ਹਨ: - stats.read.total.data.none=ਡਾਟਾ ਪੜ੍ਹਨ: -
stats.read.total.data.kib=ਡਾਟਾ ਪੜ੍ਹਨ: %.1f kiB
stats.read.total.data.mib=ਡਾਟਾ ਪੜ੍ਹਨ: %.1f MiB stats.read.total.data.mib=ਡਾਟਾ ਪੜ੍ਹਨ: %.1f MiB
stats.read.total.data.gib=ਡਾਟਾ ਪੜ੍ਹਨ: %.1f GiB stats.read.total.data.gib=ਡਾਟਾ ਪੜ੍ਹਨ: %.1f GiB
stats.decr.total.data.none=ਡਾਟਾ ਡਿ-ਕ੍ਰਿਪਟ ਕੀਤਾ: - stats.decr.total.data.none=ਡਾਟਾ ਡਿ-ਕ੍ਰਿਪਟ ਕੀਤਾ: -
stats.decr.total.data.kib=ਡਾਟਾ ਡਿ-ਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f kiB
stats.decr.total.data.mib=ਡਾਟਾ ਡਿ-ਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f MiB stats.decr.total.data.mib=ਡਾਟਾ ਡਿ-ਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f MiB
stats.decr.total.data.gib=ਡਾਟਾ ਡਿ-ਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f GiB stats.decr.total.data.gib=ਡਾਟਾ ਡਿ-ਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f GiB
stats.read.accessCount=ਕੁੱਲ ਪੜ੍ਹੇ: %d stats.read.accessCount=ਕੁੱਲ ਪੜ੍ਹੇ: %d
## Write ## Write
stats.write.throughput.idle=ਲਿਖੇ: ਵੇਹਲ stats.write.throughput.idle=ਲਿਖੇ: ਵੇਹਲ
stats.write.throughput.kibs=ਲਿਖੇ: %.2f kiB/s
stats.write.throughput.mibs=ਲਿਖੇ: %.2f MiB/s stats.write.throughput.mibs=ਲਿਖੇ: %.2f MiB/s
stats.write.total.data.none=ਲਿਖਿਆ ਡਾਟਾ: - stats.write.total.data.none=ਲਿਖਿਆ ਡਾਟਾ: -
stats.write.total.data.kib=ਡਾਟਾ ਲਿਖਿਆ: %.1f kiB
stats.write.total.data.mib=ਡਾਟਾ ਲਿਖਿਆ: %.1f MiB stats.write.total.data.mib=ਡਾਟਾ ਲਿਖਿਆ: %.1f MiB
stats.write.total.data.gib=ਡਾਟਾ ਲਿਖਿਆ: %.1f GiB stats.write.total.data.gib=ਡਾਟਾ ਲਿਖਿਆ: %.1f GiB
stats.encr.total.data.none=ਡਾਟਾ ਇੰਕ੍ਰਿਪਟ ਕੀਤਾ: - stats.encr.total.data.none=ਡਾਟਾ ਇੰਕ੍ਰਿਪਟ ਕੀਤਾ: -
stats.encr.total.data.kib=ਡਾਟਾ ਇੰਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f kiB
stats.encr.total.data.mib=ਡਾਟਾ ਇੰਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f MiB stats.encr.total.data.mib=ਡਾਟਾ ਇੰਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f MiB
stats.encr.total.data.gib=ਡਾਟਾ ਇੰਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f GiB stats.encr.total.data.gib=ਡਾਟਾ ਇੰਕ੍ਰਿਪਟ ਕੀਤਾ: %.1f GiB
stats.write.accessCount=ਕੁੱਲ ਲਿਖੇ: %d stats.write.accessCount=ਕੁੱਲ ਲਿਖੇ: %d
@@ -234,7 +227,6 @@ main.vaultDetail.lockBtn=ਲਾਕ ਕਰੋ
main.vaultDetail.bytesPerSecondRead=ਪੜ੍ਹਨ: main.vaultDetail.bytesPerSecondRead=ਪੜ੍ਹਨ:
main.vaultDetail.bytesPerSecondWritten=ਲਿਖਣ: main.vaultDetail.bytesPerSecondWritten=ਲਿਖਣ:
main.vaultDetail.throughput.idle=ਵੇਹਲਾ main.vaultDetail.throughput.idle=ਵੇਹਲਾ
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=ਵਾਲਟ ਅੰਕੜੇ main.vaultDetail.stats=ਵਾਲਟ ਅੰਕੜੇ
### Missing ### Missing
@@ -292,7 +284,7 @@ recoveryKey.display.StorageHints=ਇਸ ਨੂੰ ਕਿਸੇ ਥਾਂ ਬਹ
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt='%s" ਲਈ ਆਪਣਾ ਰਿਕਵਰੀ ਕੁੰਜੀ ਦਿਓ: recoveryKey.recover.prompt='%s" ਲਈ ਆਪਣਾ ਰਿਕਵਰੀ ਕੁੰਜੀ ਦਿਓ:
recoveryKey.recover.validKey=ਇਹ ਜਾਇਜ਼ ਰਿਕਰਵੀ ਕੁੰਜੀ ਹੈ recoveryKey.recover.correctKey=ਇਹ ਜਾਇਜ਼ ਰਿਕਰਵੀ ਕੁੰਜੀ ਹੈ
recoveryKey.printout.heading=Cryptomator ਰਿਕਵਰੀ ਕੁੰਜੀ\n"%s"\n recoveryKey.printout.heading=Cryptomator ਰਿਕਵਰੀ ਕੁੰਜੀ\n"%s"\n
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
+27 -11
View File
@@ -123,6 +123,10 @@ unlock.success.description=Odblokowano "%s" pomyślnie! Twój sejf jest teraz do
unlock.success.rememberChoice=Zapamiętaj wybór, nie pokazuj tego ponownie unlock.success.rememberChoice=Zapamiętaj wybór, nie pokazuj tego ponownie
unlock.success.revealBtn=Pokaż Dysk unlock.success.revealBtn=Pokaż Dysk
## Failure ## Failure
unlock.error.customPath.message=Nie można zamontować sejfu na niestandardowej ścieżce
unlock.error.customPath.description.notSupported=Jeśli chcesz nadal używać niestandardowej ścieżki, przejdź do preferencji i wybierz typ udziału, który ją obsługuje. W przeciwnym razie przejdź do opcji sejfu i wybierz obsługiwany punkt montowania.
unlock.error.customPath.description.notExists=Niestandardowa ścieżka montowania nie istnieje. Stwórz ją w lokalnym systemie plików lub zmień ją w opcjach sejfu.
unlock.error.customPath.description.generic=Wybrałeś niestandardową ścieżkę montowania dla tego sejfu, ale użycie jej nie powiodło się z wiadomością: %s
## Hub ## Hub
hub.noKeychain.message=Brak dostępu do klucza urządzenia hub.noKeychain.message=Brak dostępu do klucza urządzenia
hub.noKeychain.description=Aby odblokować sejfy na Hubie, wymagany jest klucz urządzenia zabezpieczony za pomocą pęku kluczy. Aby kontynuować, włącz "%s" i wybierz Pęk kluczy w ustawieniach. hub.noKeychain.description=Aby odblokować sejfy na Hubie, wymagany jest klucz urządzenia zabezpieczony za pomocą pęku kluczy. Aby kontynuować, włącz "%s" i wybierz Pęk kluczy w ustawieniach.
@@ -150,9 +154,8 @@ hub.registerFailed.description=Wystąpił błąd podczas ustawiania nazwy. Aby u
hub.unauthorized.message=Brak dostępu hub.unauthorized.message=Brak dostępu
hub.unauthorized.description=Twoje urządzenie nie zostało jeszcze upoważnione do dostępu do tego sejfu. Poproś właściciela sejfu o autoryzację. hub.unauthorized.description=Twoje urządzenie nie zostało jeszcze upoważnione do dostępu do tego sejfu. Poproś właściciela sejfu o autoryzację.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Przekroczono licencję hub.invalidLicense.message=Nieważna licencja Huba
hub.licenseExceeded.description=Cryptomator Hub dał dostęp większej ilości użytkowników, niż pozwala na to licencja. Proszę skontaktować się z administratorem Hub, aby ulepszyć licencję lub z administratorem sejfu, aby usunąć użytkowników z sejfu. hub.invalidLicense.description=Twoja instancja Hub ma nieprawidłową licencję. Poproś administratora Hub o uaktualnienie lub odnowienie licencji.
# Lock # Lock
## Force ## Force
@@ -271,7 +274,16 @@ preferences.interface.showMinimizeButton=Pokaż przycisk minimalizacji
preferences.interface.showTrayIcon=Pokaż ikonę zasobnika (wymaga restartu) preferences.interface.showTrayIcon=Pokaż ikonę zasobnika (wymaga restartu)
## Volume ## Volume
preferences.volume=Dysk wirtualny preferences.volume=Dysk wirtualny
preferences.volume.type=Typ udziału (wymaga ponownego uruchomienia)
preferences.volume.type.automatic=Automatyczny preferences.volume.type.automatic=Automatyczny
preferences.volume.docsTooltip=Sprawdź dokumentację, aby dowiedzieć się więcej o różnych typach udziałów.
preferences.volume.tcp.port=Port TCP
preferences.volume.supportedFeatures=Wybrany typ udziału obsługuje następujące funkcje:
preferences.volume.feature.mountAuto=Automatyczny wybór punktu montowania
preferences.volume.feature.mountToDir=Niestandardowy katalog jako punkt montowania
preferences.volume.feature.mountToDriveLetter=Litera dysku jako punkt montowania
preferences.volume.feature.mountFlags=Własne opcje montowania
preferences.volume.feature.readOnly=Montowanie tylko do odczytu
## Updates ## Updates
preferences.updates=Aktualizacje preferences.updates=Aktualizacje
preferences.updates.currentVersion=Obecna wersja: %s preferences.updates.currentVersion=Obecna wersja: %s
@@ -294,27 +306,21 @@ stats.title=Statystyki dla %s
stats.cacheHitRate=Trafność cache stats.cacheHitRate=Trafność cache
## Read ## Read
stats.read.throughput.idle=Odczyt: bezczynny stats.read.throughput.idle=Odczyt: bezczynny
stats.read.throughput.kibs=Odczyt: %.2f kiB/s
stats.read.throughput.mibs=Odczyt: %.2f kiB/s stats.read.throughput.mibs=Odczyt: %.2f kiB/s
stats.read.total.data.none=Dane odczytywane: - stats.read.total.data.none=Dane odczytywane: -
stats.read.total.data.kib=Odczyt danych: %.1f kiB
stats.read.total.data.mib=Odczyt danych: %.1f kiB stats.read.total.data.mib=Odczyt danych: %.1f kiB
stats.read.total.data.gib=Odczyt danych: %.1f kiB stats.read.total.data.gib=Odczyt danych: %.1f kiB
stats.decr.total.data.none=Dane odszyfrowane: - stats.decr.total.data.none=Dane odszyfrowane: -
stats.decr.total.data.kib=Dane odszyfrowane: %.1f kiB
stats.decr.total.data.mib=Dane odszyfrowane: %.1f kiB stats.decr.total.data.mib=Dane odszyfrowane: %.1f kiB
stats.decr.total.data.gib=Dane odszyfrowane: %.1f kiB stats.decr.total.data.gib=Dane odszyfrowane: %.1f kiB
stats.read.accessCount=Całkowite odczyty: %d stats.read.accessCount=Całkowite odczyty: %d
## Write ## Write
stats.write.throughput.idle=Zapis: bezczynny stats.write.throughput.idle=Zapis: bezczynny
stats.write.throughput.kibs=Zapis: %.2f kiB/s
stats.write.throughput.mibs=Zapis: %.2f kiB/s stats.write.throughput.mibs=Zapis: %.2f kiB/s
stats.write.total.data.none=Zapisane dane: - stats.write.total.data.none=Zapisane dane: -
stats.write.total.data.kib=Zapisane dane: %.1f kiB
stats.write.total.data.mib=Zapisane dane: %.1f MiB stats.write.total.data.mib=Zapisane dane: %.1f MiB
stats.write.total.data.gib=Zapisane dane: %.1f kiB stats.write.total.data.gib=Zapisane dane: %.1f kiB
stats.encr.total.data.none=Dane odszyfrowane: - stats.encr.total.data.none=Dane odszyfrowane: -
stats.encr.total.data.kib=Dane odszyfrowane: %.1f kiB
stats.encr.total.data.mib=Dane odszyfrowane: %.1f kiB stats.encr.total.data.mib=Dane odszyfrowane: %.1f kiB
stats.encr.total.data.gib=Dane odszyfrowane: %.1f kiB stats.encr.total.data.gib=Dane odszyfrowane: %.1f kiB
stats.write.accessCount=Całkowity zapis: %d stats.write.accessCount=Całkowity zapis: %d
@@ -352,13 +358,17 @@ main.vaultDetail.passwordSavedInKeychain=Hasło zapisane
main.vaultDetail.unlockedStatus=ODBLOKOWANE main.vaultDetail.unlockedStatus=ODBLOKOWANE
main.vaultDetail.accessLocation=Zawartość Twojego sejfu dostępna jest tutaj: main.vaultDetail.accessLocation=Zawartość Twojego sejfu dostępna jest tutaj:
main.vaultDetail.revealBtn=Otwórz lokalizację main.vaultDetail.revealBtn=Otwórz lokalizację
main.vaultDetail.copyUri=Kopiuj URI
main.vaultDetail.lockBtn=Blokuj main.vaultDetail.lockBtn=Blokuj
main.vaultDetail.bytesPerSecondRead=Odczyt: main.vaultDetail.bytesPerSecondRead=Odczyt:
main.vaultDetail.bytesPerSecondWritten=Zapisz: main.vaultDetail.bytesPerSecondWritten=Zapisz:
main.vaultDetail.throughput.idle=bezczynny main.vaultDetail.throughput.idle=bezczynny
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statystyki sejfu main.vaultDetail.stats=Statystyki sejfu
main.vaultDetail.locateEncryptedFileBtn=Zlokalizuj zaszyfrowany plik
main.vaultDetail.locateEncryptedFileBtn.tooltip=Wybierz plik z sejfu, aby zlokalizować jego zaszyfrowany odpowiednik
main.vaultDetail.encryptedPathsCopied=Ścieżki skopiowane do schowka!
main.vaultDetail.filePickerTitle=Wybierz plik wewnątrz sejfu
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator nie mógł znaleźć sejfu w tej lokalizacji. main.vaultDetail.missing.info=Cryptomator nie mógł znaleźć sejfu w tej lokalizacji.
main.vaultDetail.missing.recheck=Ponów próbę main.vaultDetail.missing.recheck=Ponów próbę
@@ -397,13 +407,17 @@ vaultOptions.general.startHealthCheckBtn=Rozpocznij Test Spójności
## Mount ## Mount
vaultOptions.mount=Montowanie vaultOptions.mount=Montowanie
vaultOptions.mount.info=Opcje zależą od wybranego typu udziału.
vaultOptions.mount.linkToPreferences=Otwórz ustawienia dysku wirtualnego
vaultOptions.mount.readonly=Tylko do odczytu vaultOptions.mount.readonly=Tylko do odczytu
vaultOptions.mount.customMountFlags=Własne flagi montowania udziału vaultOptions.mount.customMountFlags=Własne flagi montowania udziału
vaultOptions.mount.winDriveLetterOccupied=zajęty vaultOptions.mount.winDriveLetterOccupied=zajęty
vaultOptions.mount.mountPoint=Punkt montowania vaultOptions.mount.mountPoint=Punkt montowania
vaultOptions.mount.mountPoint.auto=Automatycznie wybierz odpowiednią lokalizację vaultOptions.mount.mountPoint.auto=Automatycznie wybierz odpowiednią lokalizację
vaultOptions.mount.mountPoint.driveLetter=Użyj przypisanej litery dysku vaultOptions.mount.mountPoint.driveLetter=Użyj przypisanej litery dysku
vaultOptions.mount.mountPoint.custom=Użyj wybranego katalogu
vaultOptions.mount.mountPoint.directoryPickerButton=Wybierz… vaultOptions.mount.mountPoint.directoryPickerButton=Wybierz…
vaultOptions.mount.mountPoint.directoryPickerTitle=Wybierz katalog
## Master Key ## Master Key
vaultOptions.masterkey=Hasło vaultOptions.masterkey=Hasło
vaultOptions.masterkey.changePasswordBtn=Zmiana Hasła vaultOptions.masterkey.changePasswordBtn=Zmiana Hasła
@@ -424,7 +438,9 @@ recoveryKey.display.StorageHints=Trzymaj go w bezpiecznym miejscu, np.\n • Prz
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Resetuj hasło recoveryKey.recover.title=Resetuj hasło
recoveryKey.recover.prompt=Wprowadź swój klucz odzyskiwania dla "%s": recoveryKey.recover.prompt=Wprowadź swój klucz odzyskiwania dla "%s":
recoveryKey.recover.validKey=To jest prawidłowy klucz odzyskiwania recoveryKey.recover.correctKey=To jest prawidłowy klucz odzyskiwania
recoveryKey.recover.wrongKey=Ten klucz należy do innego sejfu
recoveryKey.recover.invalidKey=Ten klucz jest nieprawidłowy
recoveryKey.printout.heading=Cryptomator - Klucz odzyskiwania "%s"\n recoveryKey.printout.heading=Cryptomator - Klucz odzyskiwania "%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Resetuj recoveryKey.recover.resetBtn=Resetuj
@@ -123,6 +123,7 @@ unlock.success.description="%s" desbloqueado com sucesso! O seu cofre está agor
unlock.success.rememberChoice=Lembrar escolha, não mostrar isto novamente unlock.success.rememberChoice=Lembrar escolha, não mostrar isto novamente
unlock.success.revealBtn=Revelar unidade unlock.success.revealBtn=Revelar unidade
## Failure ## Failure
unlock.error.customPath.message=Não é possível montar o cofre no caminho personalizado
## Hub ## Hub
hub.noKeychain.message=Não foi possível aceder à chave do dispositivo hub.noKeychain.message=Não foi possível aceder à chave do dispositivo
hub.noKeychain.description=Para desbloquear os cofres do Hub, é necessária uma chave do dispositivo, que é protegida usando um porta-chaves. Para continuar, ative “%s” e selecione um porta-chaves nas preferências. hub.noKeychain.description=Para desbloquear os cofres do Hub, é necessária uma chave do dispositivo, que é protegida usando um porta-chaves. Para continuar, ative “%s” e selecione um porta-chaves nas preferências.
@@ -150,9 +151,8 @@ hub.registerFailed.description=Houve um erro no processo de nomear. Para mais de
hub.unauthorized.message=Acesso negado hub.unauthorized.message=Acesso negado
hub.unauthorized.description=O seu dispositivo ainda não foi autorizado a aceder a este cofre. Peça ao proprietário do cofre para o autorizar. hub.unauthorized.description=O seu dispositivo ainda não foi autorizado a aceder a este cofre. Peça ao proprietário do cofre para o autorizar.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Licença excedida hub.invalidLicense.message=Licença Hub inválida
hub.licenseExceeded.description=O Hub do Cryptomator deu acesso a mais utilizadores do que as suas licenças de licença. Entre em contacto com o administrador do Hub para atualizar a licença ou um administrador do cofre para remover utilizadores dos cofres. hub.invalidLicense.description=O pedido do seu Cryptomator Hub tem uma licença inválida. Informe um administrador do Hub para atualizar ou renovar a licença.
# Lock # Lock
## Force ## Force
@@ -294,7 +294,6 @@ main.vaultDetail.accessLocation=O conteúdo do seu cofre está acessível aqui:
main.vaultDetail.revealBtn=Revelar unidade main.vaultDetail.revealBtn=Revelar unidade
main.vaultDetail.lockBtn=Trancar main.vaultDetail.lockBtn=Trancar
main.vaultDetail.throughput.idle=inativo main.vaultDetail.throughput.idle=inativo
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.locateEncryptedFileBtn=Localizar Ficheiro Encriptado main.vaultDetail.locateEncryptedFileBtn=Localizar Ficheiro Encriptado
main.vaultDetail.locateEncryptedFileBtn.tooltip=Escolha um ficheiro do seu cofre para localizar a sua contraparte encriptada main.vaultDetail.locateEncryptedFileBtn.tooltip=Escolha um ficheiro do seu cofre para localizar a sua contraparte encriptada
@@ -154,9 +154,6 @@ hub.registerFailed.description=Ocorreu um erro no processo de nomeação do disp
hub.unauthorized.message=Acesso negado hub.unauthorized.message=Acesso negado
hub.unauthorized.description=Seu dispositivo ainda não foi autorizado a acessar este cofre. Peça ao proprietário ou a um administrador deste cofre para autorizá-lo. hub.unauthorized.description=Seu dispositivo ainda não foi autorizado a acessar este cofre. Peça ao proprietário ou a um administrador deste cofre para autorizá-lo.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=No. de licenças excedido
hub.licenseExceeded.description=O Cryptomator Hub deu acesso a mais usuários do que sua licença de uso permite. Entre em contato com o administrador do seu Cryptomator Hub para ele atualizar o número de licenças ou com um administrador do cofre para remover usuários dos cofres.
# Lock # Lock
## Force ## Force
@@ -306,27 +303,21 @@ stats.title=Estatísticas para %s
stats.cacheHitRate=Taxa de Utilização do Cache stats.cacheHitRate=Taxa de Utilização do Cache
## Read ## Read
stats.read.throughput.idle=Leitura: ociosa stats.read.throughput.idle=Leitura: ociosa
stats.read.throughput.kibs=Leitura: %.2f kiB/s
stats.read.throughput.mibs=Leitura: %.2f MiB/s stats.read.throughput.mibs=Leitura: %.2f MiB/s
stats.read.total.data.none=Dados lidos: - stats.read.total.data.none=Dados lidos: -
stats.read.total.data.kib=Dados lidos: %.1f kiB
stats.read.total.data.mib=Dados lidos: %.1f MiB stats.read.total.data.mib=Dados lidos: %.1f MiB
stats.read.total.data.gib=Dados lidos: %.1f GiB stats.read.total.data.gib=Dados lidos: %.1f GiB
stats.decr.total.data.none=Dados descriptografados: - stats.decr.total.data.none=Dados descriptografados: -
stats.decr.total.data.kib=Dados descriptografados: %.1f kiB
stats.decr.total.data.mib=Dados descriptografados: %.1f MiB stats.decr.total.data.mib=Dados descriptografados: %.1f MiB
stats.decr.total.data.gib=Dados descriptografados: %.1f GiB stats.decr.total.data.gib=Dados descriptografados: %.1f GiB
stats.read.accessCount=Total de leituras: %d stats.read.accessCount=Total de leituras: %d
## Write ## Write
stats.write.throughput.idle=Escrita: ociosa stats.write.throughput.idle=Escrita: ociosa
stats.write.throughput.kibs=Escrita: %.2f kiB/s
stats.write.throughput.mibs=Escrita: %.2f MiB/s stats.write.throughput.mibs=Escrita: %.2f MiB/s
stats.write.total.data.none=Dados gravados: - stats.write.total.data.none=Dados gravados: -
stats.write.total.data.kib=Dados gravados: %.1f kiB
stats.write.total.data.mib=Dados gravados: %.1f MiB stats.write.total.data.mib=Dados gravados: %.1f MiB
stats.write.total.data.gib=Dados gravados: %.1f GiB stats.write.total.data.gib=Dados gravados: %.1f GiB
stats.encr.total.data.none=Dados criptografados: - stats.encr.total.data.none=Dados criptografados: -
stats.encr.total.data.kib=Dados criptografados: %.1f kiB
stats.encr.total.data.mib=Dados criptografados: %.1f MiB stats.encr.total.data.mib=Dados criptografados: %.1f MiB
stats.encr.total.data.gib=Dados criptografados: %.1f GiB stats.encr.total.data.gib=Dados criptografados: %.1f GiB
stats.write.accessCount=Total gravado: %d stats.write.accessCount=Total gravado: %d
@@ -369,7 +360,6 @@ main.vaultDetail.lockBtn=Bloquear
main.vaultDetail.bytesPerSecondRead=Leitura: main.vaultDetail.bytesPerSecondRead=Leitura:
main.vaultDetail.bytesPerSecondWritten=Escrita: main.vaultDetail.bytesPerSecondWritten=Escrita:
main.vaultDetail.throughput.idle=ocioso main.vaultDetail.throughput.idle=ocioso
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Estatísticas do Cofre main.vaultDetail.stats=Estatísticas do Cofre
main.vaultDetail.locateEncryptedFileBtn=Localizar Arquivo Criptografado main.vaultDetail.locateEncryptedFileBtn=Localizar Arquivo Criptografado
@@ -445,7 +435,7 @@ recoveryKey.display.StorageHints=Mantenha-a em um lugar bem seguro, por exemplo:
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Redefinir Senha recoveryKey.recover.title=Redefinir Senha
recoveryKey.recover.prompt=Digite sua chave de recuperação para "%s": recoveryKey.recover.prompt=Digite sua chave de recuperação para "%s":
recoveryKey.recover.validKey=Esta é uma chave de recuperação válida recoveryKey.recover.correctKey=Esta é uma chave de recuperação válida
recoveryKey.printout.heading=Chave de Recuperação do Cryptomator\n"%s"\n recoveryKey.printout.heading=Chave de Recuperação do Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Redefinir recoveryKey.recover.resetBtn=Redefinir
+10 -11
View File
@@ -123,6 +123,10 @@ unlock.success.description=Deblocat "%s" cu succes! Seiful dvs. este acum accesi
unlock.success.rememberChoice=Ține minte alegerea, nu mai arăta asta din nou unlock.success.rememberChoice=Ține minte alegerea, nu mai arăta asta din nou
unlock.success.revealBtn=Dezvăluie partiția unlock.success.revealBtn=Dezvăluie partiția
## Failure ## Failure
unlock.error.customPath.message=Nu se poate monta seiful în locația alesă
unlock.error.customPath.description.notSupported=Dacă doriți să continuați să utilizați locația aleasă, vă rugăm să mergeți la preferințe și să selectați o unitate de stocare suportată. În caz contrar, mergeți la opțiunile seifului și alegeți o locație de montare suportată.
unlock.error.customPath.description.notExists=Locația de montare aleasă nu există. Creați-o în sistemul de fișiere local sau schimbați-o din opțiunile seifului.
unlock.error.customPath.description.generic=Ați selectat o locație de montare pentru acest seif, dar utilizarea ei a eșuat cu mesajul: %s
## Hub ## Hub
hub.noKeychain.message=Cheia dispozitivului nu a putut fi accesată hub.noKeychain.message=Cheia dispozitivului nu a putut fi accesată
hub.noKeychain.description=Pentru a debloca seifele de tip Hub, este necesară o cheie a dispozitivului, care este securizată prin intermediul unui keychain. Pentru a continua, activați „%s” și selectați un keychain în preferințe. hub.noKeychain.description=Pentru a debloca seifele de tip Hub, este necesară o cheie a dispozitivului, care este securizată prin intermediul unui keychain. Pentru a continua, activați „%s” și selectați un keychain în preferințe.
@@ -150,9 +154,6 @@ hub.registerFailed.description=O eroare a fost întâmpinata în procesul de den
hub.unauthorized.message=Acces respins hub.unauthorized.message=Acces respins
hub.unauthorized.description=Dispozitivul dvs. nu a fost autorizat să acceseze acest seif. Solicitați proprietarului seifului să va autorizeze accesul. hub.unauthorized.description=Dispozitivul dvs. nu a fost autorizat să acceseze acest seif. Solicitați proprietarului seifului să va autorizeze accesul.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Numărul de licențe a fost depășit
hub.licenseExceeded.description=Cryptomator Hub a permis accesul la mai mulți utilizatori decât licența permite. Vă rugăm să contactați administratorul Hub-ului dumneavoastră pentru a actualiza licența sau un administrator de seif pentru a elimina utilizatorii din seifuri.
# Lock # Lock
## Force ## Force
@@ -271,7 +272,10 @@ preferences.interface.showMinimizeButton=Arată butonul de minimizare
preferences.interface.showTrayIcon=Arată tray icon (necesită repornire) preferences.interface.showTrayIcon=Arată tray icon (necesită repornire)
## Volume ## Volume
preferences.volume=Unitate virtuală preferences.volume=Unitate virtuală
preferences.volume.type=Tip unitate de stocare (necesită repornire)
preferences.volume.type.automatic=Automat preferences.volume.type.automatic=Automat
preferences.volume.docsTooltip=Deschideți documentația pentru a afla mai multe despre tipurile diferite de unități de stocare.
preferences.volume.tcp.port=Portul TCP
## Updates ## Updates
preferences.updates=Actualizări preferences.updates=Actualizări
preferences.updates.currentVersion=Versiunea actuală: %s preferences.updates.currentVersion=Versiunea actuală: %s
@@ -294,27 +298,21 @@ stats.title=Statistici pentru %s
stats.cacheHitRate=Rata de control cache stats.cacheHitRate=Rata de control cache
## Read ## Read
stats.read.throughput.idle=Citire: inactiv stats.read.throughput.idle=Citire: inactiv
stats.read.throughput.kibs=Citire: %.2f kiB/s
stats.read.throughput.mibs=Citire: %.2f MiB/s stats.read.throughput.mibs=Citire: %.2f MiB/s
stats.read.total.data.none=Date citite: - 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.mib=Date citite: %.1f MiB
stats.read.total.data.gib=Date citite: %.1f GiB stats.read.total.data.gib=Date citite: %.1f GiB
stats.decr.total.data.none=Date decriptate: - 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.mib=Date decriptate: %.1f MiB
stats.decr.total.data.gib=Date decriptate: %.1f GiB stats.decr.total.data.gib=Date decriptate: %.1f GiB
stats.read.accessCount=Total citit: %d stats.read.accessCount=Total citit: %d
## Write ## Write
stats.write.throughput.idle=Scriere: inactiv stats.write.throughput.idle=Scriere: inactiv
stats.write.throughput.kibs=Scrie: %.2f kiB/s
stats.write.throughput.mibs=Scrie: %.2f MiB/s stats.write.throughput.mibs=Scrie: %.2f MiB/s
stats.write.total.data.none=Date scrise: - 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.mib=Date scrise: %.1f MiB
stats.write.total.data.gib=Date scrise: %.1f GiB stats.write.total.data.gib=Date scrise: %.1f GiB
stats.encr.total.data.none=Date criptate: - 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.mib=Date criptate: %.1f MiB
stats.encr.total.data.gib=Date criptate: %.1f GiB stats.encr.total.data.gib=Date criptate: %.1f GiB
stats.write.accessCount=Total scrieri: %d stats.write.accessCount=Total scrieri: %d
@@ -356,7 +354,6 @@ main.vaultDetail.lockBtn=Blocaţi
main.vaultDetail.bytesPerSecondRead=Citire: main.vaultDetail.bytesPerSecondRead=Citire:
main.vaultDetail.bytesPerSecondWritten=Scriere: main.vaultDetail.bytesPerSecondWritten=Scriere:
main.vaultDetail.throughput.idle=inactiv main.vaultDetail.throughput.idle=inactiv
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statistici de seif main.vaultDetail.stats=Statistici de seif
### Missing ### Missing
@@ -424,7 +421,9 @@ recoveryKey.display.StorageHints=Păstrați cheia de recuperare undeva foarte si
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Resetează Parola recoveryKey.recover.title=Resetează Parola
recoveryKey.recover.prompt=Introduceți cheia de recuperare pentru "%s: recoveryKey.recover.prompt=Introduceți cheia de recuperare pentru "%s:
recoveryKey.recover.validKey=Aceasta este o cheie de recuperare validă recoveryKey.recover.correctKey=Cheia de recuperare este validă
recoveryKey.recover.wrongKey=Cheia de recuperare aparţine unui alt seif
recoveryKey.recover.invalidKey=Cheia de recuperare nu este validă
recoveryKey.printout.heading=Cheia de recuperare Cryptomator\n"%s"\n recoveryKey.printout.heading=Cheia de recuperare Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Resetează recoveryKey.recover.resetBtn=Resetează
@@ -123,7 +123,7 @@ unlock.success.description=Разблокировка "%s" успешно вып
unlock.success.rememberChoice=Запомнить выбор и больше не спрашивать unlock.success.rememberChoice=Запомнить выбор и больше не спрашивать
unlock.success.revealBtn=Показать диск unlock.success.revealBtn=Показать диск
## Failure ## Failure
unlock.error.customPath.message=Невозможно смонтировать хранилище на указанный путь unlock.error.customPath.message=Невозможно смонтировать хранилище по указанному пути
unlock.error.customPath.description.notSupported=Если вы хотите продолжить использование пользовательского пути, перейдите в настройки и выберите тип тома, который его поддерживает. В противном случае, перейдите в настройки хранилища и выберите поддерживаемую точку монтирования. unlock.error.customPath.description.notSupported=Если вы хотите продолжить использование пользовательского пути, перейдите в настройки и выберите тип тома, который его поддерживает. В противном случае, перейдите в настройки хранилища и выберите поддерживаемую точку монтирования.
unlock.error.customPath.description.notExists=Пользовательский путь монтирования не существует. Либо создайте его в локальной файловой системе, либо измените в параметрах хранилища. unlock.error.customPath.description.notExists=Пользовательский путь монтирования не существует. Либо создайте его в локальной файловой системе, либо измените в параметрах хранилища.
unlock.error.customPath.description.generic=Вы выбрали свой путь монтирования этого хранилища, но его нельзя использовать: %s unlock.error.customPath.description.generic=Вы выбрали свой путь монтирования этого хранилища, но его нельзя использовать: %s
@@ -154,9 +154,8 @@ hub.registerFailed.description=Ошибка присвоения имени. Б
hub.unauthorized.message=Нет доступа hub.unauthorized.message=Нет доступа
hub.unauthorized.description=Устройство ещё не авторизовано для доступа к этому хранилищу. Попросите владельца хранилища разрешить его. hub.unauthorized.description=Устройство ещё не авторизовано для доступа к этому хранилищу. Попросите владельца хранилища разрешить его.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Срок действия лицензии истёк hub.invalidLicense.message=Лицензия хаба недействительна
hub.licenseExceeded.description=Cryptomator Hub предоставил доступ большему количеству пользователей, чем разрешено лицензией. Обратитесь к администратору Hub для обновления лицензии или администратора хранилища, чтобы удалить пользователей из хранилищ. hub.invalidLicense.description=У вашего хаба Cryptomator неверная лицензия. Попросите администратора хаба обновить или продлить лицензию.
# Lock # Lock
## Force ## Force
@@ -277,12 +276,13 @@ preferences.interface.showTrayIcon=Показывать значок в пане
preferences.volume=Виртуальный диск preferences.volume=Виртуальный диск
preferences.volume.type=Тип тома (требуется перезапуск) preferences.volume.type=Тип тома (требуется перезапуск)
preferences.volume.type.automatic=Автоматически preferences.volume.type.automatic=Автоматически
preferences.volume.docsTooltip=Откройте документацию, чтобы узнать больше о различных типах томов.
preferences.volume.tcp.port=Порт TCP preferences.volume.tcp.port=Порт TCP
preferences.volume.supportedFeatures=Выбранный тип тома поддерживает следующие функции: preferences.volume.supportedFeatures=Выбранный тип тома поддерживает следующие функции:
preferences.volume.feature.mountAuto=Выбор точки автомонтирования preferences.volume.feature.mountAuto=Выбор точки автомонтирования
preferences.volume.feature.mountToDir=Своя папка как точка монтирования preferences.volume.feature.mountToDir=Своя папка как точка монтирования
preferences.volume.feature.mountToDriveLetter=Буква диска как точка монтирования preferences.volume.feature.mountToDriveLetter=Буква диска как точка монтирования
preferences.volume.feature.mountFlags=Настройки монтирования preferences.volume.feature.mountFlags=Параметры монтирования
preferences.volume.feature.readOnly=Монтирование только для чтения preferences.volume.feature.readOnly=Монтирование только для чтения
## Updates ## Updates
preferences.updates=Обновления preferences.updates=Обновления
@@ -445,7 +445,9 @@ recoveryKey.display.StorageHints=Храните его в надёжном ме
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Сброс пароля recoveryKey.recover.title=Сброс пароля
recoveryKey.recover.prompt=Введите ключ восстановления для "%s": recoveryKey.recover.prompt=Введите ключ восстановления для "%s":
recoveryKey.recover.validKey=Это действительный ключ восстановления recoveryKey.recover.correctKey=Это действительный ключ восстановления
recoveryKey.recover.wrongKey=Этот ключ восстановления от другого хранилища
recoveryKey.recover.invalidKey=Этот ключ восстановления недействителен
recoveryKey.printout.heading=Ключ восстановления Cryptomator\n"%s"\n recoveryKey.printout.heading=Ключ восстановления Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Сброс recoveryKey.recover.resetBtn=Сброс
@@ -468,7 +470,7 @@ passwordStrength.messageLabel.4=Очень сильный
# Quit # Quit
quit.title=Выйти из приложения quit.title=Выйти из приложения
quit.message=Есть открытые хранилища quit.message=Есть открытые хранилища
quit.description=Пожалуйста, подтвердите, что вы хотите выйти. Криптоматор корректно заблокирует все разблокированные хранилища для предотвращения потери данных. quit.description=Подтвердите, что вы хотите выйти. Cryptomator корректно заблокирует все разблокированные хранилища для предотвращения потери данных.
quit.lockAndQuitBtn=Заблокировать и выйти quit.lockAndQuitBtn=Заблокировать и выйти
# Forced Quit # Forced Quit
@@ -54,7 +54,6 @@ unlock.unlockBtn=අගුළුහරින්න
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
## Failure ## Failure
+27 -10
View File
@@ -123,6 +123,8 @@ unlock.success.description=Odomknutie "%s" úspešné! Váš trezor je už prís
unlock.success.rememberChoice=Zapamätať voľbu, už viac nezobrazovať unlock.success.rememberChoice=Zapamätať voľbu, už viac nezobrazovať
unlock.success.revealBtn=Odkryť disk unlock.success.revealBtn=Odkryť disk
## Failure ## Failure
unlock.error.customPath.message=Nie je možné namapovať trezor na uživateĺskej ceste
unlock.error.customPath.description.generic=Vybrali ste voliteľnú cestu pripojenia pre tento trezor, ale použiť ho zlyhalo so správou: %s
## Hub ## Hub
hub.noKeychain.message=Nemôžem pristúpiť ku kľúču zariadenia hub.noKeychain.message=Nemôžem pristúpiť ku kľúču zariadenia
hub.noKeychain.description=V poradí odomknutia Hub trezorov, je požadovaný kľúč zariadenia ktorý je zabezpečený použitím keychain. K vykonaniu povoľte "%s" a zvoľte keychain v nastaveniach. hub.noKeychain.description=V poradí odomknutia Hub trezorov, je požadovaný kľúč zariadenia ktorý je zabezpečený použitím keychain. K vykonaniu povoľte "%s" a zvoľte keychain v nastaveniach.
@@ -150,9 +152,8 @@ hub.registerFailed.description=Vznikla chyba počas pomenovávacieho procesu. Pr
hub.unauthorized.message=Prístup zamietnutý hub.unauthorized.message=Prístup zamietnutý
hub.unauthorized.description=Vaše zaradenie zatiaľ ešte nebolo autorizované pre pristúp tohto trezora. Požiadajte majiteľa trezora o autorizovanie. hub.unauthorized.description=Vaše zaradenie zatiaľ ešte nebolo autorizované pre pristúp tohto trezora. Požiadajte majiteľa trezora o autorizovanie.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Licencia prekročená hub.invalidLicense.message=Neplatná licencia Hub-u
hub.licenseExceeded.description=Cryptomator Hub má prístup pre viac užívateľov ako povoľuje licencia. Prosím kontaktujte svojho Hub administrátora pre aktualizovanie licencie alebo admina trezoru pre odstránenie užívateľov z trezorov. hub.invalidLicense.description=Vaša inštancia Cryptomator Hub-u má neplatnú licenciu. Prosím informujte Hub administrátora pre aktualizáciu alebo obnovenie licencie.
# Lock # Lock
## Force ## Force
@@ -271,7 +272,16 @@ preferences.interface.showMinimizeButton=Ukáž minimalizačné tlačidlo
preferences.interface.showTrayIcon=Ukázať ikonu na sytémovej lište (vyžaduje reštart) preferences.interface.showTrayIcon=Ukázať ikonu na sytémovej lište (vyžaduje reštart)
## Volume ## Volume
preferences.volume=Virtuálny disk preferences.volume=Virtuálny disk
preferences.volume.type=Typ oddielu (vyžaduje reštart)
preferences.volume.type.automatic=Automaticky preferences.volume.type.automatic=Automaticky
preferences.volume.docsTooltip=Pre viac informácií ohľadne iných typov volume otvorte dokumentáciu.
preferences.volume.tcp.port=TCP port
preferences.volume.supportedFeatures=Zvolený typ oddielu podporuje nasledovné funkcie:
preferences.volume.feature.mountAuto=Automatická voľba bodu pripojenia
preferences.volume.feature.mountToDir=Voliteľný adresár, ako bod pripojenia
preferences.volume.feature.mountToDriveLetter=Písmeno disku, ako bod pripojenia
preferences.volume.feature.mountFlags=Vlastné parametre mapovania
preferences.volume.feature.readOnly=Mapovanie len na čítanie
## Updates ## Updates
preferences.updates=Aktualizácie preferences.updates=Aktualizácie
preferences.updates.currentVersion=Aktuálna verzia: %s preferences.updates.currentVersion=Aktuálna verzia: %s
@@ -294,14 +304,14 @@ stats.title=Štatistiky pre %s
stats.cacheHitRate=Pomer nakešovaných záznamov stats.cacheHitRate=Pomer nakešovaných záznamov
## Read ## Read
stats.read.throughput.idle=Čítanie: nečinnosť stats.read.throughput.idle=Čítanie: nečinnosť
stats.read.throughput.kibs=Čítanie: %.2f kiB/s stats.read.throughput.kibs=Čítanie: %.2f KiB/s
stats.read.throughput.mibs=Čítanie: %.2f MiB/s stats.read.throughput.mibs=Čítanie: %.2f MiB/s
stats.read.total.data.none=Čítanie dát: - stats.read.total.data.none=Čítanie dát: -
stats.read.total.data.kib=Čítanie dát: %.1f kiB stats.read.total.data.kib=Čítanie dát: %.1f KiB
stats.read.total.data.mib=Čítanie dát: %.1f MiB stats.read.total.data.mib=Čítanie dát: %.1f MiB
stats.read.total.data.gib=Čítanie dát: %.1f GiB stats.read.total.data.gib=Čítanie dát: %.1f GiB
stats.decr.total.data.none=Odkódované dáta: - stats.decr.total.data.none=Odkódované dáta: -
stats.decr.total.data.kib=Odkódované dáta: %.1f kiB stats.decr.total.data.kib=Odkódované dáta: %.1f KiB
stats.decr.total.data.mib=Odkódované dáta: %.1f MiB stats.decr.total.data.mib=Odkódované dáta: %.1f MiB
stats.decr.total.data.gib=Odkódované dáta: %.1f GiB stats.decr.total.data.gib=Odkódované dáta: %.1f GiB
stats.read.accessCount=Spolu načítané: %d stats.read.accessCount=Spolu načítané: %d
@@ -310,11 +320,11 @@ stats.write.throughput.idle=Zápis: nečinnosť
stats.write.throughput.kibs=Zápis: %.2f KiB/s stats.write.throughput.kibs=Zápis: %.2f KiB/s
stats.write.throughput.mibs=Zápis: %.2f MiB/s stats.write.throughput.mibs=Zápis: %.2f MiB/s
stats.write.total.data.none=štatistika.zápis.celkové.dáta.nič stats.write.total.data.none=štatistika.zápis.celkové.dáta.nič
stats.write.total.data.kib=Zapísaných dát: %.1f kiB stats.write.total.data.kib=Zapísaných dát: %.1f KiB
stats.write.total.data.mib=Zapísaných dát: %.1f MiB stats.write.total.data.mib=Zapísaných dát: %.1f MiB
stats.write.total.data.gib=Zapísaných dát: %.1f GiB stats.write.total.data.gib=Zapísaných dát: %.1f GiB
stats.encr.total.data.none=Zapísaných dát: - stats.encr.total.data.none=Zapísaných dát: -
stats.encr.total.data.kib=Odkódovaných dát: %.1f kiB stats.encr.total.data.kib=Odkódované dáta: %.1f KiB
stats.encr.total.data.mib=Odkódovaných dát: %.1f MiB stats.encr.total.data.mib=Odkódovaných dát: %.1f MiB
stats.encr.total.data.gib=Odkódovaných dát: %.1f GiB stats.encr.total.data.gib=Odkódovaných dát: %.1f GiB
stats.write.accessCount=Suma zápisov: %d stats.write.accessCount=Suma zápisov: %d
@@ -352,11 +362,12 @@ main.vaultDetail.passwordSavedInKeychain=Heslo uložené
main.vaultDetail.unlockedStatus=Odomknutý main.vaultDetail.unlockedStatus=Odomknutý
main.vaultDetail.accessLocation=Obsah Vášho trezora je dostupný tu: main.vaultDetail.accessLocation=Obsah Vášho trezora je dostupný tu:
main.vaultDetail.revealBtn=Odkry disk main.vaultDetail.revealBtn=Odkry disk
main.vaultDetail.copyUri=Kopírovať URI
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.throughput.idle=nečinný main.vaultDetail.throughput.idle=nečinný
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Štatistiky trezora main.vaultDetail.stats=Štatistiky trezora
main.vaultDetail.locateEncryptedFileBtn=Lokalizujte zašifrovaný súbor main.vaultDetail.locateEncryptedFileBtn=Lokalizujte zašifrovaný súbor
@@ -401,13 +412,17 @@ vaultOptions.general.startHealthCheckBtn=Spustiť kontrolu zdravia
## Mount ## Mount
vaultOptions.mount=Mapovanie vaultOptions.mount=Mapovanie
vaultOptions.mount.info=Voľby závisia od typu zvolenej jednotky.
vaultOptions.mount.linkToPreferences=Otvoriť vlastnosti virtuálnej jednotky
vaultOptions.mount.readonly=Len-čítanie vaultOptions.mount.readonly=Len-čítanie
vaultOptions.mount.customMountFlags=Vlastné parametre mapovania vaultOptions.mount.customMountFlags=Vlastné parametre mapovania
vaultOptions.mount.winDriveLetterOccupied=obsadený vaultOptions.mount.winDriveLetterOccupied=obsadený
vaultOptions.mount.mountPoint=Bod mapovania vaultOptions.mount.mountPoint=Bod mapovania
vaultOptions.mount.mountPoint.auto=Automaticky zvoľ vhodné umiestnenie vaultOptions.mount.mountPoint.auto=Automaticky zvoľ vhodné umiestnenie
vaultOptions.mount.mountPoint.driveLetter=Použiť pridelené písmeno disku vaultOptions.mount.mountPoint.driveLetter=Použiť pridelené písmeno disku
vaultOptions.mount.mountPoint.custom=Použiť zvolený adresár
vaultOptions.mount.mountPoint.directoryPickerButton=Zvoliť… vaultOptions.mount.mountPoint.directoryPickerButton=Zvoliť…
vaultOptions.mount.mountPoint.directoryPickerTitle=Vyberte adresár
## Master Key ## Master Key
vaultOptions.masterkey=Heslo vaultOptions.masterkey=Heslo
vaultOptions.masterkey.changePasswordBtn=Zmeniť heslo vaultOptions.masterkey.changePasswordBtn=Zmeniť heslo
@@ -428,7 +443,9 @@ recoveryKey.display.StorageHints=Uchovávajte ho na bezpečnom mieste, ako napr.
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Resetovanie hesla recoveryKey.recover.title=Resetovanie hesla
recoveryKey.recover.prompt=Zadajte Váš kľúč obnovy pre "%s": recoveryKey.recover.prompt=Zadajte Váš kľúč obnovy pre "%s":
recoveryKey.recover.validKey=Toto je platný kľúč obnovy recoveryKey.recover.correctKey=Toto je platný kľúč obnovy
recoveryKey.recover.wrongKey=Tento kľúč obnovy patrí inému trezoru
recoveryKey.recover.invalidKey=Toto je neplatný kľúč obnovy
recoveryKey.printout.heading=Kľúč obnovy Cryptomator-a\n "%s"\n recoveryKey.printout.heading=Kľúč obnovy Cryptomator-a\n "%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Resetovať recoveryKey.recover.resetBtn=Resetovať
@@ -54,7 +54,6 @@ error.technicalDetails=Podrobnosti:
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.retryBtn=Poizkusi znova lock.forced.retryBtn=Poizkusi znova
@@ -79,6 +78,7 @@ lock.forced.retryBtn=Poizkusi znova
## General ## General
## Interface ## Interface
## Volume ## Volume
preferences.volume.docsTooltip=Informacije o različnih podatkovnih nosilcih najdete v navodilih.
## Updates ## Updates
## Contribution ## Contribution
#<-- Add entries for donations and code/translation/documentation contribution --> #<-- Add entries for donations and code/translation/documentation contribution -->
@@ -117,6 +117,9 @@ main.vaultDetail.locateEncryptedFileBtn=Poišči šifrirano datoteko
## Display Recovery Key ## Display Recovery Key
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.correctKey=Obnovitveni ključ je pravilen
recoveryKey.recover.wrongKey=Ta obnovitveni ključ se ujema z drugim trezorjem
recoveryKey.recover.invalidKey=Obnovitveni ključ ni pravilen
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
@@ -111,7 +111,6 @@ unlock.success.revealBtn=Otvori disk
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.description=Zaključavanje "%s" je blokirano operacijama na čekanju ili otvorenim datotekama. Možete prisilno zaključati ovaj sef, međutim prekid "I/O" operacija može rezultirati gubitkom nesačuvanih podataka. lock.forced.description=Zaključavanje "%s" je blokirano operacijama na čekanju ili otvorenim datotekama. Možete prisilno zaključati ovaj sef, međutim prekid "I/O" operacija može rezultirati gubitkom nesačuvanih podataka.
@@ -186,27 +185,21 @@ stats.title=Statistika za %s
stats.cacheHitRate=Frekventnost keš memorije stats.cacheHitRate=Frekventnost keš memorije
## Read ## Read
stats.read.throughput.idle=Čitanje: u pripravnosti stats.read.throughput.idle=Čitanje: u pripravnosti
stats.read.throughput.kibs=Čitanje: %.2f kiB/s
stats.read.throughput.mibs=Čitanje: %.2f MiB/s stats.read.throughput.mibs=Čitanje: %.2f MiB/s
stats.read.total.data.none=Učitano podataka: - stats.read.total.data.none=Učitano podataka: -
stats.read.total.data.kib=Učitano podataka: %.1f kiB
stats.read.total.data.mib=Učitano podataka: %.1f MiB stats.read.total.data.mib=Učitano podataka: %.1f MiB
stats.read.total.data.gib=Učitano podataka: %.1f GiB stats.read.total.data.gib=Učitano podataka: %.1f GiB
stats.decr.total.data.none=Dešifrovano podataka: - stats.decr.total.data.none=Dešifrovano podataka: -
stats.decr.total.data.kib=Dešifrovano podataka: %.1f kiB
stats.decr.total.data.mib=Dešifrovano podataka: %.1f MiB stats.decr.total.data.mib=Dešifrovano podataka: %.1f MiB
stats.decr.total.data.gib=Dešifrovano podataka: %.1f GiB stats.decr.total.data.gib=Dešifrovano podataka: %.1f GiB
stats.read.accessCount=Укупно учитано: %d stats.read.accessCount=Укупно учитано: %d
## Write ## Write
stats.write.throughput.idle=Писање: у приправности stats.write.throughput.idle=Писање: у приправности
stats.write.throughput.kibs=Писање: %.2f kiB/s
stats.write.throughput.mibs=Писање: %.2f MiB/s stats.write.throughput.mibs=Писање: %.2f MiB/s
stats.write.total.data.none=Уписано података: - stats.write.total.data.none=Уписано података: -
stats.write.total.data.kib=Уписано података: %.1f kiB
stats.write.total.data.mib=Уписано података: %.1f MiB stats.write.total.data.mib=Уписано података: %.1f MiB
stats.write.total.data.gib=Уписано података: %.1f GiB stats.write.total.data.gib=Уписано података: %.1f GiB
stats.encr.total.data.none=Шифровано података: - stats.encr.total.data.none=Шифровано података: -
stats.encr.total.data.kib=Шифровано података: %.1f kiB
stats.encr.total.data.mib=Шифровано података: %.1f MiB stats.encr.total.data.mib=Шифровано података: %.1f MiB
stats.encr.total.data.gib=Шифровано података: %.1f GiB stats.encr.total.data.gib=Шифровано података: %.1f GiB
stats.write.accessCount=Укупно уписано: %d stats.write.accessCount=Укупно уписано: %d
@@ -246,7 +239,6 @@ main.vaultDetail.lockBtn=Zaključaj
main.vaultDetail.bytesPerSecondRead=Читање: main.vaultDetail.bytesPerSecondRead=Читање:
main.vaultDetail.bytesPerSecondWritten=Писање: main.vaultDetail.bytesPerSecondWritten=Писање:
main.vaultDetail.throughput.idle=у стању мировања main.vaultDetail.throughput.idle=у стању мировања
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Статистика сефа main.vaultDetail.stats=Статистика сефа
### Missing ### Missing
@@ -304,7 +296,7 @@ recoveryKey.display.StorageHints=Чувајте га на веома сигур
## Reset Password ## Reset Password
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.prompt=Унесите резервни кључ за "%s": recoveryKey.recover.prompt=Унесите резервни кључ за "%s":
recoveryKey.recover.validKey=Ово је исправан резервни кључ recoveryKey.recover.correctKey=Ово је исправан резервни кључ
recoveryKey.printout.heading=Cryptomator Резервни Кључ\n"%s"\n recoveryKey.printout.heading=Cryptomator Резервни Кључ\n"%s"\n
### Reset Password ### Reset Password
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
@@ -104,7 +104,6 @@ unlock.success.revealBtn=Otvori disk
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
## Failure ## Failure
@@ -176,14 +175,11 @@ stats.title=Statistika za %s
stats.cacheHitRate=Frekventnost keš memorije stats.cacheHitRate=Frekventnost keš memorije
## Read ## Read
stats.read.throughput.idle=Čitanje: u pripravnosti stats.read.throughput.idle=Čitanje: u pripravnosti
stats.read.throughput.kibs=Čitanje: %.2f kiB/s
stats.read.throughput.mibs=Čitanje: %.2f MiB/s stats.read.throughput.mibs=Čitanje: %.2f MiB/s
stats.read.total.data.none=Učitano podataka: - stats.read.total.data.none=Učitano podataka: -
stats.read.total.data.kib=Učitano podataka: %.1f kiB
stats.read.total.data.mib=Učitano podataka: %.1f MiB stats.read.total.data.mib=Učitano podataka: %.1f MiB
stats.read.total.data.gib=Učitano podataka: %.1f GiB stats.read.total.data.gib=Učitano podataka: %.1f GiB
stats.decr.total.data.none=Dešifrovano podataka: - stats.decr.total.data.none=Dešifrovano podataka: -
stats.decr.total.data.kib=Dešifrovano podataka: %.1f kiB
stats.decr.total.data.mib=Dešifrovano podataka: %.1f MiB stats.decr.total.data.mib=Dešifrovano podataka: %.1f MiB
stats.decr.total.data.gib=Dešifrovano podataka: %.1f GiB stats.decr.total.data.gib=Dešifrovano podataka: %.1f GiB
## Write ## Write
+13 -11
View File
@@ -154,9 +154,8 @@ hub.registerFailed.description=Ett fel uppstod i namngivningsprocessen. För mer
hub.unauthorized.message=Åtkomst nekad hub.unauthorized.message=Åtkomst nekad
hub.unauthorized.description=Din enhet har ännu inte behörighet att komma åt detta valv. Be valvägaren att godkänna det. hub.unauthorized.description=Din enhet har ännu inte behörighet att komma åt detta valv. Be valvägaren att godkänna det.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Licensen överskriden hub.invalidLicense.message=Din Hub-licens är ogiltig
hub.licenseExceeded.description=Cryptomator Hub har gett tillgång till fler användare än licensen medger. Kontakta din Hub-administratör för att uppgradera licensen eller en valvadministratör för att minska antalet användare i valv. hub.invalidLicense.description=Din Cryptomator Hub-instans har en ogiltig licens. Vänligen informera en Hub administratör för att uppgradera eller förnya licensen.
# Lock # Lock
## Force ## Force
@@ -277,6 +276,7 @@ preferences.interface.showTrayIcon=Visa ikon i aktivitetsfältet (kräver omstar
preferences.volume=Virtuell enhet preferences.volume=Virtuell enhet
preferences.volume.type=Volymtyp (kräver omstart) preferences.volume.type=Volymtyp (kräver omstart)
preferences.volume.type.automatic=Automatiskt preferences.volume.type.automatic=Automatiskt
preferences.volume.docsTooltip=Öppna dokumentationen för att läsa mer om de olika volymtyperna.
preferences.volume.tcp.port=TCP-port preferences.volume.tcp.port=TCP-port
preferences.volume.supportedFeatures=Den valda volymtypen stöder följande funktioner: preferences.volume.supportedFeatures=Den valda volymtypen stöder följande funktioner:
preferences.volume.feature.mountAuto=Automatiskt val av monteringspunkt preferences.volume.feature.mountAuto=Automatiskt val av monteringspunkt
@@ -303,27 +303,27 @@ stats.title=Statistik för %s
stats.cacheHitRate=Cache frekvens stats.cacheHitRate=Cache frekvens
## Read ## Read
stats.read.throughput.idle=Läs: inaktiv stats.read.throughput.idle=Läs: inaktiv
stats.read.throughput.kibs=Läs: %.2f kiB/s stats.read.throughput.kibs=Läst: %.2f KiB/s
stats.read.throughput.mibs=Läs: %.2f kiB/s stats.read.throughput.mibs=Läs: %.2f kiB/s
stats.read.total.data.none=Data läst: - stats.read.total.data.none=Data läst: -
stats.read.total.data.kib=Data läst: %.1f kiB stats.read.total.data.kib=Data läst: %.1f KiB
stats.read.total.data.mib=Data läst: %.1f kiB stats.read.total.data.mib=Data läst: %.1f kiB
stats.read.total.data.gib=Data läst: %.1f GiB stats.read.total.data.gib=Data läst: %.1f GiB
stats.decr.total.data.none=Data dekrypterad: - stats.decr.total.data.none=Data dekrypterad: -
stats.decr.total.data.kib=Data dekrypterad: %.1f kiB stats.decr.total.data.kib=Dekrypterade data: %.1f KiB
stats.decr.total.data.mib=Data dekrypterad: %.1f MiB stats.decr.total.data.mib=Data dekrypterad: %.1f MiB
stats.decr.total.data.gib=Data dekrypterad: %.1f GiB stats.decr.total.data.gib=Data dekrypterad: %.1f GiB
stats.read.accessCount=Totalt läst: %d stats.read.accessCount=Totalt läst: %d
## Write ## Write
stats.write.throughput.idle=Skriv: inaktiv stats.write.throughput.idle=Skriv: inaktiv
stats.write.throughput.kibs=Skriv: %.2f kiB/s stats.write.throughput.kibs=Skriv: %.2f KiB/s
stats.write.throughput.mibs=Skriv: %.2f MiB/s stats.write.throughput.mibs=Skriv: %.2f MiB/s
stats.write.total.data.none=Data skrivet: - stats.write.total.data.none=Data skrivet: -
stats.write.total.data.kib=Data skrivet: %.1f kiB stats.write.total.data.kib=Data skrivet: %.1f KiB
stats.write.total.data.mib=Data skrivet: %.1f MiB stats.write.total.data.mib=Data skrivet: %.1f MiB
stats.write.total.data.gib=Data skrivet: %.1f GiB stats.write.total.data.gib=Data skrivet: %.1f GiB
stats.encr.total.data.none=Data krypterad: - stats.encr.total.data.none=Data krypterad: -
stats.encr.total.data.kib=Data krypterad: %.1f kiB stats.encr.total.data.kib=Krypterade data: %.1f KiB
stats.encr.total.data.mib=Data krypterad: %.1f MiB stats.encr.total.data.mib=Data krypterad: %.1f MiB
stats.encr.total.data.gib=Data krypterad: %.1f GiB stats.encr.total.data.gib=Data krypterad: %.1f GiB
stats.write.accessCount=Totalt skrivet: %d stats.write.accessCount=Totalt skrivet: %d
@@ -365,7 +365,7 @@ main.vaultDetail.lockBtn=Lås
main.vaultDetail.bytesPerSecondRead=Läs: main.vaultDetail.bytesPerSecondRead=Läs:
main.vaultDetail.bytesPerSecondWritten=Skriv: main.vaultDetail.bytesPerSecondWritten=Skriv:
main.vaultDetail.throughput.idle=inaktiv main.vaultDetail.throughput.idle=inaktiv
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Valv Statistik main.vaultDetail.stats=Valv Statistik
main.vaultDetail.locateEncryptedFileBtn=Leta upp krypterad fil main.vaultDetail.locateEncryptedFileBtn=Leta upp krypterad fil
@@ -437,7 +437,9 @@ recoveryKey.display.StorageHints=Spara den på en säker plats, t.ex:\n • I en
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Återställ lösenord recoveryKey.recover.title=Återställ lösenord
recoveryKey.recover.prompt=Ange din återställningsnyckel för "%s": recoveryKey.recover.prompt=Ange din återställningsnyckel för "%s":
recoveryKey.recover.validKey=Detta är en giltig återställningsnyckel recoveryKey.recover.correctKey=Denna återställningsnyckel är korrekt
recoveryKey.recover.wrongKey=Denna återställningsnyckel tillhör ett annat valv
recoveryKey.recover.invalidKey=Denna återställningsnyckel är ogiltig
recoveryKey.printout.heading=Cryptomator återställningsnyckel\n"%s"\n recoveryKey.printout.heading=Cryptomator återställningsnyckel\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Återställ recoveryKey.recover.resetBtn=Återställ
+60 -11
View File
@@ -123,7 +123,14 @@ unlock.success.description=Imefunguliwa "%s" kwa mafanikio! Kuba yako sasa inapa
unlock.success.rememberChoice=Kumbuka chaguo, usionyeshe hii tena unlock.success.rememberChoice=Kumbuka chaguo, usionyeshe hii tena
unlock.success.revealBtn=Fichua Kiendeshaji unlock.success.revealBtn=Fichua Kiendeshaji
## Failure ## Failure
unlock.error.customPath.message=Haiwezi kupachika kuba kwenye njia maalum
unlock.error.customPath.description.notSupported=Ikiwa ungependa kuendelea kutumia njia maalum, tafadhali nenda kwa mapendeleo na uchague aina ya sauti inayoitumia. Vinginevyo, nenda kwa chaguo za kuba na uchague sehemu ya kupachika inayotumika.
unlock.error.customPath.description.notExists=Njia maalum ya kupachika haipo. Iunde katika mfumo wako wa faili wa karibu au ubadilishe katika chaguzi za kuba.
unlock.error.customPath.description.generic=Umechagua njia maalum ya kupachika kwa kuba hii, lakini kuitumia imeshindwa na ujumbe: %s
## Hub ## Hub
hub.noKeychain.message=Imeshindwa kufikia ufunguo wa kifaa
hub.noKeychain.description=Ili kufungua kuba za Hub, ufunguo wa kifaa unahitajika, ambao hulindwa kwa kutumia mnyororo wa vitufe. Ili kuendelea, washa "%s" na uchague mnyororo wa vitufe katika mapendeleo.
hub.noKeychain.openBtn=Fungua Mapendeleo
### Waiting ### Waiting
hub.auth.message=Inasubiri uthibitishaji… hub.auth.message=Inasubiri uthibitishaji…
hub.auth.description=Unapaswa kuelekezwa upya kiotomatiki kwa ukurasa wa kuingia. hub.auth.description=Unapaswa kuelekezwa upya kiotomatiki kwa ukurasa wa kuingia.
@@ -147,9 +154,8 @@ hub.registerFailed.description=Hitilafu imetupwa katika mchakato wa kumtaja. Kwa
hub.unauthorized.message=Ufikiaji umekataliwa hub.unauthorized.message=Ufikiaji umekataliwa
hub.unauthorized.description=Kifaa chako bado hakijaidhinishwa kufikia kuba hii. Uliza mwenye kuba aidhinishe. hub.unauthorized.description=Kifaa chako bado hakijaidhinishwa kufikia kuba hii. Uliza mwenye kuba aidhinishe.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Leseni imepitwa hub.invalidLicense.message=Leseni ya Hub ni batili
hub.licenseExceeded.description=Cryptomator Hub imetoa ufikiaji kwa watumiaji zaidi ya vibali vyake vya leseni. Tafadhali wasiliana na msimamizi wako wa Hub ili kuboresha leseni au msimamizi wa kuba ili kuondoa watumiaji kwenye kuba. hub.invalidLicense.description=Mfano wako wa Cryptomator Hub una leseni batili. Tafadhali mjulishe msimamizi wa Hub ili kuboresha au kusasisha leseni.
# Lock # Lock
## Force ## Force
@@ -165,6 +171,11 @@ lock.fail.description=Kuba "%s" haikuweza kufungwa. Hakikisha kazi isiyohifadhiw
migration.title=Pandisha daraja Kuba migration.title=Pandisha daraja Kuba
## Start ## Start
migration.start.header=Pandisha daraja Kuba migration.start.header=Pandisha daraja Kuba
migration.start.text=Ili kufungua kuba yako "%s" katika toleo hili jipya la Cryptomator, kuba inahitaji kuboreshwa hadi umbizo jipya zaidi. Kabla ya kufanya hivyo, unapaswa kujua yafuatayo:
migration.start.remarkUndone=Uboreshaji huu hauwezi kutenduliwa.
migration.start.remarkVersions=Matoleo ya zamani ya Cryptomator hayataweza kufungua kuba iliyosasishwa.
migration.start.remarkCanRun=Lazima uwe na uhakika kwamba kila kifaa ambacho unaweza kufikia kubaki kinaweza kutumia toleo hili la Cryptomator.
migration.start.remarkSynced=Lazima uhakikishe kuwa kuba yako imesawazishwa kikamilifu kwenye kifaa hiki, na kwenye vifaa vyako vingine, kabla ya kukiboresha.
migration.start.confirm=Nimesoma na kuelewa habari hapo juu migration.start.confirm=Nimesoma na kuelewa habari hapo juu
## Run ## Run
migration.run.enterPassword=Ingiza neno la siri ya "%s" migration.run.enterPassword=Ingiza neno la siri ya "%s"
@@ -213,8 +224,25 @@ health.check.detail.checkFinished=Ukaguzi umekamilika kwa ufanisi.
health.check.detail.checkFinishedAndFound=Ukaguzi ulimaliza kukimbia. Tafadhali angalia matokeo. health.check.detail.checkFinishedAndFound=Ukaguzi ulimaliza kukimbia. Tafadhali angalia matokeo.
health.check.detail.checkFailed=Ukaguzi ulitoka kwa sababu ya kosa. health.check.detail.checkFailed=Ukaguzi ulitoka kwa sababu ya kosa.
health.check.detail.checkCancelled=Ukaguzi ulikatishwa. health.check.detail.checkCancelled=Ukaguzi ulikatishwa.
health.check.detail.listFilters.label=Chuja
health.check.detail.fixAllSpecificBtn=Rekebisha aina zote
health.check.exportBtn=Hamisha Ripoti health.check.exportBtn=Hamisha Ripoti
## Result view ## Result view
health.result.severityFilter.all=Ukali - Yote
health.result.severityFilter.good=Nzuri
health.result.severityFilter.info=Taarifa
health.result.severityFilter.warn=Onyo
health.result.severityFilter.crit=Muhimu
health.result.severityTip.good=Ukali: Nzuri\nMuundo wa kuba ya kawaida.
health.result.severityTip.info=Ukali: Taarifa\nMuundo wa kuba ukiwa mzima, marekebisho yamependekezwa.
health.result.severityTip.warn=Ukali: Onyo\nMuundo wa kuba umeharibika, rekebisha inashauriwa sana.
health.result.severityTip.crit=Ukali: Muhimu\nMuundo wa kuba umeharibika, upotezaji wa data umebainishwa.
health.result.fixStateFilter.all=Rekebisha hali - Yote
health.result.fixStateFilter.fixable=Inaweza kurekebishwa
health.result.fixStateFilter.notFixable=Haiwezi kurekebishika
health.result.fixStateFilter.fixing=Inarekebisha…
health.result.fixStateFilter.fixed=Imerekebishwa
health.result.fixStateFilter.fixFailed=Imeshindwa kurekebisha
## Fix Application ## Fix Application
health.fix.fixBtn=Kurekebisha health.fix.fixBtn=Kurekebisha
health.fix.successTip=Rekebisha imefanikiwa health.fix.successTip=Rekebisha imefanikiwa
@@ -246,7 +274,15 @@ preferences.interface.showMinimizeButton=Onyesha kitufe cha kupunguza
preferences.interface.showTrayIcon=Onyesha ikoni ya trei (inahitaji kuanzisha upya) preferences.interface.showTrayIcon=Onyesha ikoni ya trei (inahitaji kuanzisha upya)
## Volume ## Volume
preferences.volume=Kiendeshi pepe preferences.volume=Kiendeshi pepe
preferences.volume.type=Aina ya Sauti (inahitaji kuanzishwa upya)
preferences.volume.type.automatic=Otomatiki preferences.volume.type.automatic=Otomatiki
preferences.volume.docsTooltip=Fungua hati ili kujifunza zaidi kuhusu aina tofauti za sauti.
preferences.volume.tcp.port=Bandari ya TCP
preferences.volume.supportedFeatures=Aina ya sauti iliyochaguliwa inasaidia vipengele vifuatavyo:
preferences.volume.feature.mountAuto=Uchaguzi wa sehemu ya kupachika otomatiki
preferences.volume.feature.mountToDir=Saraka maalum kama sehemu ya kupachika
preferences.volume.feature.mountToDriveLetter=Endesha barua kama sehemu ya kupachika
preferences.volume.feature.mountFlags=Chaguzi maalum za kupachika
## Updates ## Updates
preferences.updates=Sasishi preferences.updates=Sasishi
preferences.updates.currentVersion=Toleo la Sasa: %s preferences.updates.currentVersion=Toleo la Sasa: %s
@@ -269,32 +305,34 @@ stats.title=Takwimu za %s
stats.cacheHitRate=Kiwango cha Hit ya Akiba stats.cacheHitRate=Kiwango cha Hit ya Akiba
## Read ## Read
stats.read.throughput.idle=Soma: bila kazi stats.read.throughput.idle=Soma: bila kazi
stats.read.throughput.kibs=Soma:%.2f kiB/s stats.read.throughput.kibs=Soma: %.2f KiB/s
stats.read.throughput.mibs=Soma:%.2fMiB/s stats.read.throughput.mibs=Soma:%.2fMiB/s
stats.read.total.data.none=Data soma: - stats.read.total.data.none=Data soma: -
stats.read.total.data.kib=Data soma:%.1f kiB stats.read.total.data.kib=Data imesomwa: %.1f KiB
stats.read.total.data.mib=Data soma: %.1f MiB stats.read.total.data.mib=Data soma: %.1f MiB
stats.read.total.data.gib=Data soma: %.1f GiB stats.read.total.data.gib=Data soma: %.1f GiB
stats.decr.total.data.none=Data iliyosimbwa kwa njia fiche: - stats.decr.total.data.none=Data iliyosimbwa kwa njia fiche: -
stats.decr.total.data.kib=Data iliyosimbwa kwa njia fiche: %.1f kiB stats.decr.total.data.kib=Data imesimbwa: %.1f KiB
stats.decr.total.data.mib=Data iliyosimbwa kwa njia fiche: %.1fMiB stats.decr.total.data.mib=Data iliyosimbwa kwa njia fiche: %.1fMiB
stats.decr.total.data.gib=Data iliyosimbwa kwa njia fiche: %.1f GiB stats.decr.total.data.gib=Data iliyosimbwa kwa njia fiche: %.1f GiB
stats.read.accessCount=Jumla ya kusoma: %d stats.read.accessCount=Jumla ya kusoma: %d
## Write ## Write
stats.write.throughput.idle=Andika: bila kazi stats.write.throughput.idle=Andika: bila kazi
stats.write.throughput.kibs=Andika:%.2f kiB/s stats.write.throughput.kibs=Andika: %.2f KiB/s
stats.write.throughput.mibs=Andika: %.2f MiB/s stats.write.throughput.mibs=Andika: %.2f MiB/s
stats.write.total.data.none=Data iliyoandikwa: - stats.write.total.data.none=Data iliyoandikwa: -
stats.write.total.data.kib=Data iliyoandikwa: %.1f kiB stats.write.total.data.kib=Data iliyoandikwa: %.1f KiB
stats.write.total.data.mib=Data iliyoandikwa: %.1f MiB stats.write.total.data.mib=Data iliyoandikwa: %.1f MiB
stats.write.total.data.gib=Data iliyoandikwa: %.1f GiB stats.write.total.data.gib=Data iliyoandikwa: %.1f GiB
stats.encr.total.data.none=Data iliyosimbwa kwa njia fiche: - stats.encr.total.data.none=Data iliyosimbwa kwa njia fiche: -
stats.encr.total.data.kib=Data iliyosimbwa kwa njia fiche: %.1f kiB stats.encr.total.data.kib=Data imesimbwa kwa njia fiche: %.1f KiB
stats.encr.total.data.mib=Data iliyosimbwa kwa njia fiche: %.1f MiB stats.encr.total.data.mib=Data iliyosimbwa kwa njia fiche: %.1f MiB
stats.encr.total.data.gib=Data iliyosimbwa kwa njia fiche: %.1f GiB stats.encr.total.data.gib=Data iliyosimbwa kwa njia fiche: %.1f GiB
stats.write.accessCount=Jumla ya maandishi anaandika: %d stats.write.accessCount=Jumla ya maandishi anaandika: %d
## Accesses ## Accesses
stats.access.current=Ufikiaji: %d
stats.access.total=Jumla ya ufikiaji: %d
# Main Window # Main Window
@@ -325,13 +363,18 @@ main.vaultDetail.passwordSavedInKeychain=Neno la siri limehifadhiwa
main.vaultDetail.unlockedStatus=IMEFUNGULIWA main.vaultDetail.unlockedStatus=IMEFUNGULIWA
main.vaultDetail.accessLocation=Yaliyomo kwenye kuba yako yanapatikana hapa: main.vaultDetail.accessLocation=Yaliyomo kwenye kuba yako yanapatikana hapa:
main.vaultDetail.revealBtn=Fichua Kiendeshaji main.vaultDetail.revealBtn=Fichua Kiendeshaji
main.vaultDetail.copyUri=Nakili URI
main.vaultDetail.lockBtn=Funga main.vaultDetail.lockBtn=Funga
main.vaultDetail.bytesPerSecondRead=Soma: main.vaultDetail.bytesPerSecondRead=Soma:
main.vaultDetail.bytesPerSecondWritten=Andika: main.vaultDetail.bytesPerSecondWritten=Andika:
main.vaultDetail.throughput.idle=imezubaa main.vaultDetail.throughput.idle=imezubaa
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=Takwimu za Kuba main.vaultDetail.stats=Takwimu za Kuba
main.vaultDetail.locateEncryptedFileBtn=Tafuta Faili Iliyosimbwa kwa Njia Fiche
main.vaultDetail.locateEncryptedFileBtn.tooltip=Chagua faili kutoka kwa chumba chako ili kupata mwenza wake uliosimbwa kwa njia fiche
main.vaultDetail.encryptedPathsCopied=Njia Zimenakiliwa kwenye Ubao wa kunakili!
main.vaultDetail.filePickerTitle=Chagua Faili Ndani ya Kuba
### Missing ### Missing
main.vaultDetail.missing.info=Cryptomator haikuweza kupata kuba katika njia hii. main.vaultDetail.missing.info=Cryptomator haikuweza kupata kuba katika njia hii.
main.vaultDetail.missing.recheck=Kagua upya main.vaultDetail.missing.recheck=Kagua upya
@@ -370,13 +413,17 @@ vaultOptions.general.startHealthCheckBtn=Anza Ukaguzi wa Afya
## Mount ## Mount
vaultOptions.mount=Kuweka vaultOptions.mount=Kuweka
vaultOptions.mount.info=Chaguzi hutegemea aina ya sauti iliyochaguliwa.
vaultOptions.mount.linkToPreferences=Fungua mapendeleo ya hifadhi pepe
vaultOptions.mount.readonly=Soma-Tu vaultOptions.mount.readonly=Soma-Tu
vaultOptions.mount.customMountFlags=Vipepea Vya Mlima Maalum vaultOptions.mount.customMountFlags=Vipepea Vya Mlima Maalum
vaultOptions.mount.winDriveLetterOccupied=ulichukua vaultOptions.mount.winDriveLetterOccupied=ulichukua
vaultOptions.mount.mountPoint=Pointi ya kuweka vaultOptions.mount.mountPoint=Pointi ya kuweka
vaultOptions.mount.mountPoint.auto=Chagua otomatiki mahali panapofaa vaultOptions.mount.mountPoint.auto=Chagua otomatiki mahali panapofaa
vaultOptions.mount.mountPoint.driveLetter=Tumia barua kiendeshi kilichopangiwa vaultOptions.mount.mountPoint.driveLetter=Tumia barua kiendeshi kilichopangiwa
vaultOptions.mount.mountPoint.custom=Tumia saraka iliyochaguliwa
vaultOptions.mount.mountPoint.directoryPickerButton=Chagua… vaultOptions.mount.mountPoint.directoryPickerButton=Chagua…
vaultOptions.mount.mountPoint.directoryPickerTitle=Chagua saraka
## Master Key ## Master Key
vaultOptions.masterkey=Neno la siri vaultOptions.masterkey=Neno la siri
vaultOptions.masterkey.changePasswordBtn=Badilisha Neno la siri vaultOptions.masterkey.changePasswordBtn=Badilisha Neno la siri
@@ -397,7 +444,9 @@ recoveryKey.display.StorageHints=Weka mahali salama sana, kwa mfano:\n • Hifad
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Fufua Neno la siri recoveryKey.recover.title=Fufua Neno la siri
recoveryKey.recover.prompt=Ingiza ufunguo wako wa kurejesha kwa "%s": recoveryKey.recover.prompt=Ingiza ufunguo wako wa kurejesha kwa "%s":
recoveryKey.recover.validKey=Hii ni ufunguo halali wa kurejesha recoveryKey.recover.correctKey=Hii ni ufunguo halali wa kurejesha
recoveryKey.recover.wrongKey=Ufunguo huu wa urejeshaji ni wa kuba tofauti
recoveryKey.recover.invalidKey=Ufunguo huu wa kurejesha si sahihi
recoveryKey.printout.heading=Ufunguo wa Urejeshaji wa Cryptomator\n"%s"\n recoveryKey.printout.heading=Ufunguo wa Urejeshaji wa Cryptomator\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Weka upya recoveryKey.recover.resetBtn=Weka upya
@@ -126,7 +126,6 @@ unlock.success.revealBtn=இயக்ககத்தை வெளிப்பட
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.message=பூட்டுதல் தோல்வியடைந்தது lock.forced.message=பூட்டுதல் தோல்வியடைந்தது
@@ -197,27 +196,21 @@ stats.title=%s க்கான புள்ளிவிவரங்கள்
stats.cacheHitRate=தற்காலிக சேமிப்பு வீதம் stats.cacheHitRate=தற்காலிக சேமிப்பு வீதம்
## Read ## Read
stats.read.throughput.idle=படிக்கப்பட்டது: செயலற்றது stats.read.throughput.idle=படிக்கப்பட்டது: செயலற்றது
stats.read.throughput.kibs=படிக்கப்பட்டது: %.2f kiB/s
stats.read.throughput.mibs=படிக்கப்பட்டது: %.2f MiB/s stats.read.throughput.mibs=படிக்கப்பட்டது: %.2f MiB/s
stats.read.total.data.none=படிக்கப்பட்ட தரவு: - stats.read.total.data.none=படிக்கப்பட்ட தரவு: -
stats.read.total.data.kib=படிக்கப்பட்ட தரவு: %.1f kiB
stats.read.total.data.mib=படிக்கப்பட்ட தரவு: %.1f MiB stats.read.total.data.mib=படிக்கப்பட்ட தரவு: %.1f MiB
stats.read.total.data.gib=படிக்கப்பட்ட தரவு: %.1f GiB stats.read.total.data.gib=படிக்கப்பட்ட தரவு: %.1f GiB
stats.decr.total.data.none=மறைகுறிநீக்கப்பட்ட தரவு: - stats.decr.total.data.none=மறைகுறிநீக்கப்பட்ட தரவு: -
stats.decr.total.data.kib=மறைகுறிநீக்கப்பட்ட தரவு: %.1f kiB
stats.decr.total.data.mib=மறைகுறிநீக்கப்பட்ட தரவு: %.1f MiB stats.decr.total.data.mib=மறைகுறிநீக்கப்பட்ட தரவு: %.1f MiB
stats.decr.total.data.gib=மறைகுறிநீக்கப்பட்ட தரவு: %.1f GiB stats.decr.total.data.gib=மறைகுறிநீக்கப்பட்ட தரவு: %.1f GiB
stats.read.accessCount=மொத்த வாசிப்புகள்: %d stats.read.accessCount=மொத்த வாசிப்புகள்: %d
## Write ## Write
stats.write.throughput.idle=எழுதப்பட்டது: செயலற்ற நிலையில் stats.write.throughput.idle=எழுதப்பட்டது: செயலற்ற நிலையில்
stats.write.throughput.kibs=எழுதப்பட்டது: %.2f kiB/s
stats.write.throughput.mibs=எழுதப்பட்டது: %.2f MiB/s stats.write.throughput.mibs=எழுதப்பட்டது: %.2f MiB/s
stats.write.total.data.none=எழுதப்பட்ட தரவு: - stats.write.total.data.none=எழுதப்பட்ட தரவு: -
stats.write.total.data.kib=எழுதப்பட்ட தரவு: %.1f kiB
stats.write.total.data.mib=எழுதப்பட்ட தரவு: %.1f MiB stats.write.total.data.mib=எழுதப்பட்ட தரவு: %.1f MiB
stats.write.total.data.gib=எழுதப்பட்ட தரவு: %.1f GiB stats.write.total.data.gib=எழுதப்பட்ட தரவு: %.1f GiB
stats.encr.total.data.none=குறியாக்கம் செய்யப்பட்ட தரவு: - stats.encr.total.data.none=குறியாக்கம் செய்யப்பட்ட தரவு: -
stats.encr.total.data.kib=குறியாக்கம் செய்யப்பட்ட தரவு: %.1f kiB
stats.encr.total.data.mib=குறியாக்கம் செய்யப்பட்ட தரவு: %.1f MiB stats.encr.total.data.mib=குறியாக்கம் செய்யப்பட்ட தரவு: %.1f MiB
stats.encr.total.data.gib=குறியாக்கம் செய்யப்பட்ட தரவு: %.1f GiB stats.encr.total.data.gib=குறியாக்கம் செய்யப்பட்ட தரவு: %.1f GiB
stats.write.accessCount=மொத்த எழுதப்பட்டது: %d stats.write.accessCount=மொத்த எழுதப்பட்டது: %d
@@ -38,7 +38,6 @@
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
lock.forced.retryBtn=మళ్ళీ చేయండి lock.forced.retryBtn=మళ్ళీ చేయండి
@@ -97,7 +97,6 @@ unlock.unlockBtn=ปลดล็อก
### Unauthorized ### Unauthorized
### License Exceeded ### License Exceeded
# Lock # Lock
## Force ## Force
## Failure ## Failure
+24 -5
View File
@@ -123,6 +123,10 @@ unlock.success.description="%s" 'nin kilidi başarıyla açıldı! Kasanız şim
unlock.success.rememberChoice=Seçimi hatırla, bunu bir daha gösterme unlock.success.rememberChoice=Seçimi hatırla, bunu bir daha gösterme
unlock.success.revealBtn=Sürücüyü Göster unlock.success.revealBtn=Sürücüyü Göster
## Failure ## Failure
unlock.error.customPath.message=Kasa özel yola bağlanamıyor
unlock.error.customPath.description.notSupported=Özel yolu kullanmaya devam etmek istiyorsanız, lütfen tercihlere gidin ve onu destekleyen bir cilt türü seçin. Aksi takdirde kasa seçeneklerine gidin ve desteklenen bir bağlama noktası seçin.
unlock.error.customPath.description.notExists=Özel bağlama yolu mevcut değil. Ya yerel dosya sisteminizde oluşturun ya da kasa seçeneklerinde değiştirin.
unlock.error.customPath.description.generic=Bu kasa için özel bir bağlama yolu seçtiniz, ancak bunu kullanmak şu mesajla başarısız oldu: %s
## Hub ## Hub
hub.noKeychain.message=Cihaz anahtarına erişilemiyor hub.noKeychain.message=Cihaz anahtarına erişilemiyor
hub.noKeychain.description=Hub kasalarının kilidini açmak için, bir anahtarlık kullanılarak güvenliği sağlanan bir cihaz anahtarı gerekir. Devam etmek için "%s"yi etkinleştirin ve tercihlerde bir anahtarlık seçin. hub.noKeychain.description=Hub kasalarının kilidini açmak için, bir anahtarlık kullanılarak güvenliği sağlanan bir cihaz anahtarı gerekir. Devam etmek için "%s"yi etkinleştirin ve tercihlerde bir anahtarlık seçin.
@@ -150,9 +154,8 @@ hub.registerFailed.description=İsimlendirme işleminde bir hata oluştu. Daha f
hub.unauthorized.message=Erişim engellendi hub.unauthorized.message=Erişim engellendi
hub.unauthorized.description=Cihazınıza henüz bu kasaya erişim yetkisi verilmedi. Kasa sahibinden yetkilendirmesini isteyin. hub.unauthorized.description=Cihazınıza henüz bu kasaya erişim yetkisi verilmedi. Kasa sahibinden yetkilendirmesini isteyin.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Lisans aşıldı hub.invalidLicense.message=Hub Lisansı geçersiz
hub.licenseExceeded.description=Cryptomator Hub, lisansının izin verdiğinden daha fazla kullanıcıya erişim sağladı. Lisansı yükseltmek için lütfen Hub yöneticinizle veya kullanıcıları kasalardan kaldırmak için bir kasa yöneticisiyle iletişime geçin. hub.invalidLicense.description=Cryptomator Hub örneğinizde geçersiz bir lisans var. Lisansı yükseltmesi veya yenilemesi için lütfen bir Hub yöneticisini bilgilendirin.
# Lock # Lock
## Force ## Force
@@ -271,7 +274,16 @@ preferences.interface.showMinimizeButton=Küçültme düğmesini göster
preferences.interface.showTrayIcon=Sistem tepsisi simgesini göster (Yeniden başlatma gerekir) preferences.interface.showTrayIcon=Sistem tepsisi simgesini göster (Yeniden başlatma gerekir)
## Volume ## Volume
preferences.volume=Sanal Sürücü preferences.volume=Sanal Sürücü
preferences.volume.type=Birim Türü (yeniden başlatma gerektirir)
preferences.volume.type.automatic=Otomatik preferences.volume.type.automatic=Otomatik
preferences.volume.docsTooltip=Farklı birim türleri hakkında daha fazla bilgi edinmek için belgeleri açın.
preferences.volume.tcp.port=TCP Portu
preferences.volume.supportedFeatures=Seçilen birim türü aşağıdaki özellikleri destekler:
preferences.volume.feature.mountAuto=Otomatik bağlama noktası seçimi
preferences.volume.feature.mountToDir=Bağlama noktası olarak özel dizin
preferences.volume.feature.mountToDriveLetter=Bağlama noktası olarak sürücü harfi
preferences.volume.feature.mountFlags=Özel bağlama seçenekleri
preferences.volume.feature.readOnly=Salt okunur bağlama
## Updates ## Updates
preferences.updates=Güncellemeler preferences.updates=Güncellemeler
preferences.updates.currentVersion=Mevcut Sürüm: %s preferences.updates.currentVersion=Mevcut Sürüm: %s
@@ -352,11 +364,12 @@ main.vaultDetail.passwordSavedInKeychain=Şifre kaydedildi
main.vaultDetail.unlockedStatus=KİLİDİ AÇIK main.vaultDetail.unlockedStatus=KİLİDİ AÇIK
main.vaultDetail.accessLocation=Kasa içeriğinize buradan erişilebilir: main.vaultDetail.accessLocation=Kasa içeriğinize buradan erişilebilir:
main.vaultDetail.revealBtn=Sürücüyü Göster main.vaultDetail.revealBtn=Sürücüyü Göster
main.vaultDetail.copyUri=Linki kopyala
main.vaultDetail.lockBtn=Kilitle main.vaultDetail.lockBtn=Kilitle
main.vaultDetail.bytesPerSecondRead=Okuma: main.vaultDetail.bytesPerSecondRead=Okuma:
main.vaultDetail.bytesPerSecondWritten=Yazma: main.vaultDetail.bytesPerSecondWritten=Yazma:
main.vaultDetail.throughput.idle=boşta main.vaultDetail.throughput.idle=boşta
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Kasa İstatistikleri main.vaultDetail.stats=Kasa İstatistikleri
main.vaultDetail.locateEncryptedFileBtn=Şifrelenmiş Dosyayı Bul main.vaultDetail.locateEncryptedFileBtn=Şifrelenmiş Dosyayı Bul
@@ -401,13 +414,17 @@ vaultOptions.general.startHealthCheckBtn=Sağlık Kontrolünü Başlat
## Mount ## Mount
vaultOptions.mount=Bağlantı vaultOptions.mount=Bağlantı
vaultOptions.mount.info=Seçenekler, seçilen birim tipine bağlıdır.
vaultOptions.mount.linkToPreferences=Sanal sürücü tercihlerini aç
vaultOptions.mount.readonly=Salt-Okunur vaultOptions.mount.readonly=Salt-Okunur
vaultOptions.mount.customMountFlags=Özel Bağlantı Parametreleri vaultOptions.mount.customMountFlags=Özel Bağlantı Parametreleri
vaultOptions.mount.winDriveLetterOccupied=meşgul vaultOptions.mount.winDriveLetterOccupied=meşgul
vaultOptions.mount.mountPoint=Bağlantı Noktası vaultOptions.mount.mountPoint=Bağlantı Noktası
vaultOptions.mount.mountPoint.auto=Otomatik uygun yer bul vaultOptions.mount.mountPoint.auto=Otomatik uygun yer bul
vaultOptions.mount.mountPoint.driveLetter=Bir sürücü harfi kullan vaultOptions.mount.mountPoint.driveLetter=Bir sürücü harfi kullan
vaultOptions.mount.mountPoint.custom=Seçilen dizini kullan
vaultOptions.mount.mountPoint.directoryPickerButton=Seç… vaultOptions.mount.mountPoint.directoryPickerButton=Seç…
vaultOptions.mount.mountPoint.directoryPickerTitle=Dizin seçin
## Master Key ## Master Key
vaultOptions.masterkey=Şifre vaultOptions.masterkey=Şifre
vaultOptions.masterkey.changePasswordBtn=Şifreyi Değiştir vaultOptions.masterkey.changePasswordBtn=Şifreyi Değiştir
@@ -428,7 +445,9 @@ recoveryKey.display.StorageHints=Bunu çok güvenli bir yerde saklayın, örneğ
### Enter Recovery Key ### Enter Recovery Key
recoveryKey.recover.title=Şifreyi Sıfırla recoveryKey.recover.title=Şifreyi Sıfırla
recoveryKey.recover.prompt="%s" için kurtarma anahtarınızı girin: recoveryKey.recover.prompt="%s" için kurtarma anahtarınızı girin:
recoveryKey.recover.validKey=Bu geçerli bir kurtarma anahtarı recoveryKey.recover.correctKey=Bu geçerli bir kurtarma anahtarı
recoveryKey.recover.wrongKey=Bu kurtarma anahtarı farklı bir kasaya ait
recoveryKey.recover.invalidKey=Bu kurtarma anahtarı geçerli değil
recoveryKey.printout.heading=Cryptomator Kurtarma Anahtarı\n"%s"\n recoveryKey.printout.heading=Cryptomator Kurtarma Anahtarı\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Sıfırla recoveryKey.recover.resetBtn=Sıfırla
@@ -146,9 +146,6 @@ hub.registerFailed.description=Виникла помилка у процесі
hub.unauthorized.message=У доступі відмовлено hub.unauthorized.message=У доступі відмовлено
hub.unauthorized.description=Ваш пристрій ще не має прав доступу до цього vault. Попросіть власника vault надати їх. hub.unauthorized.description=Ваш пристрій ще не має прав доступу до цього vault. Попросіть власника vault надати їх.
### License Exceeded ### License Exceeded
hub.licenseExceeded.message=Кількість користувачів перевищено
hub.licenseExceeded.description=Cryptomator Hub надав доступ більшій кількості користувачів, ніж дозволяє ліцензія. Будь ласка, зверніться до адміністратора вашого Hub, щоб покращити ліцензію або адміністратора vault, щоб видалити користувачів з vaults.
# Lock # Lock
## Force ## Force
@@ -268,7 +265,6 @@ main.vaultDetail.lockBtn=Заблокувати
main.vaultDetail.bytesPerSecondRead=Зчитування: main.vaultDetail.bytesPerSecondRead=Зчитування:
main.vaultDetail.bytesPerSecondWritten=Запис: main.vaultDetail.bytesPerSecondWritten=Запис:
main.vaultDetail.throughput.idle=простій main.vaultDetail.throughput.idle=простій
main.vaultDetail.throughput.kbps=%.1f КіБ/c
main.vaultDetail.throughput.mbps=%.1f МіБ/c main.vaultDetail.throughput.mbps=%.1f МіБ/c
main.vaultDetail.stats=Статистика Vault main.vaultDetail.stats=Статистика Vault
main.vaultDetail.locateEncryptedFileBtn=Знайти Зашифрований Файл main.vaultDetail.locateEncryptedFileBtn=Знайти Зашифрований Файл

Some files were not shown because too many files have changed in this diff Show More