Compare commits

..

141 Commits

Author SHA1 Message Date
Cryptobot
9bba863e1a New translations strings.properties (Chinese Traditional, Hong Kong)
[ci skip]
[ci skip]
2026-05-13 21:36:41 +02:00
Cryptobot
25bca27bc0 New translations strings.properties (Chinese Traditional, Hong Kong)
[ci skip]
[ci skip]
2026-05-13 18:16:23 +02:00
Cryptobot
0d3517a555 New translations strings.properties (Chinese Simplified)
[ci skip]
[ci skip]
2026-05-09 04:15:52 +02:00
Cryptobot
5bb467496a New translations strings.properties (Lithuanian)
[ci skip]
[ci skip]
2026-05-09 01:20:24 +02:00
Cryptobot
9116212bc6 New translations strings.properties (Lithuanian)
[ci skip]
[ci skip]
2026-05-08 21:50:56 +02:00
Cryptobot
4f156faa24 New translations strings.properties (Danish)
[ci skip]
2026-04-27 12:32:45 +02:00
Cryptobot
2f26c7b8ba New translations strings.properties (Korean)
[ci skip]
2026-04-24 09:10:27 +02:00
Cryptobot
bf6f1c578e New translations strings.properties (German)
[ci skip]
2026-04-24 09:10:25 +02:00
Cryptobot
0887af6cfc New translations strings.properties (Russian)
[ci skip]
2026-04-23 22:23:51 +02:00
Cryptobot
e0fa691994 New translations strings.properties (Russian)
[ci skip]
2026-04-23 19:05:07 +02:00
Cryptobot
f8053f15a4 New translations strings.properties (Portuguese, Brazilian)
[ci skip]
2026-04-23 15:55:29 +02:00
Cryptobot
212b29f6aa New translations strings.properties (Ukrainian)
[ci skip]
2026-04-23 15:55:27 +02:00
Cryptobot
8c3b3fded0 New translations strings.properties (Italian)
[ci skip]
2026-04-23 15:55:26 +02:00
Cryptobot
e3e1615400 New translations strings.properties (French)
[ci skip]
2026-04-23 11:58:55 +02:00
Cryptobot
3579f43ddd New translations strings.properties (Portuguese)
[ci skip]
2026-04-22 21:32:49 +02:00
Cryptobot
66907026a7 New translations strings.properties (Spanish)
[ci skip]
2026-04-22 21:32:47 +02:00
Cryptobot
86580f6a3b New translations strings.properties (Slovak)
[ci skip]
2026-04-22 18:22:44 +02:00
Cryptobot
c75689b1bb New translations strings.properties (Dutch)
[ci skip]
2026-04-22 18:22:39 +02:00
Cryptobot
64194905b8 New translations strings.properties (Korean)
[ci skip]
2026-04-22 18:22:36 +02:00
Cryptobot
267beac945 New translations strings.properties (Swahili, Tanzania)
[ci skip]
2026-04-22 14:46:02 +02:00
Cryptobot
31c1a01b5b New translations strings.properties (Serbian (Latin))
[ci skip]
2026-04-22 14:46:01 +02:00
Cryptobot
19e7ff16cd New translations strings.properties (Bashkir)
[ci skip]
2026-04-22 14:45:59 +02:00
Cryptobot
c37eb859e9 New translations strings.properties (Norwegian Bokmal)
[ci skip]
2026-04-22 14:45:58 +02:00
Cryptobot
72ebf4a8ec New translations strings.properties (Sinhala)
[ci skip]
2026-04-22 14:45:57 +02:00
Cryptobot
e73ddee69a New translations strings.properties (Bosnian)
[ci skip]
2026-04-22 14:45:55 +02:00
Cryptobot
f105c1ad6c New translations strings.properties (Chinese Traditional, Hong Kong)
[ci skip]
2026-04-22 14:45:54 +02:00
Cryptobot
c62223c82d New translations strings.properties (Filipino)
[ci skip]
2026-04-22 14:45:52 +02:00
Cryptobot
6498d7dbdd New translations strings.properties (Uyghur)
[ci skip]
2026-04-22 14:45:51 +02:00
Cryptobot
4be30fa096 New translations strings.properties (Telugu)
[ci skip]
2026-04-22 14:45:49 +02:00
Cryptobot
e11deb5f18 New translations strings.properties (Hindi)
[ci skip]
2026-04-22 14:45:48 +02:00
Cryptobot
c832ed8341 New translations strings.properties (Latvian)
[ci skip]
2026-04-22 14:45:46 +02:00
Cryptobot
7f4f5d8057 New translations strings.properties (Norwegian Nynorsk)
[ci skip]
2026-04-22 14:45:45 +02:00
Cryptobot
c654067828 New translations strings.properties (Croatian)
[ci skip]
2026-04-22 14:45:44 +02:00
Cryptobot
823b334535 New translations strings.properties (Thai)
[ci skip]
2026-04-22 14:45:42 +02:00
Cryptobot
c2b05c715d New translations strings.properties (Marathi)
[ci skip]
2026-04-22 14:45:41 +02:00
Cryptobot
9a8038b003 New translations strings.properties (Bengali)
[ci skip]
2026-04-22 14:45:39 +02:00
Cryptobot
008afb91b6 New translations strings.properties (Tamil)
[ci skip]
2026-04-22 14:45:38 +02:00
Cryptobot
8da8e8317d New translations strings.properties (Persian)
[ci skip]
2026-04-22 14:45:37 +02:00
Cryptobot
a2cab3ee7f New translations strings.properties (Indonesian)
[ci skip]
2026-04-22 14:45:35 +02:00
Cryptobot
eab454e176 New translations strings.properties (Portuguese, Brazilian)
[ci skip]
2026-04-22 14:45:34 +02:00
Cryptobot
376bea5640 New translations strings.properties (Galician)
[ci skip]
2026-04-22 14:45:32 +02:00
Cryptobot
116ec9502d New translations strings.properties (Vietnamese)
[ci skip]
2026-04-22 14:45:31 +02:00
Cryptobot
9e998d49be New translations strings.properties (Urdu (Pakistan))
[ci skip]
2026-04-22 14:45:29 +02:00
Cryptobot
97d3ed3b18 New translations strings.properties (Chinese Traditional)
[ci skip]
2026-04-22 14:45:28 +02:00
Cryptobot
2400993d05 New translations strings.properties (Chinese Simplified)
[ci skip]
2026-04-22 14:45:26 +02:00
Cryptobot
5e5ce6705a New translations strings.properties (Ukrainian)
[ci skip]
2026-04-22 14:45:25 +02:00
Cryptobot
45ce685ad7 New translations strings.properties (Turkish)
[ci skip]
2026-04-22 14:45:23 +02:00
Cryptobot
7ea75217e3 New translations strings.properties (Swedish)
[ci skip]
2026-04-22 14:45:22 +02:00
Cryptobot
875fe45a7e New translations strings.properties (Serbian (Cyrillic))
[ci skip]
2026-04-22 14:45:20 +02:00
Cryptobot
344b1f0234 New translations strings.properties (Slovenian)
[ci skip]
2026-04-22 14:45:19 +02:00
Cryptobot
6ee8757d74 New translations strings.properties (Slovak)
[ci skip]
2026-04-22 14:45:17 +02:00
Cryptobot
a630404606 New translations strings.properties (Russian)
[ci skip]
2026-04-22 14:45:16 +02:00
Cryptobot
5ce7fdc4d7 New translations strings.properties (Portuguese)
[ci skip]
2026-04-22 14:45:14 +02:00
Cryptobot
c1b456805c New translations strings.properties (Polish)
[ci skip]
2026-04-22 14:45:13 +02:00
Cryptobot
2ee50babc9 New translations strings.properties (Punjabi)
[ci skip]
2026-04-22 14:45:11 +02:00
Cryptobot
106bd5e04f New translations strings.properties (Norwegian)
[ci skip]
2026-04-22 14:45:10 +02:00
Cryptobot
971de7bd33 New translations strings.properties (Dutch)
[ci skip]
2026-04-22 14:45:08 +02:00
Cryptobot
6bb977c66d New translations strings.properties (Macedonian)
[ci skip]
2026-04-22 14:45:07 +02:00
Cryptobot
605b9f3693 New translations strings.properties (Lithuanian)
[ci skip]
2026-04-22 14:45:05 +02:00
Cryptobot
1377dd7b9a New translations strings.properties (Korean)
[ci skip]
2026-04-22 14:45:04 +02:00
Cryptobot
a7b41b8b1d New translations strings.properties (Japanese)
[ci skip]
2026-04-22 14:45:02 +02:00
Cryptobot
2dc1f55593 New translations strings.properties (Italian)
[ci skip]
2026-04-22 14:45:01 +02:00
Cryptobot
eff3292ec6 New translations strings.properties (Hungarian)
[ci skip]
2026-04-22 14:44:59 +02:00
Cryptobot
fdfe6b66f0 New translations strings.properties (Hebrew)
[ci skip]
2026-04-22 14:44:58 +02:00
Cryptobot
b37090772d New translations strings.properties (Finnish)
[ci skip]
2026-04-22 14:44:57 +02:00
Cryptobot
87ff7219c3 New translations strings.properties (Greek)
[ci skip]
2026-04-22 14:44:55 +02:00
Cryptobot
8bf3b443a3 New translations strings.properties (German)
[ci skip]
2026-04-22 14:44:54 +02:00
Cryptobot
b8b25b53ee New translations strings.properties (Danish)
[ci skip]
2026-04-22 14:44:52 +02:00
Cryptobot
07de47d4cc New translations strings.properties (Czech)
[ci skip]
2026-04-22 14:44:50 +02:00
Cryptobot
2b1213f671 New translations strings.properties (Catalan)
[ci skip]
2026-04-22 14:44:49 +02:00
Cryptobot
0051ae377c New translations strings.properties (Bulgarian)
[ci skip]
2026-04-22 14:44:48 +02:00
Cryptobot
9b6bc4ee5a New translations strings.properties (Belarusian)
[ci skip]
2026-04-22 14:44:46 +02:00
Cryptobot
4c38659ac9 New translations strings.properties (Arabic)
[ci skip]
2026-04-22 14:44:45 +02:00
Cryptobot
c53893a0ff New translations strings.properties (Afrikaans)
[ci skip]
2026-04-22 14:44:43 +02:00
Cryptobot
00ec386e18 New translations strings.properties (Spanish)
[ci skip]
2026-04-22 14:44:42 +02:00
Cryptobot
bd70e9a18d New translations strings.properties (French)
[ci skip]
2026-04-22 14:44:40 +02:00
Cryptobot
97190db3a0 New translations strings.properties (Romanian)
[ci skip]
2026-04-22 14:44:39 +02:00
LamTrinh.Dev
d67aa9c10a + Update Copyright year from "2016 - 2025" to "2016-2026". (#4218)
* + Update Copyright year from "2016 - 2025" to "2016-2026".
2026-04-13 15:30:33 +02:00
Armin Schrenk
4751c81d06 adjust hub-url in share vault dialog 2026-04-08 16:49:11 +02:00
Armin Schrenk
0e1132133c replace guava cache with caffeine 2026-04-08 16:23:25 +02:00
dependabot[bot]
a40f17e8f1 Bump the github-actions group with 5 updates (#4207)
Bumps the github-actions group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `2.5.0` | `2.6.1` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `8.0.0` | `8.0.1` |
| [actions/cache](https://github.com/actions/cache) | `5.0.3` | `5.0.4` |
| [skymatic/semver-validation-action](https://github.com/skymatic/semver-validation-action) | `3.0.0` | `4.0.0` |
| [vedantmgoyal2009/winget-releaser](https://github.com/vedantmgoyal2009/winget-releaser) | `19e706d4c9121098010096f9c495a70a7518b30f` | `7bd472be23763def6e16bd06cc8b1cdfab0e2fd5` |


Updates `softprops/action-gh-release` from 2.5.0 to 2.6.1
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](a06a81a03e...153bb8e044)

Updates `actions/download-artifact` from 8.0.0 to 8.0.1
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](70fc10c6e5...3e5f45b2cf)

Updates `actions/cache` from 5.0.3 to 5.0.4
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](cdf6c1fa76...668228422a)

Updates `skymatic/semver-validation-action` from 3.0.0 to 4.0.0
- [Release notes](https://github.com/skymatic/semver-validation-action/releases)
- [Commits](7a6ae1c9e1...7c80b6b03a)

Updates `vedantmgoyal2009/winget-releaser` from 19e706d4c9121098010096f9c495a70a7518b30f to 7bd472be23763def6e16bd06cc8b1cdfab0e2fd5
- [Release notes](https://github.com/vedantmgoyal2009/winget-releaser/releases)
- [Commits](19e706d4c9...7bd472be23)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/download-artifact
  dependency-version: 8.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/cache
  dependency-version: 5.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: skymatic/semver-validation-action
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: vedantmgoyal2009/winget-releaser
  dependency-version: 7bd472be23763def6e16bd06cc8b1cdfab0e2fd5
  dependency-type: direct:production
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-07 11:39:43 +02:00
Copilot
699e22d31a chore: Consolidate dependabot maven groups and switch to monthly schedule (#4208)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: infeo <9036915+infeo@users.noreply.github.com>
2026-04-02 16:58:12 +02:00
mindmonk
9de0981594 Merge pull request #4164 from cryptomator/feature/decrypt-name-single-dialog-per-vault
Fix Decrypt File Name dialog to reuse a single window
2026-03-31 11:02:13 +02:00
Jan-Peter Klein
87fe209b54 Merge branch 'develop' into feature/decrypt-name-single-dialog-per-vault 2026-03-30 12:47:55 +02:00
Jan-Peter Klein
21cffb13c7 remove unused initialList field from DecryptFileNamesViewController 2026-03-30 12:46:11 +02:00
Jan-Peter Klein
9eca05aeb7 address infeos review: drop paths injection, close on locked vault, clear mapping on close 2026-03-30 12:15:09 +02:00
Armin Schrenk
a653fc3627 Merge pull request #4199 from cryptomator/feature/ci-build-flatpak
Feature: Build flatpak on CI
2026-03-27 15:30:48 +01:00
Armin Schrenk
db31fcad98 fix flatpak/cryptomator module git error 2026-03-27 13:39:48 +01:00
Armin Schrenk
b82c73f789 decouple build script from app source
additionally, check tag if a PR should be created
2026-03-26 18:18:04 +01:00
Armin Schrenk
70d3507e5d also tie this workflow to get-version workflow 2026-03-26 17:39:05 +01:00
Armin Schrenk
518b45d149 checkout the correct repository 2026-03-26 17:38:31 +01:00
mindmonk
65f2eea6c9 Merge pull request #4194 from cryptomator/feature/hide-update-warning-when-no-update-available
Hide "lock vaults" warning when no update is available
2026-03-26 17:33:25 +01:00
Jan-Peter Klein
12a4a8218a change warning visibility check to use isUpdateAvailable 2026-03-26 12:41:15 +01:00
Armin Schrenk
76dd4f079c use correct cache key 2026-03-26 11:02:08 +01:00
Armin Schrenk
b35fb011e0 fix wrong env variable 2026-03-25 11:03:56 +01:00
Armin Schrenk
fa1e9c7ca7 [skip ci] add comment for envsubst usage 2026-03-25 11:02:32 +01:00
Armin Schrenk
75bb64b333 add permissions 2026-03-24 17:01:22 +01:00
Armin Schrenk
1f40045b41 ensure correct source is used for checkout 2026-03-24 16:55:27 +01:00
Armin Schrenk
1951e5e82c ensure correct revision 2026-03-24 16:20:33 +01:00
Armin Schrenk
0be39c5b7d [skip ci] fix typo 2026-03-24 13:21:25 +01:00
Armin Schrenk
6886188ff4 remove manual update script 2026-03-24 13:05:42 +01:00
Armin Schrenk
3a2de81369 do not use placeholder files 2026-03-24 12:37:10 +01:00
Armin Schrenk
4de3ea2892 add verification step 2026-03-24 12:22:46 +01:00
Armin Schrenk
0beb2e3334 adjust flathub pr job
* add boolean dispatch input to create pr manually
* remove tarball job
* adjust template build script to final build file
* change PR description
* fix slack webhook
2026-03-24 12:15:41 +01:00
Armin Schrenk
537d79f3c2 activate all runners again 2026-03-24 10:57:32 +01:00
Armin Schrenk
10d5f4f530 rename job 2026-03-24 10:57:08 +01:00
Armin Schrenk
ab0e7e1ea9 fix pattern matching and make flow easier to read 2026-03-23 17:53:33 +01:00
Armin Schrenk
967a3aa10b ensure to download correct javafx jars 2026-03-23 16:47:18 +01:00
Armin Schrenk
821649c821 [debug] replace natsort with sort 2026-03-23 15:36:36 +01:00
Armin Schrenk
7cf75e9dba use SNAPSHOT version of flatpak action
and keep build dirs
2026-03-23 11:18:38 +01:00
Armin Schrenk
dfe126f827 update maven dependency source file 2026-03-23 11:10:03 +01:00
Armin Schrenk
80ce98991c use correct runner for every arch 2026-03-23 10:48:53 +01:00
Armin Schrenk
579d42ec74 try x86 runner 2026-03-20 18:42:40 +01:00
Armin Schrenk
047108683f use as base repo the flathub repo 2026-03-20 18:20:15 +01:00
Armin Schrenk
830c9196e7 activate build flatpak step again 2026-03-20 18:10:38 +01:00
Armin Schrenk
7208f23da1 fix type 2026-03-20 18:04:09 +01:00
Armin Schrenk
b0a4a0bcfa add debugging code 2026-03-20 17:59:45 +01:00
Armin Schrenk
f7b13dd121 Use flathub repo
remove yq edits and simply override build yaml
2026-03-20 17:51:10 +01:00
Armin Schrenk
a5ccfa01d2 use yq action
not available in flathub container
2026-03-20 17:26:04 +01:00
Armin Schrenk
62bf4c5b45 fix prepare step 2026-03-20 17:06:42 +01:00
Armin Schrenk
7168d7e31d deactivate x86 runner during development 2026-03-20 16:54:50 +01:00
Armin Schrenk
3c633f8a34 move all build scripts into flatpak-build dir
* additionally, remove maven-dependencies
2026-03-20 16:54:05 +01:00
Armin Schrenk
b606a4ee8e use FreeDesktop runtime 2026-03-20 16:44:29 +01:00
Armin Schrenk
1af094692f run also on certain push events 2026-03-20 16:25:51 +01:00
Armin Schrenk
c86d8ac6b8 build flatpak on CI 2026-03-20 16:22:35 +01:00
Armin Schrenk
b06d65ab43 Merge branch 'main' into develop
# Conflicts:
#	pom.xml
2026-03-20 08:15:31 +01:00
Armin Schrenk
5a0d15c937 Merge pull request #4187 from cryptomator/feature/monthly-dist-builds
Feature: Monthly distribution builds
2026-03-17 13:18:37 +01:00
Jan-Peter Klein
53757dab93 fix unlocked vault warning shown without an available update 2026-03-16 14:22:23 +01:00
Armin Schrenk
e1d4d3e85b fix webhook in workflow 2026-03-13 18:03:19 +01:00
Armin Schrenk
859fe238b8 also test signing step in monthly builds 2026-03-13 17:51:22 +01:00
Armin Schrenk
23df40796b build release artifacts monthly 2026-03-13 17:50:53 +01:00
Armin Schrenk
b98b1326b2 Merge pull request #4147 from cryptomator/feature/dagger-fixes
fix dagger binding graph
2026-03-13 17:39:29 +01:00
Armin Schrenk
2f8831b561 faster initialization 2026-03-13 17:29:59 +01:00
Armin Schrenk
4948b9b586 prevent data races 2026-03-13 17:06:50 +01:00
Armin Schrenk
838018e72e Remove Actalis code signing (#4169) 2026-03-13 16:49:37 +01:00
Sebastian Stenzel
d5433e7a3f CHANGELOG.md: moved security fixes to subsection
[ci skip]
2026-03-13 10:50:20 +01:00
Armin Schrenk
194e19bf5e [skip ci] reset to snapshot version 2026-03-12 14:37:17 +01:00
Armin Schrenk
1358e7098d Merge branch 'main' into develop 2026-03-12 14:35:39 +01:00
Jan-Peter Klein
92d11d8bd5 Merge branch 'develop' into feature/decrypt-name-single-dialog-per-vault 2026-03-02 14:18:15 +01:00
Jan-Peter Klein
300a811510 fix decrypt file name dialog to reuse one window per vault 2026-03-02 13:39:38 +01:00
Armin Schrenk
84a966993f fix dagger binding graph 2026-02-18 16:24:22 +01:00
88 changed files with 1437 additions and 306 deletions

View File

@@ -3,10 +3,7 @@ updates:
- package-ecosystem: "maven"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "06:00"
timezone: "Etc/UTC"
interval: "monthly"
ignore:
- dependency-name: "org.cryptomator:integrations-api"
versions: ["2.0.0-alpha1"]
@@ -18,36 +15,9 @@ updates:
- dependency-name: "org.apache.maven.plugins:maven-surefire-plugin"
versions: [ "3.5.4", "3.5.5" ]
groups:
java-test-dependencies:
patterns:
- "org.junit.jupiter:*"
- "org.mockito:*"
- "org.hamcrest:*"
- "com.google.jimfs:jimfs"
maven-build-plugins:
patterns:
- "org.apache.maven.plugins:*"
- "org.jacoco:jacoco-maven-plugin"
- "org.owasp:dependency-check-maven"
- "me.fabriciorby:maven-surefire-junit5-tree-reporter"
- "org.codehaus.mojo:license-maven-plugin"
javafx:
patterns:
- "org.openjfx:*"
java-production-dependencies:
maven-dependencies:
patterns:
- "*"
exclude-patterns:
- "org.openjfx:*"
- "org.apache.maven.plugins:*"
- "org.jacoco:jacoco-maven-plugin"
- "org.owasp:dependency-check-maven"
- "me.fabriciorby:maven-surefire-junit5-tree-reporter"
- "org.codehaus.mojo:license-maven-plugin"
- "org.junit.jupiter:*"
- "org.mockito:*"
- "org.hamcrest:*"
- "com.google.jimfs:jimfs"
- package-ecosystem: "github-actions"
directory: "/" # even for `.github/workflows`

View File

@@ -3,6 +3,8 @@ name: Build AppImage
on:
release:
types: [published]
schedule:
- cron: '0 23 20 * *'
workflow_dispatch:
inputs:
version:
@@ -125,7 +127,7 @@ jobs:
--dest appdir
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--copyright "(C) 2016 - 2026 Skymatic GmbH"
--app-version "${SEMVER_NUM}.${REV_NUM}"
--java-options "--enable-preview"
--java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator"
@@ -199,7 +201,7 @@ jobs:
if-no-files-found: error
- name: Publish AppImage on GitHub Releases
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}

View File

@@ -63,7 +63,7 @@ jobs:
if: inputs.kaspersky
steps:
- name: Download artifact
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: ${{ needs.download-file.outputs.fileName }}
path: upload
@@ -83,7 +83,7 @@ jobs:
if: inputs.avast
steps:
- name: Download artifact
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: ${{ needs.download-file.outputs.fileName }}
path: upload

View File

@@ -29,7 +29,7 @@ jobs:
java-version: ${{ env.JAVA_VERSION }}
cache: 'maven'
- name: Cache SonarCloud packages
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
@@ -49,7 +49,7 @@ jobs:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- name: Draft a release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
with:
draft: true
discussion_category_name: releases

View File

@@ -1,6 +1,8 @@
name: Build Debian Package
on:
schedule:
- cron: '0 22 20 * *'
workflow_dispatch:
inputs:
semver:

View File

@@ -1,85 +0,0 @@
name: Create PR for flathub
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag:
description: 'Release tag'
required: true
jobs:
get-version:
uses: ./.github/workflows/get-version.yml
with:
version: ${{ inputs.tag }}
tarball:
name: Determines tarball url and compute checksum
runs-on: ubuntu-latest
needs: [get-version]
if: github.event_name == 'workflow_dispatch' || needs.get-version.outputs.versionType == 'stable'
outputs:
url: ${{ steps.url.outputs.url}}
sha512: ${{ steps.sha512.outputs.sha512}}
steps:
- name: Determine tarball url
id: url
run: |
URL="https://github.com/cryptomator/cryptomator/archive/refs/tags/${TAG}.tar.gz"
echo "url=${URL}" >> "$GITHUB_OUTPUT"
env:
TAG: ${{ inputs.tag || github.event.release.tag_name}}
- name: Download source tarball and compute checksum
id: sha512
run: |
curl --silent --fail-with-body --proto "=https" -L -H "Accept: application/vnd.github+json" ${{ steps.url.outputs.url }} --output cryptomator.tar.gz
TARBALL_SHA512=$(sha512sum cryptomator.tar.gz | cut -d ' ' -f1)
echo "sha512=${TARBALL_SHA512}" >> "$GITHUB_OUTPUT"
flathub:
name: Create PR for flathub
runs-on: ubuntu-latest
needs: [tarball, get-version]
env:
FLATHUB_PR_URL: tbd
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: 'flathub/org.cryptomator.Cryptomator'
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Checkout release branch
run: |
git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
- name: Update build file
run: |
sed -i -e 's/VERSION: [0-9]\+\.[0-9]\+\.[0-9]\+.*/VERSION: ${{ needs.get-version.outputs.semVerStr }}/g' org.cryptomator.Cryptomator.yaml
sed -i -e 's/sha512: [0-9A-Za-z_\+-]\{128\} #CRYPTOMATOR/sha512: ${{ needs.tarball.outputs.sha512 }} #CRYPTOMATOR/g' org.cryptomator.Cryptomator.yaml
sed -i -e 's;url: https://github.com/cryptomator/cryptomator/archive/refs/tags/[^[:blank:]]\+;url: ${{ needs.tarball.outputs.url }};g' org.cryptomator.Cryptomator.yaml
- name: Commit and push
run: |
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com"
git config push.autoSetupRemote true
git stage .
git commit -m "Prepare release ${{needs.get-version.outputs.semVerStr}}"
git push
- name: Create pull request
run: |
printf "> [!IMPORTANT]\n> Todos:\n> - [ ] Update maven dependencies\n> - [ ] Check for JDK update\n> - [ ] Check for JFX update" > pr_body.md
PR_URL=$(gh pr create --title "Release ${{ needs.get-version.outputs.semVerStr }}" --body-file pr_body.md)
echo "FLATHUB_PR_URL=$PR_URL" >> "$GITHUB_ENV"
env:
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3
if: github.event_name == 'release'
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'
SLACK_CHANNEL: 'cryptomator-desktop'
SLACK_TITLE: "Flathub release PR created for ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} created."
SLACK_MESSAGE: "See <${{ env.FLATHUB_PR_URL }}|PR> on how to proceed.>."
SLACK_FOOTER: false
MSG_MINIMAL: true

View File

@@ -73,6 +73,6 @@ jobs:
env:
VERSION_STRING: ${{ inputs.version }}
- name: Validate Version
uses: skymatic/semver-validation-action@7a6ae1c9e121540d11c9c7e4e667c83d583aa153 # v3.0.0
uses: skymatic/semver-validation-action@7c80b6b03a18b42884761daa9862ff5683ec8c8a # v4.0.0
with:
version: ${{ steps.versions.outputs.semVerStr }}

264
.github/workflows/linux-flatpak.yml vendored Normal file
View File

@@ -0,0 +1,264 @@
name: Build flatpak
on:
release:
types: [published]
workflow_dispatch:
inputs:
src-tag:
description: 'Source or Release tag'
required: false
create-pr:
description: 'Create Flathub PR'
required: false
type: boolean
default: false
push:
branches-ignore:
- 'dependabot/**'
paths:
- '.github/workflows/get-version.yml'
- '.github/workflows/linux-flatpak.yml'
- 'dist/linux/flatpak/**'
- 'dist/linux/common/**'
- 'dist/linux/resources/**'
jobs:
get-version:
uses: ./.github/workflows/get-version.yml
with:
version: ${{ inputs.src-tag }}
build-flatpak:
name: "Build flatpak"
needs: [get-version]
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-25.08
options: --privileged
strategy:
fail-fast: false
matrix:
variant:
- arch: x86_64
runner: ubuntu-24.04
- arch: aarch64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.variant.runner }}
permissions:
contents: read
env:
SRC_GIT_SHA: ${{ inputs.src-tag || github.sha}}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: flathub/org.cryptomator.Cryptomator
submodules: true
- name: Checkout build script
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: build-scripts
- name: Checkout app source
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: cryptomator
ref: ${{ env.SRC_GIT_SHA }}
fetch-depth: 0
- name: Prepare build files
# using envsubst instead of yq to keep linebreaks
run: |
cp -r -f build-scripts/dist/linux/flatpak/* .
envsubst '$FLATPAK_VERSION $FLATPAK_REVISION $CRYPTOMATOR_SOURCE' < org.cryptomator.Cryptomator.TEMPLATE.yaml > org.cryptomator.Cryptomator.yaml
env:
FLATPAK_VERSION: ${{ needs.get-version.outputs.semVerNum }}
FLATPAK_REVISION: 1
CRYPTOMATOR_SOURCE: |-
type: git
path: cryptomator
commit: ${{ env.SRC_GIT_SHA }}
- name: Copy build script for upload
run: cp org.cryptomator.Cryptomator.yaml org.cryptomator.Cryptomator.${{matrix.variant.arch}}.yaml
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
archive: false
if-no-files-found: error
path: |
org.cryptomator.Cryptomator.${{matrix.variant.arch}}.yaml
- uses: flatpak/flatpak-github-actions/flatpak-builder@401fe28a8384095fc1531b9d320b292f0ee45adb # SNAPSHOT due to using keep-build-dirs
with:
bundle: cryptomator.flatpak
manifest-path: org.cryptomator.Cryptomator.yaml
cache-key: flatpak-builder-${{ env.SRC_GIT_SHA }}
arch: ${{ matrix.variant.arch }}
keep-build-dirs: true
- name: Collect maven dependencies
working-directory: .flatpak-builder/build/cryptomator-1/.m2/repository/
run: |
find * -type f \( -iname '*.jar' -o -iname '*.pom' \) | sort -V > /tmp/maven-dependency-files.txt
grep -v '^org/openjfx/javafx-' /tmp/maven-dependency-files.txt > maven-dependency-files-common.txt
grep '^org/openjfx/javafx-' /tmp/maven-dependency-files.txt > maven-dependency-files-javafx.txt
- name: Update arch independent maven dependencies
run: |
(
cd .flatpak-builder/build/cryptomator-1/.m2/repository/
while IFS= read -r dependencyPath; do
dependencyName=$(dirname "$dependencyPath")
dependencySha=$(sha256sum "$dependencyPath" | cut -c 1-64)
cat <<EOF
- type: file
dest: .m2/repository/${dependencyName}
url: https://repo.maven.apache.org/maven2/${dependencyPath}
sha256: ${dependencySha}
EOF
done < maven-dependency-files-common.txt
) > maven-dependencies.yaml
- name: Update arch specific maven dependencies
run: |
(
cd .flatpak-builder/build/cryptomator-1/.m2/repository/
while IFS= read -r dependencyPath; do
dependencyName=$(dirname "$dependencyPath")
dependencySha=$(sha256sum "$dependencyPath" | cut -c 1-64)
cat <<EOF
- type: file
dest: .m2/repository/${dependencyName}
url: https://repo.maven.apache.org/maven2/${dependencyPath}
sha256: ${dependencySha}
only-arches: [${{ matrix.variant.arch }}]
EOF
done < maven-dependency-files-javafx.txt
) > javafx-maven-dependencies-${{ matrix.variant.arch }}.yaml
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: maven-sources-${{ matrix.variant.arch }}
if-no-files-found: error
path: |
maven-dependencies.yaml
javafx-maven-dependencies-${{ matrix.variant.arch }}.yaml
verify-maven-sources:
name: Verify maven sources
runs-on: ubuntu-latest
needs: [build-flatpak]
permissions:
contents: none
steps:
- name: Download updated maven aarch64 dependencies
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: maven-sources-aarch64
path: mvn-src-aarch64
- name: Download updated maven x86_64 dependencies
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: maven-sources-x86_64
path: mvn-src-x64
- name: Verify arch independent maven dependencies
run: cmp --silent mvn-src-aarch64/maven-dependencies.yaml mvn-src-x64/maven-dependencies.yaml
create-pr:
name: Create PR for flathub
runs-on: ubuntu-latest
needs: [get-version, verify-maven-sources]
if: (github.event_name == 'workflow_dispatch' && inputs.create-pr ) || (github.event_name == 'release' && needs.get-version.outputs.versionType == 'stable')
permissions:
contents: write
env:
TARBALL_URL: 'https://github.com/cryptomator/cryptomator/archive/refs/tags/${{ github.event.release.tag_name || inputs.src-tag }}.tar.gz'
steps:
- name: Check that input "src-tag" is actually a tag
if: github.event_name == 'workflow_dispatch'
run: |
if [ -z "$SRC_TAG" ]; then
echo '::error::Input "src-tag" must be set to create a Flathub PR'
exit 1
fi
env:
SRC_TAG: ${{ inputs.src-tag }}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: flathub/org.cryptomator.Cryptomator
submodules: true #TODO: Update submodule!
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Checkout release branch
run: |
git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: cryptomator
- name: Download source tarball and compute checksum
id: sha512
run: |
curl --silent --fail-with-body --proto "=https" -L -H "Accept: application/vnd.github+json" ${TARBALL_URL} --output cryptomator.tar.gz
TARBALL_SHA512=$(sha512sum cryptomator.tar.gz | cut -d ' ' -f1)
echo "value=${TARBALL_SHA512}" >> "$GITHUB_OUTPUT"
- name: Download updated maven aarch64 dependencies
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: maven-sources-aarch64
path: mvn-src-aarch64
- name: Download updated maven x86_64 dependencies
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: maven-sources-x86_64
path: mvn-src-x64
- name: Determine revision
id: revision
run: |
CURRENT_VERSION="$(yq '(.modules[] | select(.name == "cryptomator") | .build-options.env.VERSION)' org.cryptomator.Cryptomator.yaml)"
CURRENT_REVISION="$(yq '(.modules[] | select(.name == "cryptomator") | .build-options.env.REVISION_NO)' org.cryptomator.Cryptomator.yaml)"
if [[ "$CURRENT_VERSION" == "$TARGET_VERSION" && "$CURRENT_REVISION" =~ ^[0-9]+$ ]]; then
NEXT_REVISION=$((CURRENT_REVISION + 1))
else
NEXT_REVISION=1
fi
echo "value=${NEXT_REVISION}" >> "$GITHUB_OUTPUT"
env:
TARGET_VERSION: ${{ needs.get-version.outputs.semVerStr }}
- name: Update build files
run: |
cp -r -f cryptomator/dist/linux/flatpak/* .
cp -r -f mvn-src-x64/* .
cp -r -f mvn-src-aarch64/* .
envsubst '$FLATPAK_VERSION $FLATPAK_REVISION $CRYPTOMATOR_SOURCE' < org.cryptomator.Cryptomator.TEMPLATE.yaml > org.cryptomator.Cryptomator.yaml
yq -i 'del(.modules[] | select(.name == "cryptomator") | .build-options.build-args)' org.cryptomator.Cryptomator.yaml
yq -i '(.modules[] | select(.name == "cryptomator") | .sources) += ["maven-dependencies.yaml", "javafx-maven-dependencies-x86_64.yaml", "javafx-maven-dependencies-aarch64.yaml"]' org.cryptomator.Cryptomator.yaml
env:
FLATPAK_VERSION: ${{ needs.get-version.outputs.semVerNum }}
FLATPAK_REVISION: ${{ steps.revision.outputs.value}}
CRYPTOMATOR_SOURCE: |-
type: archive
sha512: ${{steps.sha512.outputs.value}}
url: ${{ env.TARBALL_URL }}
- name: Commit and push
run: |
git config user.name "cryptobot"
git config user.email "cryptobot@users.noreply.github.com"
git config push.autoSetupRemote true
git stage org.cryptomator.Cryptomator.yaml maven-dependencies.yaml javafx-maven-dependencies-aarch64.yaml javafx-maven-dependencies-x86_64.yaml
git commit -m "Prepare release ${{needs.get-version.outputs.semVerStr}}"
git push
- name: Create pull request
id: create-pr
run: |
printf "Created by $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" > pr_body.md
PR_URL=$(gh pr create --title "Release ${{ needs.get-version.outputs.semVerStr }}" --body-file pr_body.md)
echo "FLATHUB_PR_URL=$PR_URL" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3
if: github.event_name == 'release'
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'
SLACK_CHANNEL: 'cryptomator-desktop'
SLACK_TITLE: "Flathub release PR created for ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} created."
SLACK_MESSAGE: "See <${{ steps.create-pr.outputs.FLATHUB_PR_URL }}|PR> on how to proceed."
SLACK_FOOTER: false
MSG_MINIMAL: true

View File

@@ -3,6 +3,8 @@ name: Build Arch package
on:
release:
types: [published]
schedule:
- cron: '0 21 20 * *'
workflow_dispatch:
inputs:
version:
@@ -145,7 +147,7 @@ jobs:
env:
VERSION: ${{ needs.get-version.outputs.semVerStr }}
- name: Download PKGBUILD template
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: pkgbuild-file
- name: Prepare PKGBUILD

View File

@@ -11,6 +11,8 @@ name: Build macOS .dmg for x64
on:
release:
types: [published]
schedule:
- cron: '0 20 20 * *'
workflow_dispatch:
inputs:
version:
@@ -117,7 +119,7 @@ jobs:
--dest appdir
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--copyright "(C) 2016 - 2026 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}"
--java-options "--enable-preview"
--java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.mac"
@@ -249,7 +251,7 @@ jobs:
env:
CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
- name: Notarize .dmg
if: startsWith(github.ref, 'refs/tags/') || inputs.notarize
if: startsWith(github.ref, 'refs/tags/') || inputs.notarize || github.event_name == 'schedule'
uses: cocoalibs/xcode-notarization-action@5cf433d494b6fa26504b574c591f4dd120388846 # v1.0.3
with:
app-path: 'Cryptomator-*.dmg'
@@ -280,7 +282,7 @@ jobs:
if-no-files-found: error
- name: Publish dmg on GitHub Releases
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}

View File

@@ -3,6 +3,8 @@ name: Build macOS .dmg for arm64
on:
release:
types: [published]
schedule:
- cron: '0 20 20 * *'
workflow_dispatch:
inputs:
version:
@@ -115,7 +117,7 @@ jobs:
--dest appdir
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--copyright "(C) 2016 - 2026 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}"
--java-options "--enable-preview"
--java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.mac"
@@ -248,7 +250,7 @@ jobs:
env:
CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
- name: Notarize .dmg
if: startsWith(github.ref, 'refs/tags/') || inputs.notarize
if: startsWith(github.ref, 'refs/tags/') || inputs.notarize || github.event_name == 'schedule'
uses: cocoalibs/xcode-notarization-action@5cf433d494b6fa26504b574c591f4dd120388846 # v1.0.3
with:
app-path: 'Cryptomator-*.dmg'
@@ -279,7 +281,7 @@ jobs:
if-no-files-found: error
- name: Publish dmg on GitHub Releases
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}

View File

@@ -19,7 +19,7 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Publish asc on GitHub Releases
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}

View File

@@ -50,7 +50,7 @@ jobs:
exit 1
fi
- name: Cache NVD DB
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.m2/repository/org/owasp/dependency-check-data/
key: dependency-check-${{ github.run_id }}

View File

@@ -3,6 +3,8 @@ name: Build Windows Installer
on:
release:
types: [published]
schedule:
- cron: '0 19 20 * *'
workflow_dispatch:
inputs:
version:
@@ -134,7 +136,7 @@ jobs:
--dest appdir
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--copyright "(C) 2016 - 2026 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}"
--java-options "--enable-preview"
--java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.win,org.cryptomator.integrations.win"
@@ -193,7 +195,7 @@ jobs:
& $env:JAVA_HOME\bin\jmod.exe extract --dir jpackage-jmod "${env:JAVA_HOME}\jmods\jdk.jpackage.jmod"
Get-ChildItem -Recurse -Path "jpackage-jmod" -File wixhelper.dll | Select-Object -Last 1 | Copy-Item -Destination "appdir"
- name: Sign DLLs with Azure Trusted Signing
if: inputs.sign || github.event_name == 'release'
if: inputs.sign || github.event_name == 'release' || github.event_name == 'schedule'
uses: ./.github/actions/win-sign-action
with:
base-dir: ${{ github.workspace }}\appdir
@@ -202,17 +204,6 @@ jobs:
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Sign DLLs with Actalis CodeSigner
if: inputs.sign || github.event_name == 'release'
uses: skymatic/workflows/.github/actions/win-sign-action@957d3c2c08c56855fdac41e5afb9a7aca8c30dd9 # no specific version
with:
base-dir: 'appdir'
file-extensions: 'dll,exe,ps1'
recursive: true
sign-description: 'Cryptomator'
sign-url: 'https://cryptomator.org'
username: ${{ secrets.WIN_CODESIGN_USERNAME }}
password: ${{ secrets.WIN_CODESIGN_PW }}
- name: Replace DLLs inside jars with signed ones
shell: pwsh
run: |
@@ -248,7 +239,7 @@ jobs:
--dest installer
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--copyright "(C) 2016 - 2026 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum}}"
--win-menu
--win-dir-chooser
@@ -262,7 +253,7 @@ jobs:
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs
JP_WIXHELPER_DIR: ${{ github.workspace }}\appdir
- name: Sign MSI with Azure Trusted Signing
if: inputs.sign || github.event_name == 'release'
if: inputs.sign || github.event_name == 'release' || github.event_name == 'schedule'
uses: ./.github/actions/win-sign-action
with:
base-dir: ${{ github.workspace }}\installer
@@ -312,7 +303,7 @@ jobs:
env:
WIX_VERSION: ${{ env.WIX_VERSION }}
- name: Download .msi
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: msi-${{ matrix.arch }}
path: dist/win/bundle/resources
@@ -358,7 +349,7 @@ jobs:
-define BundleName="Cryptomator"
-define BundleVersion="${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum}}"
-define BundleVendor="Skymatic GmbH"
-define BundleCopyright="(C) 2016 - 2025 Skymatic GmbH"
-define BundleCopyright="(C) 2016 - 2026 Skymatic GmbH"
-define AboutUrl="https://cryptomator.org"
-define HelpUrl="https://cryptomator.org/contact"
-define UpdateUrl="https://cryptomator.org/downloads/"
@@ -370,7 +361,7 @@ jobs:
run: >
wix burn detach installer/unsigned/Cryptomator-Installer.exe -engine tmp/engine.exe
- name: Sign WiX burn engine with Azure Trusted Signing
if: inputs.sign || github.event_name == 'release'
if: inputs.sign || github.event_name == 'release' || github.event_name == 'schedule'
uses: ./.github/actions/win-sign-action
with:
base-dir: ${{ github.workspace }}\tmp
@@ -380,21 +371,11 @@ jobs:
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Sign burn engine with Actalis CodeSigner
if: inputs.sign || github.event_name == 'release'
uses: skymatic/workflows/.github/actions/win-sign-action@957d3c2c08c56855fdac41e5afb9a7aca8c30dd9 # no specific version
with:
base-dir: 'tmp'
file-extensions: 'exe'
sign-description: 'Cryptomator Bundle Installer'
sign-url: 'https://cryptomator.org'
username: ${{ secrets.WIN_CODESIGN_USERNAME }}
password: ${{ secrets.WIN_CODESIGN_PW }}
- name: Reattach signed burn engine to installer
run: >
wix burn reattach installer/unsigned/Cryptomator-Installer.exe -engine tmp/engine.exe -o installer/Cryptomator-Installer.exe
- name: Sign EXE installer with Azure Trusted Signing
if: inputs.sign || github.event_name == 'release'
if: inputs.sign || github.event_name == 'release' || github.event_name == 'schedule'
uses: ./.github/actions/win-sign-action
with:
base-dir: ${{ github.workspace }}\installer
@@ -404,16 +385,6 @@ jobs:
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Sign installer with Actalis CodeSigner
if: inputs.sign || github.event_name == 'release'
uses: skymatic/workflows/.github/actions/win-sign-action@957d3c2c08c56855fdac41e5afb9a7aca8c30dd9 # no specific version
with:
base-dir: 'installer'
file-extensions: 'exe'
sign-description: 'Cryptomator Bundle Installer'
sign-url: 'https://cryptomator.org'
username: ${{ secrets.WIN_CODESIGN_USERNAME }}
password: ${{ secrets.WIN_CODESIGN_PW }}
- name: Add possible alpha/beta tags to installer name
run: mv installer/Cryptomator-Installer.exe Cryptomator-${{ needs.get-version.outputs.semVerStr }}-${{ matrix.executable-suffix }}.exe
- name: Create detached GPG signature with key 615D449FE6E6A235
@@ -442,12 +413,12 @@ jobs:
download-url-exe-x64: ${{ fromJSON(steps.publish.outputs.assets)[2].browser_download_url }}
steps:
- name: Download installers
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
merge-multiple: true
- name: Publish installers on GitHub Releases
id: publish
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
@@ -480,7 +451,7 @@ jobs:
- name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'

View File

@@ -18,7 +18,7 @@ jobs:
env:
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Submit package
uses: vedantmgoyal2009/winget-releaser@19e706d4c9121098010096f9c495a70a7518b30f # no_specific_version
uses: vedantmgoyal2009/winget-releaser@7bd472be23763def6e16bd06cc8b1cdfab0e2fd5 # no_specific_version
with:
identifier: Cryptomator.Cryptomator
version: ${{ inputs.tag }}

View File

@@ -7,6 +7,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
The changelog starts with version 1.19.0.
Changes to prior versions can be found on the [Github release page](https://github.com/cryptomator/cryptomator/releases).
## [Unreleased](https://github.com/cryptomator/cryptomator/compare/1.19.1...HEAD)
No changes yet.
## [1.19.2](https://github.com/cryptomator/cryptomator/releases/1.19.2) - 2026-03-20
### Security

View File

@@ -82,7 +82,7 @@ ${JAVA_HOME}/bin/jpackage \
--vendor "Skymatic GmbH" \
--java-options "--enable-preview" \
--java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator" \
--copyright "(C) 2016 - 2025 Skymatic GmbH" \
--copyright "(C) 2016 - 2026 Skymatic GmbH" \
--java-options "-Xss5m" \
--java-options "-Xmx256m" \
--app-version "${VERSION}.${REVISION_NO}" \

View File

@@ -46,7 +46,7 @@ override_dh_auto_build:
--vendor "Skymatic GmbH" \
--java-options "--enable-preview" \
--java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator" \
--copyright "(C) 2016 - 2025 Skymatic GmbH" \
--copyright "(C) 2016 - 2026 Skymatic GmbH" \
--java-options "-Xss5m" \
--java-options "-Xmx256m" \
--java-options "-Dfile.encoding=\"utf-8\"" \

View File

@@ -0,0 +1,15 @@
#!/bin/sh
# From: https://gitlab.gnome.org/GNOME/gnome-builder/-/blob/main/build-aux/flatpak/fusermount-wrapper.sh
if [ -z "$_FUSE_COMMFD" ]; then
FD_ARGS=
else
FD_ARGS="--env=_FUSE_COMMFD=${_FUSE_COMMFD} --forward-fd=${_FUSE_COMMFD}"
fi
if [ -e /proc/self/fd/3 ] && [ 3 != "$_FUSE_COMMFD" ]; then
FD_ARGS="$FD_ARGS --forward-fd=3"
fi
exec flatpak-spawn --host --forward-fd=1 --forward-fd=2 $FD_ARGS fusermount3 "$@"

View File

@@ -0,0 +1,182 @@
app-id: org.cryptomator.Cryptomator
command: cryptomator
runtime: org.freedesktop.Platform
runtime-version: '25.08'
sdk: org.freedesktop.Sdk
separate-locales: false
finish-args:
# Required for FUSE, see https://github.com/flathub/org.cryptomator.Cryptomator/pull/68#issuecomment-1935136502
- --device=all
# Set the PATH environment variable in the application, as flatpak is resetting the shell's PATH
- --env=PATH=/app/bin/:/usr/bin/
# Allow filesystem access to the user's home dir
# Needed to manage vaults there
- --filesystem=home
# Reading system certificates
- --filesystem=host-etc:ro
# Allow access to the XDG data directory
# Needed to connect to KeePassXC's UNIX domain socket
- --filesystem=xdg-run/org.keepassxc.KeePassXC.BrowserServer
- --filesystem=xdg-run/app/org.keepassxc.KeePassXC/
# Share IPC namespace with the host, without it the X11 shared memory extension will not work
- --share=ipc
# Allow access to the network
- --share=network
# Show windows using X11
- --socket=x11
# Needed to reveal encrypted files
- --talk-name=org.freedesktop.FileManager1
# Run any command on the host
# Needed to spawn fusermount on the host
- --talk-name=org.freedesktop.Flatpak
# Allow desktop notifications
- --talk-name=org.freedesktop.Notifications
# Allow access to the GNOME secret service API and to talk to the GNOME keyring daemon
- --talk-name=org.freedesktop.secrets
- --talk-name=org.gnome.keyring
# Allow to talk to the KDE kwallet daemon
- --talk-name=org.kde.kwalletd5
- --talk-name=org.kde.kwalletd6
# Needed to talk to the gvfs daemons over D-Bus and list mounts using the GIO APIs
- --talk-name=org.gtk.vfs.*
# Allow access to appindicator icons
- --talk-name=org.ayatana
# Allow access to appindicator icons on KDE
- --talk-name=org.kde.StatusNotifierWatcher
cleanup:
- /include
- /lib/pkgconfig
modules:
- shared-modules/libayatana-appindicator/libayatana-appindicator-gtk3.json
- name: libfuse
buildsystem: meson
config-opts:
- -Dexamples=false
- -Dinitscriptdir=
- -Duseroot=false
- -Dtests=false
# don't install rules on the host
- -Dudevrulesdir=/tmp/
sources:
- type: archive
url: https://github.com/libfuse/libfuse/releases/download/fuse-3.16.2/fuse-3.16.2.tar.gz
sha256: f797055d9296b275e981f5f62d4e32e089614fc253d1ef2985851025b8a0ce87
x-checker-data:
type: anitya
project-id: 861
url-template: https://github.com/libfuse/libfuse/releases/download/fuse-$version/fuse-$version.tar.gz
versions: {<: '3.17.0'}
- name: host-command-wrapper
buildsystem: simple
build-commands:
- install fusermount-wrapper.sh /app/bin/fusermount3
sources:
- type: file
path: build-aux/fusermount-wrapper.sh
- name: cryptomator
buildsystem: simple
build-options:
build-args:
- --share=network
env:
PATH: /app/bin:/usr/bin
MAVEN_OPTS: -Dmaven.repo.local=.m2/repository
JAVA_HOME: jdk
JMODS_PATH: jmods
VERSION: $FLATPAK_VERSION
REVISION_NO: '$FLATPAK_REVISION'
build-commands:
# Setup Java
- tar xvfz jdk.tar.gz --transform 's!^[^/]*!jdk!'
- mkdir jmods
- unzip -j openjfx.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d jmods
# Setup Maven
- mkdir maven
- tar xf maven.tar.gz --strip-components=1 --exclude=jansi-native --directory=maven
# Build project
- maven/bin/mvn clean package -DskipTests -P"linux-$(uname -m)"
- cp target/cryptomator-*.jar target/mods
- cd target
- $JAVA_HOME/bin/jlink
--output runtime
--module-path $JMODS_PATH
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.crypto.ec,jdk.crypto.cryptoki,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net,java.compiler
--no-header-files
--no-man-pages
--strip-debug
--compress=zip-0
- $JAVA_HOME/bin/jpackage
--type app-image
--runtime-image runtime
--input target/libs
--module-path target/mods
--module org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator
--dest .
--name Cryptomator
--vendor 'Skymatic GmbH'
--copyright '(C) 2016 - 2026 Skymatic GmbH'
--java-options '--enable-native-access=javafx.graphics,org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator'
--java-options "--sun-misc-unsafe-memory-access=allow"
--java-options '-Xss5m'
--java-options '-Xmx256m'
--java-options '-Dfile.encoding='utf-8''
--java-options '-Djava.net.useSystemProxies=true'
--java-options "-Dcryptomator.appVersion='${VERSION}'"
--java-options "-Dcryptomator.buildNumber='flatpak-${REVISION_NO}'"
--java-options '-Dcryptomator.ipcSocketPath='@{userhome}/.config/Cryptomator/ipc.socket''
--java-options '-Dcryptomator.adminConfigPath='/run/host/etc/cryptomator/config.properties''
--java-options '-Dcryptomator.logDir='@{userhome}/.local/share/Cryptomator/logs''
--java-options '-Dcryptomator.mountPointsDir='@{userhome}/.local/share/Cryptomator/mnt''
--java-options '-Dcryptomator.pluginDir='@{userhome}/.local/share/Cryptomator/plugins''
--java-options '-Dcryptomator.p12Path='@{userhome}/.config/Cryptomator/key.p12''
--java-options '-Dcryptomator.settingsPath='@{userhome}/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json''
--java-options '-Dcryptomator.showTrayIcon=true'
--java-options '-Dcryptomator.updateMechanism=org.cryptomator.linux.update.FlatpakUpdater'
--java-options '-Dcryptomator.networking.truststore.p12Path='/run/host/etc/cryptomator/certs.p12''
--java-options '-Dcryptomator.hub.enableTrustOnFirstUse=true'
--app-version "${VERSION}.${REVISION_NO}"
--verbose
- cp -R Cryptomator /app/
- ln -s /app/Cryptomator/bin/Cryptomator /app/bin/cryptomator
- cp -R /app/lib/* /app/Cryptomator/lib/app/
- install -D -m0644 -t /app/share/applications/ dist/linux/common/org.cryptomator.Cryptomator.desktop
- install -D -m0644 -t /app/share/icons/hicolor/scalable/apps/ dist/linux/common/org.cryptomator.Cryptomator.svg
- install -D -m0644 -T dist/linux/common/org.cryptomator.Cryptomator.tray.svg /app/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-symbolic.svg
- install -D -m0644 -T dist/linux/common/org.cryptomator.Cryptomator.tray-unlocked.svg /app/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-unlocked-symbolic.svg
- install -D -m0644 -t /app/share/metainfo/ dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
sources:
- $CRYPTOMATOR_SOURCE
- type: file
dest-filename: jdk.tar.gz
only-arches:
- x86_64
url: https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jdk_x64_linux_hotspot_25.0.2_10.tar.gz
sha512: 29043fde119a031c2ca8d57aed445fedd9e7f74608fcdc7a809076ba84cfd1c31f08de2ecccf352e159fdcd1cae172395ed46363007552ff242057826c81ab3a
- type: file
dest-filename: jdk.tar.gz
only-arches:
- aarch64
url: https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jdk_aarch64_linux_hotspot_25.0.2_10.tar.gz
sha512: f1d3ccec3e1f1bed9d632f14b9223709d6e5c2e0d922125d068870dd3016492a2ca8f08924d4a9d0dc5eb2159fa09efee366a748fd0093475baf29e5c70c781a
- type: file
dest-filename: openjfx.zip
only-arches:
- x86_64
url: https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-x64_bin-jmods.zip
sha512: 21f550217101c513f9eb1d7947eba30cb79618238e6539ce770e54e84b01574cdaeba40af602391145f163dd8e43e3794395467413152f13ffffeff948b0ca1b
- type: file
dest-filename: openjfx.zip
only-arches:
- aarch64
url: https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-aarch64_bin-jmods.zip
sha512: a9268409b3803e386490bf1319d0f0a14173cebe862c12254cd51b430ee0a297437d9e38d5ebeae0da8899be898b312b103330d09dcfd3e63c1e7d15f2f14311
- type: file
dest-filename: maven.tar.gz
url: https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.13/apache-maven-3.9.13-bin.tar.gz
sha512: d9ccd44ba2991586e359c29eb86780ae8ff4ec1b88b0b8af3af074803472690cf2017782a9c4401343c62cbcd056231db9612e1e551cbd9747c21746d732c015
x-checker-data:
type: anitya
project-id: 1894
stable-only: true
url-template: https://repo1.maven.org/maven2/org/apache/maven/apache-maven/$version/apache-maven-$version-bin.tar.gz
versions: {<: '4.0'}

View File

@@ -24,7 +24,7 @@ rm -rf runtime dmg *.app *.dmg
# set variables
APP_NAME="Cryptomator"
VENDOR="Skymatic GmbH"
COPYRIGHT_YEARS="2016 - 2025"
COPYRIGHT_YEARS="2016 - 2026"
PACKAGE_IDENTIFIER="org.cryptomator"
MAIN_JAR_GLOB="cryptomator-*.jar"
MODULE_AND_MAIN_CLASS="org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator"

50
pom.xml
View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId>
<artifactId>cryptomator</artifactId>
<version>1.19.2</version>
<version>1.20.0-SNAPSHOT</version>
<name>Cryptomator Desktop App</name>
<organization>
@@ -527,11 +527,57 @@
</profile>
<profile>
<id>linux</id>
<id>linux-aarch64</id>
<activation>
<os>
<family>unix</family>
<name>Linux</name>
<arch>aarch64</arch>
</os>
<property>
<name>idea.version</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.cryptomator</groupId>
<artifactId>integrations-linux</artifactId>
<version>${cryptomator.integrations.linux.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>${javafx.version}</version>
<classifier>linux-aarch64</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>${javafx.version}</version>
<classifier>linux-aarch64</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
<classifier>linux-aarch64</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
<classifier>linux-aarch64</classifier>
</dependency>
</dependencies>
</profile>
<profile>
<id>linux-x86_64</id>
<activation>
<os>
<family>unix</family>
<name>Linux</name>
<arch>amd64</arch>
</os>
<property>
<name>idea.version</name>

View File

@@ -58,8 +58,6 @@ public class DecryptFileNamesViewController implements FxController {
private final Stage window;
private final Vault vault;
private final ResourceBundle resourceBundle;
private final List<Path> initialList;
@FXML
public TableColumn<CipherAndCleartext, String> ciphertextColumn;
@FXML
@@ -68,12 +66,11 @@ public class DecryptFileNamesViewController implements FxController {
public TableView<CipherAndCleartext> cipherToCleartextTable;
@Inject
public DecryptFileNamesViewController(@DecryptNameWindow Stage window, @DecryptNameWindow Vault vault, @DecryptNameWindow List<Path> pathsToDecrypt, ResourceBundle resourceBundle) {
public DecryptFileNamesViewController(@DecryptNameWindow Stage window, @DecryptNameWindow Vault vault, ResourceBundle resourceBundle) {
this.window = window;
this.vault = vault;
this.resourceBundle = resourceBundle;
this.mapping = new SimpleListProperty<>(FXCollections.observableArrayList());
this.initialList = pathsToDecrypt;
}
@FXML
@@ -97,8 +94,7 @@ public class DecryptFileNamesViewController implements FxController {
});
cipherToCleartextTable.setOnDragDropped(event -> {
if (event.getGestureSource() == null && event.getDragboard().hasFiles()) {
checkAndDecrypt(event.getDragboard().getFiles().stream().map(File::toPath).toList());
cipherToCleartextTable.setItems(mapping);
decrypt(event.getDragboard().getFiles().stream().map(File::toPath).toList());
}
});
cipherToCleartextTable.setOnDragExited(_ -> cipherToCleartextTable.setItems(mapping));
@@ -124,9 +120,7 @@ public class DecryptFileNamesViewController implements FxController {
});
}
});
if (!initialList.isEmpty()) {
checkAndDecrypt(initialList);
}
window.setOnHidden(_ -> mapping.clear());
}
private void copySingleCelltoClipboard() {
@@ -149,10 +143,18 @@ public class DecryptFileNamesViewController implements FxController {
fileChooser.setInitialDirectory(vault.getPath().toFile());
var ciphertextNodes = fileChooser.showOpenMultipleDialog(window);
if (ciphertextNodes != null) {
checkAndDecrypt(ciphertextNodes.stream().map(File::toPath).toList());
decrypt(ciphertextNodes.stream().map(File::toPath).toList());
}
}
public void decrypt(List<Path> pathsToDecrypt) {
if (pathsToDecrypt.isEmpty()) {
return;
}
checkAndDecrypt(pathsToDecrypt);
cipherToCleartextTable.setItems(mapping);
}
private void checkAndDecrypt(List<Path> pathsToDecrypt) {
mapping.clear();
//Assumption: All files are in the same directory

View File

@@ -28,23 +28,28 @@ public interface DecryptNameComponent {
@FxmlScene(FxmlFile.DECRYPTNAMES)
Lazy<Scene> decryptNamesView();
DecryptFileNamesViewController controller();
@DecryptNameWindow
Vault vault();
default void showDecryptFileNameWindow() {
default void showDecryptFileNameWindow(List<Path> pathsToDecrypt) {
Stage s = window();
s.setScene(decryptNamesView().get());
s.sizeToScene();
if (vault().isUnlocked()) {
controller().decrypt(pathsToDecrypt);
s.show();
s.requestFocus();
} else {
LOG.error("Aborted showing DecryptFileName window: vault state is not {}, but {}.", VaultState.Value.UNLOCKED, vault().getState());
s.close();
}
}
@Subcomponent.Factory
interface Factory {
DecryptNameComponent create(@BindsInstance @DecryptNameWindow Vault vault, @BindsInstance @Named("windowOwner") Stage owner, @BindsInstance @DecryptNameWindow List<Path> pathsToDecrypt);
DecryptNameComponent create(@BindsInstance @DecryptNameWindow Vault vault, @BindsInstance @Named("windowOwner") Stage owner);
}
}

View File

@@ -64,17 +64,6 @@ abstract class FxApplicationModule {
return builder.build();
}
@Provides
@FxApplicationScoped
static MainWindowComponent provideMainWindowComponent(MainWindowComponent.Builder builder) {
return builder.build();
}
@Provides
@FxApplicationScoped
static PreferencesComponent providePreferencesComponent(PreferencesComponent.Builder builder) {
return builder.build();
}
@Provides
@FxApplicationScoped
@@ -88,10 +77,4 @@ abstract class FxApplicationModule {
return factory.create();
}
@Provides
@FxApplicationScoped
static NotificationComponent provideNotificationComponent(NotificationComponent.Factory factory) {
return factory.create();
}
}

View File

@@ -39,6 +39,7 @@ import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ExecutorService;
import java.util.function.Supplier;
@FxApplicationScoped
public class FxApplicationWindows {
@@ -47,15 +48,15 @@ public class FxApplicationWindows {
private final Stage primaryStage;
private final Optional<TrayIntegrationProvider> trayIntegration;
private final Lazy<MainWindowComponent> mainWindow;
private final Lazy<PreferencesComponent> preferencesWindow;
private final CachedLazy<MainWindowComponent> mainWindow;
private final CachedLazy<PreferencesComponent> preferencesWindow;
private final QuitComponent.Builder quitWindowBuilder;
private final UnlockComponent.Factory unlockWorkflowFactory;
private final UpdateReminderComponent.Factory updateReminderWindowFactory;
private final LockComponent.Factory lockWorkflowFactory;
private final ErrorComponent.Factory errorWindowFactory;
private final Lazy<EventViewComponent> eventViewWindow;
private final Lazy<NotificationComponent> notificationWindow;
private final CachedLazy<EventViewComponent> eventViewWindow;
private final CachedLazy<NotificationComponent> notificationWindow;
private final ExecutorService executor;
private final VaultOptionsComponent.Factory vaultOptionsWindow;
private final ShareVaultComponent.Factory shareVaultWindow;
@@ -65,8 +66,8 @@ public class FxApplicationWindows {
@Inject
public FxApplicationWindows(@PrimaryStage Stage primaryStage, //
Optional<TrayIntegrationProvider> trayIntegration, //
Lazy<MainWindowComponent> mainWindow, //
Lazy<PreferencesComponent> preferencesWindow, //
MainWindowComponent.Builder mainWindowBuilder, //
PreferencesComponent.Builder preferencesWindowBuilder, //
QuitComponent.Builder quitWindowBuilder, //
UnlockComponent.Factory unlockWorkflowFactory, //
UpdateReminderComponent.Factory updateReminderWindowFactory, //
@@ -74,21 +75,21 @@ public class FxApplicationWindows {
ErrorComponent.Factory errorWindowFactory, //
VaultOptionsComponent.Factory vaultOptionsWindow, //
ShareVaultComponent.Factory shareVaultWindow, //
Lazy<EventViewComponent> eventViewWindow, //
Lazy<NotificationComponent> notificationWindow,
EventViewComponent.Factory eventViewWindowFactory, //
NotificationComponent.Factory notificationWindowFactory, //
ExecutorService executor, //
Dialogs dialogs) {
this.primaryStage = primaryStage;
this.trayIntegration = trayIntegration;
this.mainWindow = mainWindow;
this.preferencesWindow = preferencesWindow;
this.mainWindow = new CachedLazy<>(mainWindowBuilder::build);
this.preferencesWindow = new CachedLazy<>(preferencesWindowBuilder::build);
this.quitWindowBuilder = quitWindowBuilder;
this.unlockWorkflowFactory = unlockWorkflowFactory;
this.updateReminderWindowFactory = updateReminderWindowFactory;
this.lockWorkflowFactory = lockWorkflowFactory;
this.errorWindowFactory = errorWindowFactory;
this.eventViewWindow = eventViewWindow;
this.notificationWindow = notificationWindow;
this.eventViewWindow = new CachedLazy<>(eventViewWindowFactory::create);
this.notificationWindow = new CachedLazy<>(notificationWindowFactory::create);
this.executor = executor;
this.vaultOptionsWindow = vaultOptionsWindow;
this.shareVaultWindow = shareVaultWindow;
@@ -218,4 +219,29 @@ public class FxApplicationWindows {
LOG.error("Failed to display stage", error);
}
}
private static class CachedLazy<T> implements Lazy<T> {
private final Supplier<T> supplier;
private volatile T instance = null;
public CachedLazy(Supplier<T> supplier) {
this.supplier = supplier;
}
@Override
public T get() {
T value = instance;
if (value == null) {
synchronized (this) {
value = instance;
if (value == null) {
value = supplier.get();
instance = value;
}
}
}
return instance;
}
}
}

View File

@@ -1,9 +1,8 @@
package org.cryptomator.ui.mainwindow;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
import com.google.common.base.Preconditions;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.tobiasdiez.easybind.EasyBind;
import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.Nullable;
@@ -58,6 +57,7 @@ public class VaultDetailUnlockedController implements FxController {
private final DecryptNameComponent.Factory decryptNameWindowFactory;
private final ResourceBundle resourceBundle;
private final LoadingCache<Vault, VaultStatisticsComponent> vaultStats;
private final LoadingCache<Vault, DecryptNameComponent> decryptNameWindows;
private final VaultStatisticsComponent.Builder vaultStatsBuilder;
private final ObservableValue<Boolean> accessibleViaPath;
private final ObservableValue<Boolean> accessibleViaUri;
@@ -89,7 +89,8 @@ public class VaultDetailUnlockedController implements FxController {
this.revealPathService = revealPathService;
this.decryptNameWindowFactory = decryptNameWindowFactory;
this.resourceBundle = resourceBundle;
this.vaultStats = CacheBuilder.newBuilder().weakValues().build(CacheLoader.from(this::buildVaultStats));
this.vaultStats = Caffeine.newBuilder().weakValues().build(this::buildVaultStats);
this.decryptNameWindows = Caffeine.newBuilder().weakValues().build(this::buildDecryptNameWindow);
this.vaultStatsBuilder = vaultStatsBuilder;
var mp = vault.flatMap(Vault::mountPointProperty);
this.accessibleViaPath = mp.map(m -> m instanceof Mountpoint.WithPath).orElse(false);
@@ -161,7 +162,7 @@ public class VaultDetailUnlockedController implements FxController {
}
private void showDecryptNameWindow(List<Path> pathsToDecrypt) {
decryptNameWindowFactory.create(vault.get(), mainWindow, pathsToDecrypt).showDecryptFileNameWindow();
decryptNameWindows.get(vault.get()).showDecryptFileNameWindow(pathsToDecrypt);
}
private boolean startsWithVaultAccessPoint(Path path) {
@@ -198,6 +199,10 @@ public class VaultDetailUnlockedController implements FxController {
return vaultStatsBuilder.vault(vault).build();
}
private DecryptNameComponent buildDecryptNameWindow(Vault vault) {
return decryptNameWindowFactory.create(vault, mainWindow);
}
@FXML
public void revealAccessLocation() {
vaultService.reveal(vault.get());
@@ -217,7 +222,7 @@ public class VaultDetailUnlockedController implements FxController {
@FXML
public void showVaultStatistics() {
vaultStats.getUnchecked(vault.get()).showVaultStatisticsWindow();
vaultStats.get(vault.get()).showVaultStatisticsWindow();
}
/* Getter/Setter */

View File

@@ -260,7 +260,7 @@ public class UpdatesPreferencesController implements FxController {
public boolean isProhibitUpdateWhileUnlocked() {
// If the result of the last update check was from the fallback mechanism, we don't need to show the warning
return !unlockedVaults.isEmpty() && !FallbackUpdateInfo.class.isInstance(updateChecker.getUpdate());
return !unlockedVaults.isEmpty() && updateChecker.isUpdateAvailable() && !FallbackUpdateInfo.class.isInstance(updateChecker.getUpdate());
}
public BooleanBinding prohibitUpdateWhileUnlockedProperty() {

View File

@@ -18,7 +18,10 @@ import java.net.URISyntaxException;
public class ShareVaultController implements FxController {
private static final String SCHEME_PREFIX = "hub+";
private static final String VISIT_HUB_URL = "https://cryptomator.org/hub/";
private static final String VISIT_HUB_URL = "https://cryptomator.org/hub/" //
+ "?utm_source=cryptomator-desktop" //
+ "&utm_medium=app" //
+ "&utm_campaign=share-vault";
private static final String BEST_PRACTICES_URL = "https://docs.cryptomator.org/security/best-practices/#sharing-of-vaults";
private final Stage window;

View File

@@ -22,7 +22,7 @@
</ImageView>
<VBox spacing="3" HBox.hgrow="ALWAYS" alignment="CENTER_LEFT">
<FormattedLabel styleClass="label-extra-large" format="Cryptomator %s" arg1="${controller.fullApplicationVersion}"/>
<Label text="© 2016 2025 Skymatic GmbH"/>
<Label text="© 2016 2026 Skymatic GmbH"/>
</VBox>
</HBox>

View File

@@ -32,6 +32,7 @@
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -40,6 +41,7 @@
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -154,4 +156,4 @@
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -154,6 +154,8 @@ unlock.error.title=فشل فتح "%s"
hub.noKeychain.message=غير قادر على الوصول إلى مفتاح الجهاز
hub.noKeychain.description=من أجل فتح مركز مخازن، مطلوب مفتاح جهاز، يتم تأمينه باستخدام سلسلة مفاتيح. للمضي قدما، قم بتمكين "%s" واختر سلسلة مفاتيح في التفضيلات.
hub.noKeychain.openBtn=فتح التفضيلات
### Check Host Authenticity
hub.checkHostTrust.trustBtn=ثق
### Waiting
hub.auth.message=جاري الانتظار للمصادقة…
hub.auth.description=يجب أن يتم إعادة توجيهك تلقائياً إلى صفحة تسجيل الدخول.
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=هذا الجهاز مسجل
### Unauthorized
hub.unauthorized.message=تم رفض الوصول
hub.unauthorized.description=غير مسموح لك بفتح هذا المستودع. اتصل بمالك المستودع لطلب الوصول.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=مطلوب اتخاذ إجراء
hub.requireAccountInit.description.0=للمتابعة، يرجى إكمال الخطوات المطلوبة في
@@ -645,4 +648,4 @@ eventView.entry.inUse.showEncrypted=عرض ملَف المشفر
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -151,6 +151,8 @@ unlock.error.title="%s" биге асылманы
hub.noKeychain.message=Йыһаз асҡысына инеү рөхсәте юҡ
hub.noKeychain.description=Хаб һаҡлағыстарын асыу өсөн йыһаз асҡысы кәрәк, ул иһә асҡыс сылбырында һаҡлана. Артабан “%s” мөмкинлеге бирегеҙ һәм көйләүҙәрҙә асҡыс сылбырын һайлағыҙ.
hub.noKeychain.openBtn=Көйләүҙәрҙе ас
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Ышан
### Waiting
hub.auth.message=Аутентиклау көтөлә…
hub.auth.description=Автоматик рәүештә инеү битенә йүнәлтелергә тейешһегеҙ.
@@ -170,6 +172,7 @@ hub.registerSuccess.unlockBtn=Биген ас
### Archived
### Unauthorized
hub.unauthorized.message=Инеү кире ҡағылды
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Эш-хәрәкәт кәрәкле
hub.requireAccountInit.description.0=Дауам итер өсөн, кәрәкле аҙымдар тамамланырға тейеш урын:
@@ -555,4 +558,4 @@ dokanySupportEnd.preferencesBtn=Көйләүҙәрҙе ас
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -145,6 +145,7 @@ unlock.error.customPath.description.inUse=Дыскавая літара або
hub.noKeychain.message=Няма доступу да ключа прылады
hub.noKeychain.description=Каб разамкнуць скарбніцы Hub, патрэбны ключ прылады, які захаваны ў звязку ключоў. Каб працягнуць, уключы "%s" ды абяры звязак ключоў у наладах.
hub.noKeychain.openBtn=Адчыніць налады
### Check Host Authenticity
### Waiting
hub.auth.message=Чаканне спраўджання…
hub.auth.description=Ты мусіш аўтаматычна перанакіравацца на старонку ўваходу.
@@ -162,6 +163,7 @@ hub.registerSuccess.unlockBtn=Адамкнуць
### Archived
### Unauthorized
hub.unauthorized.message=Адмова ў доступе
### Untrusted Host
### Requires Account Initialization
### License Exceeded
hub.invalidLicense.message=Несапраўдная ліцэнзія Hub
@@ -532,4 +534,4 @@ dokanySupportEnd.preferencesBtn=Адчыніць налады
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -158,6 +158,7 @@ unlock.error.title=Неуспешно отключване на „%s“
hub.noKeychain.message=Няма достъп до ключа на устройството
hub.noKeychain.description=За да отключите хранилищата в Hub е необходим ключ за устройството, който се защитава с помощта на ключодържател. За да продължите, разрешете „%s“ и изберете ключодържателя в настройките.
hub.noKeychain.openBtn=Към настройките
### Check Host Authenticity
### Waiting
hub.auth.message=Изчакване на удостоверяване…
hub.auth.description=Автоматично ще бъдете пренасочени към страницата за вход.
@@ -177,6 +178,7 @@ hub.registerSuccess.unlockBtn=Отключване
### Archived
### Unauthorized
hub.unauthorized.message=Отказан достъп
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Необходимо е действие
hub.requireAccountInit.description.0=За да продължите завършете необходимите стъпки в
@@ -563,4 +565,4 @@ dokanySupportEnd.preferencesBtn=Към настройките
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -92,6 +92,7 @@ unlock.unlockBtn=আনলক করুন
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -101,6 +102,7 @@ hub.registerSuccess.unlockBtn=আনলক করুন
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -221,4 +223,4 @@ vaultOptions.mount.mountPoint.directoryPickerButton=নির্বাচন ক
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -104,6 +104,8 @@ unlock.success.rememberChoice=Zapamtite izbor, ne pokazujte ovo ponovo
unlock.success.revealBtn=Otkrij pogon
## Failure
## Hub
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Povjerenje
### Waiting
### Receive Key
### Register Device
@@ -113,6 +115,7 @@ hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -356,4 +359,4 @@ quit.lockAndQuitBtn=Zaključaj i zatvori
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -155,6 +155,8 @@ unlock.error.title=El desblocatge de "%s" ha fallat
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.openBtn=Obrir les Preferències
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Confia-hi
### Waiting
hub.auth.message=Sestà esperant lautenticació…
hub.auth.description=Hauríeu de ser redirigits a la pàgina d'accés.
@@ -184,6 +186,7 @@ hub.registerFailed.description.deviceAlreadyExists=El dispositiu ja ha estat reg
### Unauthorized
hub.unauthorized.message=Accés denegat
hub.unauthorized.description=No estàs autoritzat a obrir aquesta caixa forta. Contacta amb el seu propietari per obtenir accés.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Acció necessària
hub.requireAccountInit.description.0=Per a continuar, si us plau, seguiu els passos necessaris en el vostre
@@ -611,4 +614,4 @@ shareVault.hub.openHub=Obre Cryptomator Hub
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -150,6 +150,8 @@ unlock.error.title=Odemknutí "%s" selhalo
hub.noKeychain.message=Nelze získat přístup ke klíči zařízení
hub.noKeychain.description=Chcete-li odemknout Hub trezory, je potřeba použít klíč zařízení, který je zabezpečen pomocí klíčenky. Chcete-li pokračovat, povolte „%s“ a vyberte klíčenku v nastavení.
hub.noKeychain.openBtn=Otevřít předvolby
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Důvěřovat
### Waiting
hub.auth.message=Čekání na ověření…
hub.auth.description=Měli byste být automaticky přesměrováni na přihlašovací stránku.
@@ -178,6 +180,7 @@ hub.registerFailed.description.deviceAlreadyExists=Toto zařízení je již regi
### Archived
### Unauthorized
hub.unauthorized.message=Přístup odepřen
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Požadována akce
hub.requireAccountInit.description.0=Chcete-li pokračovat, vyplňte prosím požadované kroky ve vašem
@@ -572,4 +575,4 @@ shareVault.hub.openHub=Otevřít Cryptomator Hub
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,12 @@ unlock.error.title=Oplåsning af "%s" mislykkedes
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.openBtn=Åbn Indstillinger
### Check Host Authenticity
hub.checkHostTrust.message.check=Kontrollerer konfiguration…
hub.checkHostTrust.message.ask=Stol på denne vært?
hub.checkHostTrust.message.ask.plural=Stol på disse værter?
hub.checkHostTrust.trustBtn=Hav tillid
hub.checkHostTrust.denyBtn=Afvis
### Waiting
hub.auth.message=Afventer godkendelse…
hub.auth.description=Du burde automatisk blive omdirigeret til login-siden.
@@ -192,6 +198,9 @@ hub.archived.description=Denne boks er blevet arkiveret og er ikke længere tilg
### Unauthorized
hub.unauthorized.message=Adgang nægtet
hub.unauthorized.description=Du har ikke tilladelse til at åbne denne boks. Kontant ejeren af boksen for at anmode om adgang.
### Untrusted Host
hub.untrustedHost.message=Vært Ikke pålidelig
hub.untrustedHost.description=Forbindelsen til Hub blev blokeret for din sikkerhed. Hvis du mener, at Hub-værten er sikker, så kontakt din Hub-administrator eller prøv igen.
### Requires Account Initialization
hub.requireAccountInit.message=Handling påkrævet
hub.requireAccountInit.description.0=For at fortsætte, skal du fuldføre de nødvendige trin i din
@@ -305,6 +314,7 @@ preferences.general.debugDirectory=Vis logfiler
preferences.general.autoStart=Start Cryptomator automatisk ved opstart
preferences.general.keychainBackend=Gem adgangskoder med
preferences.general.quickAccessService=Tilføj oplåste bokse til området hurtig adgang
preferences.general.resetTrustedHosts=Nulstil betroede værter
## Interface
preferences.interface=Brugerflade
preferences.interface.theme=Udseende
@@ -716,4 +726,4 @@ eventView.entry.inUse.ignoreLock=Ignorér anvendelsesstatus
## FileIsInUse Notification
notification.inUse.message=Filen er i brug på en anden enhed
notification.inUse.description=Filen er åbnet af %s på %s. Bed dem om at lukke filen og lade synkroniseringen afslutte. Du kan ignorere status for at åbne den nu, men det kan forårsage konflikter eller overskrive nyere ændringer.
notification.inUse.action=Ignorér anvendelsesstatus
notification.inUse.action=Ignorér anvendelsesstatus

View File

@@ -156,6 +156,8 @@ unlock.error.title=„%s“ konnte nicht entsperrt werden
hub.noKeychain.message=Zugriff auf Geräteschlüssel nicht möglich
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
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Vertrauen
### Waiting
hub.auth.message=Warten auf Authentifizierung …
hub.auth.description=Du solltest automatisch zur Anmeldeseite weitergeleitet werden.
@@ -187,6 +189,7 @@ hub.archived.description=Dieser Tresor wurde archiviert, daher ist ein Zugriff d
### Unauthorized
hub.unauthorized.message=Zugriff verweigert
hub.unauthorized.description=Du bist nicht berechtigt, diesen Tresor zu öffnen. Wende dich an den Tresoreigentümer, um Zugriff zu erhalten.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Aktion erforderlich
hub.requireAccountInit.description.0=Um fortzufahren, führe bitte die erforderlichen Schritte in deinem
@@ -298,6 +301,7 @@ preferences.general.debugDirectory=Protokolldateien anzeigen
preferences.general.autoStart=Cryptomator beim Systemstart starten
preferences.general.keychainBackend=Passwörter speichern mit
preferences.general.quickAccessService=Entsperrte Tresore zum Schnellzugriff hinzufügen
preferences.general.resetTrustedHosts=Vertrauenswürdige Hosts zurücksetzen
## Interface
preferences.interface=Benutzeroberfläche
preferences.interface.theme=Erscheinungsbild
@@ -701,4 +705,4 @@ eventView.entry.inUse.copyUserAndDevice=Benutzer- und Gerätenamen der Sperre ko
# Notifications
## FileIsInUse Notification
notification.inUse.action=Verwendungsstatus ignorieren
notification.inUse.action=Verwendungsstatus ignorieren

View File

@@ -154,6 +154,8 @@ unlock.error.title=Ξεκλείδωμα "%s" απέτυχε
hub.noKeychain.message=Δεν είναι δυνατή η πρόσβαση στο κλειδί της συσκευής
hub.noKeychain.description=Για να ξεκλειδώσετε τις κρύπτες Hub, απαιτείται ένα κλειδί συσκευής, το οποίο ασφαλίζεται με χρήση μπρελόκ. Για να συνεχίσετε, ενεργοποιήστε το "%s" και επιλέξτε ένα keychain στις προτιμήσεις.
hub.noKeychain.openBtn=Άνοιγμα Προτιμήσεων
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Εμπιστευτείτε
### Waiting
hub.auth.message=Αναμονή για επαλήθευση…
hub.auth.description=Θα πρέπει να ανακατευθυνθείτε αυτόματα στη σελίδα σύνδεσης.
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=Αυτή η συσκευή ε
### Unauthorized
hub.unauthorized.message=Δεν επιτρέπεται η πρόσβαση
hub.unauthorized.description=Δεν είστε εξουσιοδοτημένοι να ανοίξετε αυτή την κρύπτη. Επικοινωνήστε με τον ιδιοκτήτη τς κρύπτης για να ζητήσετε πρόσβαση.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Απαιτείται ενέργεια
hub.requireAccountInit.description.0=Για να συνεχίσετε, παρακαλούμε ολοκληρώστε τα βήματα που απαιτούνται στο δικό σας
@@ -645,4 +648,4 @@ eventView.entry.inUse.showEncrypted=Εμφάνιση κρυπτογραφημέ
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -156,6 +156,12 @@ unlock.error.title=Error al desbloquear "%s"
hub.noKeychain.message=No se puede acceder a la clave del dispositivo
hub.noKeychain.description=Para desbloquear las bóvedas de Hub, se requiere una clave de dispositivo que se asegura con un llavero. Para continuar, habilite "%s" y seleccione un llavero en las preferencias.
hub.noKeychain.openBtn=Abrir preferencias
### Check Host Authenticity
hub.checkHostTrust.message.check=Comprobando configuración…
hub.checkHostTrust.message.ask=¿Confiar en este host?
hub.checkHostTrust.message.ask.plural=¿Confiar en estos hosts?
hub.checkHostTrust.trustBtn=Confiar
hub.checkHostTrust.denyBtn=Denegar
### Waiting
hub.auth.message=Esperando la autenticación…
hub.auth.description=Debería ser redirigido automáticamente a la página de inicio de sesión.
@@ -185,6 +191,9 @@ hub.registerFailed.description.deviceAlreadyExists=Este dispositivo ya se ha reg
### Unauthorized
hub.unauthorized.message=Acceso denegado
hub.unauthorized.description=No tiene autorización para abrir esta bóveda. Contacta al propietario de la bóveda para solicitar acceso.
### Untrusted Host
hub.untrustedHost.message=Host no confiable
hub.untrustedHost.description=La conexión al Hub fue bloqueada por su seguridad. Si cree que el Hub es seguro, póngase en contacto con la administración de Hub o vuelva a intentarlo.
### Requires Account Initialization
hub.requireAccountInit.message=Acción requerida
hub.requireAccountInit.description.0=Para continuar, por favor complete los pasos necesarios en su
@@ -298,6 +307,7 @@ preferences.general.debugDirectory=Revelar archivos de registro
preferences.general.autoStart=Cargar Cryptomator al iniciar el sistema
preferences.general.keychainBackend=Guardar contraseñas con
preferences.general.quickAccessService=Añadir bóvedas desbloqueadas al área de acceso rápido
preferences.general.resetTrustedHosts=Restablecer hosts de confianza
## Interface
preferences.interface=Interfaz
preferences.interface.theme=Apariencia
@@ -704,4 +714,4 @@ eventView.entry.inUse.ignoreLock=Ignorar el estado de uso
## FileIsInUse Notification
notification.inUse.message=El archivo está en uso en otro dispositivo
notification.inUse.description=El archivo está abierto por %s en %s. Solicítale que cierre el archivo y deje que finalice la sincronización. Puede ignorar el estado para abrirlo ahora, pero esto puede causar conflictos o sobrescribir cambios más recientes.
notification.inUse.action=Ignorar el Estado de Uso
notification.inUse.action=Ignorar el Estado de Uso

View File

@@ -114,6 +114,7 @@ unlock.success.revealBtn=نمایش درایو
## Failure
## Hub
hub.noKeychain.openBtn=باز کردن تنظیمات
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -124,6 +125,7 @@ hub.registerSuccess.unlockBtn=بازکردن قفل
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -256,4 +258,4 @@ dokanySupportEnd.preferencesBtn=باز کردن تنظیمات
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -156,6 +156,7 @@ unlock.error.title="%s" avaaminen epäonnistui
hub.noKeychain.message=Laitteen avainta ei löytynyt
hub.noKeychain.description=Hub-holvien purkamiseksi tarvitaan laiteavain joka on suojattu avainrenkaalla. Jatkaaksesi, kytke “%s” päälle ja valitse avainrengas asetuksista.
hub.noKeychain.openBtn=Avaa asetukset
### Check Host Authenticity
### Waiting
hub.auth.message=Odotetaan todennusta…
hub.auth.description=Pitäisi ohjata sinut automaattisesti uudelleen kirjautumissivulle.
@@ -185,6 +186,7 @@ hub.registerFailed.description.deviceAlreadyExists=Tämä laite on jo rekisterö
### Unauthorized
hub.unauthorized.message=Pääsy estetty
hub.unauthorized.description=Sinulla ei ole oikeutta avata tätä holvia. Ota yhteyttä holvin omistajaan pyytääksesi pääsyä.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Toimia vaaditaan
hub.requireAccountInit.description.0=Jatkaaksesi, ole hyvä ja suorita tarvittavat toimenpiteet
@@ -698,4 +700,4 @@ eventView.entry.inUse.showEncrypted=Näytä salattu tiedosto
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -154,6 +154,8 @@ unlock.error.title=Hindi mabuksan ang "%s"
hub.noKeychain.message=Hindi ma-access ang key ng device
hub.noKeychain.description=Para ma-unlock ang mga Hub vault, kailangan ng device key, na sini-secure gamit ang keychain. Upang magpatuloy, paganahin ang “%s” at pumili ng keychain sa mga kagustuhan.
hub.noKeychain.openBtn=Buksan ang Mga Kagustuhan
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Magtiwala
### Waiting
hub.auth.message=Naghihintay para sa pagpapatunay…
hub.auth.description=Dapat kang awtomatikong mai-redirect sa pahina ng pag-login.
@@ -182,6 +184,7 @@ hub.registerFailed.description.deviceAlreadyExists=Ang device na ito ay registra
### Archived
### Unauthorized
hub.unauthorized.message=Walang pahintulot
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Kinakailangan ang pagkilos
hub.requireAccountInit.description.0=Upang magpatuloy, mangyaring kumpletuhin ang mga hakbang na kinakailangan sa iyong
@@ -598,4 +601,4 @@ shareVault.hub.openHub=Buksan ang Cryptomator Hub
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,12 @@ unlock.error.title=Échec du déverrouillage de "%s"
hub.noKeychain.message=Impossible d'accéder à la clé du périphérique
hub.noKeychain.description=Le déverrouillage des coffres Hub nécessite une clé de périphérique sécurisée à l'aide d'un trousseau. Pour continuer, activez « %s » et sélectionnez un trousseau dans les préférences.
hub.noKeychain.openBtn=Ouvrir les préférences
### Check Host Authenticity
hub.checkHostTrust.message.check=Vérification de configuration…
hub.checkHostTrust.message.ask=Faire confiance à cet hôte ?
hub.checkHostTrust.message.ask.plural=Faire confiance à ces hôtes ?
hub.checkHostTrust.trustBtn=Approuver
hub.checkHostTrust.denyBtn=Refuser
### Waiting
hub.auth.message=Authentification en cours…
hub.auth.description=Vous devriez automatiquement être redirigé vers la page de connexion.
@@ -192,6 +198,9 @@ hub.archived.description=Ce coffre a été archivé et n'est plus accessible. Ve
### Unauthorized
hub.unauthorized.message=Accès refusé
hub.unauthorized.description=Vous n'êtes pas autorisé à ouvrir ce coffre. Contactez le propriétaire du coffre pour en demander l'accès.
### Untrusted Host
hub.untrustedHost.message=Hôte non fiable
hub.untrustedHost.description=La connexion à Hub a été bloquée pour votre sécurité. Si vous pensez que l'hôte Hub est en sécurité, contactez son administrateur ou réessayez.
### Requires Account Initialization
hub.requireAccountInit.message=Action requise
hub.requireAccountInit.description.0=Pour continuer, veuillez compléter les étapes requises
@@ -305,6 +314,7 @@ preferences.general.debugDirectory=Afficher le journal
preferences.general.autoStart=Lancer Cryptomator au démarrage du système
preferences.general.keychainBackend=Stocker les mots de passe avec
preferences.general.quickAccessService=Ajouter les coffres déverrouillés à la zone d'accès rapide
preferences.general.resetTrustedHosts=Réinitialiser les hôtes de confiance
## Interface
preferences.interface=Interface
preferences.interface.theme=Apparence
@@ -716,4 +726,4 @@ eventView.entry.inUse.ignoreLock=Ignorer le statut dutilisation
## FileIsInUse Notification
notification.inUse.message=Le fichier est utilisé sur un autre appareil
notification.inUse.description=Le fichier est ouvert par %s sur %s. Demandez-lui à fermer le fichier et laissez la synchronisation se terminer. Vous pouvez ignorer le statut pour louvrir maintenant, mais cela pourrait entraîner des conflits ou écraser des modifications récentes.
notification.inUse.action=Ignorer le statut dutilisation
notification.inUse.action=Ignorer le statut dutilisation

View File

@@ -46,6 +46,7 @@ error.message=Produciuse un erro
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -54,6 +55,7 @@ error.message=Produciuse un erro
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -169,4 +171,4 @@ lock.forced.retryBtn=Tentar de novo
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -150,6 +150,8 @@ unlock.error.customPath.description.notEmptyDir=הנתיב המותאם "%s" א
hub.noKeychain.message=לא ניתן לגשת למפתח המכשיר
hub.noKeychain.description=כדאי לשחרר כספות האב נדרש מפתח מכשיר שיאובטח בצרור מפתחות. כדאי להמשיך, אפשר ״%s״ ובחר את צרור המפתחות בהעדפות.
hub.noKeychain.openBtn=פתח העדפות
### Check Host Authenticity
hub.checkHostTrust.trustBtn=סמוך
### Waiting
hub.auth.message=ממתין לאימות…
hub.auth.description=אתה אמור להיות מופנה אוטומטית למסך ההזדהות.
@@ -166,6 +168,7 @@ hub.registerSuccess.unlockBtn=בטל נעילה
### Archived
### Unauthorized
hub.unauthorized.message=הגישה נדחתה
### Untrusted Host
### Requires Account Initialization
### License Exceeded
hub.invalidLicense.message=רישיון האב לא תקף
@@ -531,4 +534,4 @@ dokanySupportEnd.preferencesBtn=פתח העדפות
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -142,6 +142,8 @@ unlock.error.title="%s" तिजोरी खोलना विफल रह
## Hub
hub.noKeychain.message=उपकरण के कुंजी तक पहुंचने में असमर्थ
hub.noKeychain.openBtn=प्राथमिकताएँ खोलें
### Check Host Authenticity
hub.checkHostTrust.trustBtn=भरोसा करे
### Waiting
hub.auth.message=प्रमाणन के लिए इंतज़ार कर रहे...
hub.auth.description=आपको स्वचालित रूप से लॉगिन पृष्ठ पर पुनः निर्देशित किया जाना चाहिए।
@@ -158,6 +160,7 @@ hub.registerSuccess.unlockBtn=अनलॉक करें
### Archived
### Unauthorized
hub.unauthorized.message=प्रवेश अस्वीकृत
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=कार्रवाई आवश्यक है
hub.requireAccountInit.description.0=आगे बढ़ने के लिए, कृपया अपने आवश्यक चरणों को पूरा करें
@@ -354,4 +357,4 @@ dokanySupportEnd.preferencesBtn=प्राथमिकताएँ खोल
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -116,6 +116,8 @@ unlock.success.rememberChoice=Zapamti izbor, ne prikazuj ovo više
unlock.success.revealBtn=Otkrij pogon
## Failure
## Hub
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Vjeruj
### Waiting
### Receive Key
### Register Device
@@ -125,6 +127,7 @@ hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -421,4 +424,4 @@ quit.lockAndQuitBtn=Zaključaj i napusti
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -154,6 +154,8 @@ unlock.error.title=A(z) „%s” feloldása sikertelen
hub.noKeychain.message=Nem lehet az eszközkulcshoz hozzáférni
hub.noKeychain.description=Hogy feloldja a Hub széfeket, egy eszközkulcs szükséges, mely egy kulcslánccal van biztosítva. A folytatáshoz engedélyezze a következőt: “%s” és válasszon egy kulcsláncot a beállításokban.
hub.noKeychain.openBtn=Beállítások megnyitása
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Megbízható
### Waiting
hub.auth.message=Várakozás a hitelesítésre…
hub.auth.description=Automatikusan átirányítjuk a bejelentkezési oldalra.
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=Ez az eszköz már egy másik
### Unauthorized
hub.unauthorized.message=Hozzáférés megtagadva
hub.unauthorized.description=Nincs hozzáférésed a széf megnyitásához. Vedd fel a kapcsolatot a széf tulajdonosával és kérj hozzáférést.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Beavatkozás szükséges
hub.requireAccountInit.description.0=A folytatáshoz kérlek töltsd ki a szükséges lépéseket a te
@@ -613,4 +616,4 @@ shareVault.hub.openHub=Nyissa meg a Cryptomator Hubot
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -154,6 +154,8 @@ unlock.error.title=Gagal membuka kunci "%s"
hub.noKeychain.message=Tidak dapat mengakses perangkat kunci
hub.noKeychain.description=Untuk membuka kunci Hub vault, diperlukan perangkat kunci, yang diamankan menggunakan keychain. Untuk melanjutkan, aktifkan “%s” dan pilih keychain di preferensi.
hub.noKeychain.openBtn=Buka Preferensi
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Percayai
### Waiting
hub.auth.message=Menunggu otentikasi…
hub.auth.description=Anda secara otomatis akan diarahkan ke halaman login.
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=Perangkat ini sudah terdaftar
### Unauthorized
hub.unauthorized.message=Akses ditolak
hub.unauthorized.description=Anda tidak punya otorisasi untuk membuka brankas ini. Hubungi pemilik brankas untuk meminta akses.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Tindakan diperlukan
hub.requireAccountInit.description.0=Untuk melanjutkan, silakan lengkapi langkah-langkah yang diperlukan dalam
@@ -614,4 +617,4 @@ eventView.filter.allVaults=Semua
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,12 @@ unlock.error.title=Sblocco "%s" non riuscito
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.openBtn=Apri Preferenze
### Check Host Authenticity
hub.checkHostTrust.message.check=Controllo Configurazione…
hub.checkHostTrust.message.ask=Ti fidi di questo host?
hub.checkHostTrust.message.ask.plural=Ti fidi di questi host?
hub.checkHostTrust.trustBtn=Fidati
hub.checkHostTrust.denyBtn=Rifiuta
### Waiting
hub.auth.message=In attesa di autenticazione…
hub.auth.description=Dovresti essere reindirizzato automaticamente alla pagina di login.
@@ -192,6 +198,9 @@ hub.archived.description=Questa cassaforte è stata archiviata e non è più acc
### Unauthorized
hub.unauthorized.message=Accesso negato
hub.unauthorized.description=Non sei autorizzato ad aprire questa cassaforte. Chiedi l'accesso al proprietario.
### Untrusted Host
hub.untrustedHost.message=Host non affidabile
hub.untrustedHost.description=La connessione all'Hub è stata bloccata per la tua sicurezza. Se ritieni che l'host Hub sia sicuro, contatta l'amministratore dell'Hub o riprova.
### Requires Account Initialization
hub.requireAccountInit.message=Azione richiesta
hub.requireAccountInit.description.0=Per procedere, completa i passaggi richiesti nel tuo
@@ -305,6 +314,7 @@ preferences.general.debugDirectory=Rivela i file di registro
preferences.general.autoStart=Avvia Cryptomator all'avvio del sistema
preferences.general.keychainBackend=Memorizza le password con
preferences.general.quickAccessService=Aggiungi cassaforte sbloccata all'area di accesso rapido
preferences.general.resetTrustedHosts=Azzera gli host affidabili
## Interface
preferences.interface=Interfaccia
preferences.interface.theme=Aspetto
@@ -716,4 +726,4 @@ eventView.entry.inUse.ignoreLock=Ignora lo stato di utilizzo
## FileIsInUse Notification
notification.inUse.message=Il file è in uso su un altro dispositivo
notification.inUse.description=Il file è aperto da %s su %s. Chiedigli di chiudere il file e permettere che la sincronizzazione termini. È possibile ignorare lo stato ed aprirlo ora, ma questo può causare conflitti o la sovrascrittura delle modifiche più recenti.
notification.inUse.action=Ignora lo Stato di Utilizzo
notification.inUse.action=Ignora lo Stato di Utilizzo

View File

@@ -154,6 +154,8 @@ unlock.error.title=ロック解除 "%s" に失敗しました。
hub.noKeychain.message=デバイス キーにアクセスできません
hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。
hub.noKeychain.openBtn=環境設定を開く
### Check Host Authenticity
hub.checkHostTrust.trustBtn=信頼する
### Waiting
hub.auth.message=認証を待機中…
hub.auth.description=ログイン ページに自動的にリダイレクトされます。
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=このデバイスは既に
### Unauthorized
hub.unauthorized.message=アクセスが拒否されました
hub.unauthorized.description=この金庫を開く権限がありません。金庫の所有者からアクセス許可を貰って下さい。
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=アクションが必要です
hub.requireAccountInit.description.0=続行するには以下のサイトで必要な手順を完了してください
@@ -632,4 +635,4 @@ eventView.entry.inUse.copyUserAndDevice=ロックしているユーザーとデ
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,12 @@ unlock.error.title="%s" 잠금 해제 실패
hub.noKeychain.message=기기 키에 액세스할 수 없습니다
hub.noKeychain.description=Hub Vaults를 잠금 해제하려면 키체인을 사용하여 보호되는 기기 키가 필요합니다. 계속하려면 "%s"을(를) 활성화하고 기본 설정에서 키체인을 선택하십시오.
hub.noKeychain.openBtn=설정 열기
### Check Host Authenticity
hub.checkHostTrust.message.check=구성 확인 중…
hub.checkHostTrust.message.ask=이 호스트를 신뢰하겠습니까?
hub.checkHostTrust.message.ask.plural=이 호스트를 신뢰하겠습니까?
hub.checkHostTrust.trustBtn=신뢰하기
hub.checkHostTrust.denyBtn=거부
### Waiting
hub.auth.message=인증 대기 중…
hub.auth.description=자동으로 로그인 페이지로 리다이렉트 될 것입니다.
@@ -192,6 +198,9 @@ hub.archived.description=이 Vault는 아카이브되어 더 이상 접근할
### Unauthorized
hub.unauthorized.message=액세스 거부됨
hub.unauthorized.description=해당 Vault에 접근하도록 허가되지 않았습니다. Vault의 소유자에게 권한을 요청하세요.
### Untrusted Host
hub.untrustedHost.message=호스트를 신뢰할 수 없음
hub.untrustedHost.description=보안상의 이유로 Hub 연결이 차단되었습니다. Hub 호스트가 안전하다고 판단되시면 Hub 관리자에게 문의하거나 다시 시도해 주세요.
### Requires Account Initialization
hub.requireAccountInit.message=조치가 필요함
hub.requireAccountInit.description.0=진행하려면 필요한 조치를 완료하십시오:
@@ -199,7 +208,7 @@ hub.requireAccountInit.description.1=Hub 사용자 프로필
hub.requireAccountInit.description.2=.
### License Exceeded
hub.invalidLicense.message=Hub 라이선스가 잘못되었습니다.
hub.invalidLicense.description=Cryptomator Hub 인스턴스에 잘못된 라이선스가 있습니다. 라이선스를 업그레이드하거나 갱신하려면 허브 관리자에게 알리십시오.
hub.invalidLicense.description=Cryptomator Hub 인스턴스에 잘못된 라이선스가 있습니다. 라이선스를 업그레이드하거나 갱신하려면 Hub 관리자에게 알리십시오.
# Lock
## Force
@@ -305,6 +314,7 @@ preferences.general.debugDirectory=로그 파일 표시
preferences.general.autoStart=시스템 시작 시 Cryptomator 실행
preferences.general.keychainBackend=다음 경로에 비밀번호 저장
preferences.general.quickAccessService=열린 Vault를 빠른 접근 위치에 추가하기
preferences.general.resetTrustedHosts=신뢰하는 호스트 목록 초기화
## Interface
preferences.interface=인터페이스
preferences.interface.theme=테마
@@ -581,7 +591,7 @@ recover.recoverMasterkey.title=마스터키 복구하기
## OnBoarding
recover.onBoarding.chooseMethod=복구 방법을 선택하세요:
recover.onBoarding.useRecoveryKey=복구키 사용하기
recover.onBoarding.useRecoveryKey=복구 키 사용하기
recover.onBoarding.usePassword=비밀번호 사용하기
recover.onBoarding.intro=아래 사항을 정확히 읽고 확인하세요:
recover.onBoarding.pleaseConfirm=진행하기 전, 다음 사항을 확인해 주십시오:
@@ -716,4 +726,4 @@ eventView.entry.inUse.ignoreLock=사용 여부 상태 무시
## FileIsInUse Notification
notification.inUse.message=다른 기기에서 파일 사용 중
notification.inUse.description=해당 파일은 %s이(가) %s의 컴퓨터에서 열어 놓은 상태입니다. 파일을 닫고 동기화가 완료될 때까지 기다리도록 요청하세요. 상태를 무시하고 지금 파일을 열 수도 있지만, 이렇게 하면 충돌이 발생하거나 최신 변경 사항이 덮어쓰여질 수 있습니다.
notification.inUse.action=사용 여부 상태 무시
notification.inUse.action=사용 여부 상태 무시

View File

@@ -0,0 +1,326 @@
# Locale Specific CSS files such as CJK, RTL,...
# Generics
## Button
generic.button.apply=Taikyti
generic.button.back=Atgal
generic.button.cancel=Atsisakyti
generic.button.change=Keisti
generic.button.choose=Pasirinkti…
generic.button.close=Užverti
generic.button.copy=Kopijuoti
generic.button.copied=Nukopijuota!
generic.button.done=Atlikta
generic.button.previous=Ankstesnis
generic.button.next=Kitas
generic.button.print=Spausdinti
generic.button.remove=Šalinti
## Vault state
vault.state.error=Klaida
# Error
error.message=Įvyko klaida
error.technicalDetails=Išsamiau:
# Defaults
defaults.vault.vaultName=Slėptuvė
# Tray Menu
traymenu.vault.unlock=Atrakinti
traymenu.vault.lock=Užrakinti
# Add Vault Wizard
## New
### Name
### Location
addvaultwizard.new.locationPrompt=
addvaultwizard.new.directoryPickerButton=Pasirinkti…
addvaultwizard.new.invalidName=Netinkamas slėptuvės pavadinimas
addvaultwizard.new.validName=Tinkamas slėptuvės pavadinimas
addvaultwizard.new.validCharacters.message=Slėptuvės pavadinime gali būti šie simboliai:
addvaultwizard.new.validCharacters.chars=Raidės (pvz., a, ж ar 수)
addvaultwizard.new.validCharacters.numbers=Skaitmenys
addvaultwizard.new.validCharacters.dashes=Brūkšnelis (%s) ar pabraukimo brūkšnys (%s)
### Expert Settings
addvaultwizard.new.expertSettings.shorteningThreshold.tooltip=Atverkite dokumentaciją norėdami sužinoti daugiau.
### Password
addvaultwizard.new.createVaultBtn=Sukurti slėptuvę
addvaultwizard.new.generateRecoveryKeyChoice=Be slaptažodžio nebegalėsite pasiekti savo duomenų. Ar norite sukurti atkūrimo raktą tam atvejui, jei prarasite slaptažodį?
addvaultwizard.new.generateRecoveryKeyChoice.yes=Taip, geriau apsidrausti nei gailėtis
addvaultwizard.new.generateRecoveryKeyChoice.no=Ne, ačiū, aš neprarasiu slaptažodžio
### Information
addvault.new.readme.storageLocation.fileName=SVARBU.rtf
addvault.new.readme.accessLocation.1=🔐️ ŠIFRUOTAS TOMAS 🔐️
## Existing
addvaultwizard.existing.chooseBtn=Pasirinkti…
## Success
# Remove Vault
removeVault.title=Šalinti „%s“
removeVault.message=Šalinti slėptuvę?
# Change Password
changepassword.title=Keisti slaptažodį
# Forget Password
# Unlock
unlock.title=Atrakinti „%s“
unlock.unlockBtn=Atrakinti
## Select
## Success
## Failure
unlock.error.restartRequired.message=Nepavyko atrakinti slėptuvės
unlock.error.restartRequired.description=Pakeiskite slėptuvės parinktyse tomo tipą arba paleiskite Cryptomator iš naujo.
## Hub
### Check Host Authenticity
hub.checkHostTrust.message.check=Tikrinama konfigūracija…
### Waiting
hub.auth.message=Laukiama tapatybės nustatymo…
### Receive Key
### Register Device
hub.register.message=Naujas įrenginys
### Register Device Legacy
### Registration Success
hub.registerSuccess.unlockBtn=Atrakinti
### Registration Failed
### Archived
hub.archived.message=Slėptuvė archyvuota
hub.archived.description=Ši slėptuvė archyvuota ir daugiau nebepasiekiama. Susisiekite su slėptuvės savininku.
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
# Lock
## Force
## Failure
# Migration
## Start
migration.start.confirm=Аš perskaičiau ir supratau aukščiau pateiktą informaciją
## Run
## Success
migration.success.unlockNow=Atrakinti dabar
## Missing file system capabilities
migration.error.missingFileSystemCapabilities.title=Nepalaikoma failų sistema
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=Failų sistema nepalaiko ilgų failo pavadinimų.
migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=Failų sistema nepalaiko ilgų kelių.
## Impossible
# Health Check
## Start
health.title=„%s“ būsenos patikrinimas
health.intro.header=Būsenos patikrinimas
health.intro.text=Būsenos patikrinimas tai patikrinimų, skirtų aptikti ir galimai išspręsti jūsų slėptuvės vidinėje struktūroje esančias problemas, rinkinys. Turėkite omenyje:
health.intro.remarkSync=Užtikrinkite, kad visi įrenginiai būtų visiškai sinchronizuoti, tai išsprendžia daugumą problemų.
health.intro.remarkFix=Ne visos problemos gali būti išspręstos.
health.intro.remarkBackup=Jei duomenys yra sugadinti, gali padėti tik atsarginė kopija.
health.intro.affirmation=Аš perskaičiau ir supratau aukščiau pateiktą informaciją
## Start Failure
health.fail.parseError=Nagrinėjant slėptuvės konfigūraciją įvyko klaida.
health.fail.moreInfo=Daugiau informacijos
## Check Selection
## Detail view
## Result view
health.result.severityFilter.info=Informacija
health.result.severityFilter.warn=Įspėjimas
## Fix Application
# Preferences
## General
## Interface
preferences.interface=Sąsaja
preferences.interface.theme=Išvaizda ir turinys
preferences.interface.language=Kalba (reikalauja paleidimo iš naujo)
preferences.interface.language.auto=Sistemos numatytoji
preferences.interface.interfaceOrientation=Sąsajos orientacija
preferences.interface.interfaceOrientation.ltr=Iš kairės į dešinę
preferences.interface.interfaceOrientation.rtl=Iš dešinės į kairę
preferences.interface.showTrayIcon=Rodyti dėklo piktogramą (reikalauja paleidimo iš naujo)
## Volume
preferences.volume.tcp.port=Numatytasis TCP prievadas
## Updates
preferences.updates.currentVersion=Dabartinė versija: %s
preferences.updates.checkNowBtn=Tikrinti dabar
preferences.updates.lastUpdateCheck.never=niekada
preferences.updates.lastUpdateCheck.recently=neseniai
preferences.updates.upToDate=Cryptomator yra naujausios versijos.
## Contribution
preferences.contribute.removeCert.tooltip=Šalinti liudijimą
### Remove License Key Dialog
removeCert.title=Šalinti liudijimą
#<-- Add entries for donations and code/translation/documentation contribution -->
## About
preferences.about=Apie
preferences.about.thirdPartyLicenses=Trečiųjų šalių licencijos
# Vault Statistics
stats.title=%s statistika
## Read
## Write
## Accesses
# Main Window
## Vault List
main.vaultlist=Slėptuvės
main.vaultlist.listEntry=Slėptuvė %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Spustelėkite čia norėdami pridėti slėptuvę
main.vaultlist.contextMenu.remove=Šalinti…
main.vaultlist.contextMenu.lock=Užrakinti
main.vaultlist.contextMenu.unlock=Atrakinti…
main.vaultlist.contextMenu.unlockNow=Atrakinti dabar
main.vaultlist.contextMenu.vaultoptions=Rodyti slėptuvės parinktis
main.vaultlist.contextMenu.share=Bendrinti…
main.vaultlist.addVaultBtn.menuItemNew=Sukurti naują slėptuvę…
main.vaultlist.addVaultBtn.menuItemExisting=Atverti esamą slėptuvę…
main.vaultlist.addVaultButton.tooltip=Pridėti slėptuvę
main.vaultlist.showPreferencesButton.tooltip=Rodyti nuostatas
##Notification
main.notification.updateAvailable=Prieinamas atnaujinimas.
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Dėkojame, kad failų apsaugai pasirinkote Cryptomator. Jei prireiks pagalbos, peržiūrėkite darbo pradžios gaires:
### Locked
main.vaultDetail.lockedStatus=UŽRAKINTA
main.vaultDetail.unlockBtn=Atrakinti…
main.vaultDetail.unlockNowBtn=Atrakinti dabar
main.vaultDetail.optionsBtn=Slėptuvės parinktys
### Unlocked
main.vaultDetail.unlockedStatus=ATRAKINTA
main.vaultDetail.accessLocation=Jūsų slėptuvės turinys yra pasiekiamas štai čia:
main.vaultDetail.copyUri=Kopijuoti URI
main.vaultDetail.lockBtn=Užrakinti
main.vaultDetail.bytesPerSecondRead=Skaitymas:
main.vaultDetail.bytesPerSecondWritten=Rašymas:
main.vaultDetail.throughput.idle=neveiklus
main.vaultDetail.stats=Slėptuvės statistika
main.vaultDetail.encryptedPathsCopied=Keliai nukopijuoti į iškarpinę!
### Missing
main.vaultDetail.missing.remove=Šalinti iš slėptuvių sąrašo…
### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=Trūksta slėptuvės konfigūracijos.
main.vaultDetail.missingVaultConfig.restore=Atkurti slėptuvės konfigūraciją
### Needs Migration
main.vaultDetail.migrateButton=Naujinti slėptuvę
### Error
main.vaultDetail.error.info=Įkeliant slėptuvę iš disko įvyko klaida.
main.vaultDetail.error.reload=Įkelti iš naujo
main.vaultDetail.error.windowTitle=Klaida įkeliant slėptuvę
# Wrong File Alert
wrongFileAlert.title=Kaip šifruoti failus
wrongFileAlert.message=Ar mėginote šifruoti šiuos failus?
# Vault Options
## General
vaultOptions.general.vaultName=Slėptuvės pavadinimas
vaultOptions.general.actionAfterUnlock=Po sėkmingo atrakinimo
vaultOptions.general.actionAfterUnlock.ignore=Nieko nedaryti
vaultOptions.general.actionAfterUnlock.ask=Klausti
## Mount
vaultOptions.mount=Prijungimas
vaultOptions.mount.customMountFlags=Tinkintos prijungimo vėliavėlės
vaultOptions.mount.mountPoint=Prijungimo taškas
vaultOptions.mount.mountPoint.auto=Automatiškai parinkti tinkamą vietą
vaultOptions.mount.mountPoint.custom=Naudoti pasirinktą katalogą
vaultOptions.mount.mountPoint.directoryPickerButton=Pasirinkti…
vaultOptions.mount.mountPoint.directoryPickerTitle=Parinkti katalogą
vaultOptions.mount.volume.tcp.port=TCP prievadas
vaultOptions.mount.volume.type=Tomo tipas
## Master Key
vaultOptions.masterkey=Slaptažodis
vaultOptions.masterkey.changePasswordBtn=Keisti slaptažodį
vaultOptions.masterkey.recoverPasswordBtn=Atstatyti slaptažodį
## Hub
# Recovery Key
## Display Recovery Key
## Reset Password
### Enter Recovery Key
recoveryKey.recover.title=Atstatyti slaptažodį
### Reset Password
recoveryKey.recover.resetBtn=Atstatyti
### Recovery Key Password Reset Success
### Recovery Key Vault Config Reset Success
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
##Vault Already Exists - Dialog
##Invalid Selection - Dialog
## Contact Hub Vault Owner - Dialog
##Dialog Title
## OnBoarding
recover.onBoarding.intro.ensure=Visi failai yra visiškai sinchronizuoti.
###Vault Config Missing
###Masterkey Missing
## Expert Settings
# Convert Vault
# New Password
newPassword.passwordsMatch=Slaptažodžiai sutampa!
newPassword.passwordsDoNotMatch=Slaptažodžiai nesutampa
passwordStrength.messageLabel.tooShort=Naudokite bent %d simbolius
passwordStrength.messageLabel.0=Labai silpnas
passwordStrength.messageLabel.1=Silpnas
passwordStrength.messageLabel.2=Vidutinis
passwordStrength.messageLabel.3=Stiprus
passwordStrength.messageLabel.4=Labai stiprus
# Quit
quit.title=Išjungti programą
quit.message=Yra neužrakintų slėptuvių
quit.lockAndQuitBtn=Užrakinti ir išjungti
# Forced Quit
quit.forced.message=Kai kurių slėptuvių nepavyko užrakinti
# Update Reminder
updateReminder.message=Tikrinti, ar yra atnaujinimų?
updateReminder.notNow=Ne dabar
updateReminder.yesOnce=Taip, vieną kartą
updateReminder.yesAutomatically=Taip, automatiškai
#Dokany Support End
#Retry If Readonly
# Share Vault
shareVault.message=Ar norėtumėte bendrinti slėptuvę su kitais?
shareVault.docsTooltip=Norėdami daugiau sužinoti apie slėptuvių bendrinimą atverkite dokumentaciją.
# Decrypt File Names
decryptNames.filePicker.extensionDescription=Cryptomator šifruotas failas
decryptNames.column.encrypted=Šifruotas
decryptNames.column.decrypted=Iššifruotas
decryptNames.dropZone.error.noDirIdBackup=Pasirinktų failų kataloge nėra dirId.c9r failo
decryptNames.dropZone.error.generic=Nepavyko iššifruoti failų pavadinimų
# Event View
## event list entries
eventView.entry.conflictResolved.showDecrypted=Rodyti iššifruotą failą
eventView.entry.decryptionFailed.showEncrypted=Rodyti šifruotą failą
eventView.entry.inUse.showDecrypted=Rodyti iššifruotą failą
eventView.entry.inUse.showEncrypted=Rodyti šifruotą failą
# Notifications
## FileIsInUse Notification
notification.inUse.message=Failas yra naudojamas kitame įrenginyje

View File

@@ -161,6 +161,8 @@ unlock.error.title="%s" atslēgšana neizdevās
hub.noKeychain.message=Nebija iespējams piekļūt ierīces atslēgai
hub.noKeychain.description=Lai atslēgtu Hub glabātavas, ir nepieciešama ierīces atslēga, kas tiek droši uzglabāta atslēgu saišķī. Lai tuprinātu, iestatījumos jāiespējo "%s" un jāatlasa atslēgu saišķis.
hub.noKeychain.openBtn=Atvērt iestatījumus
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Uzticēties
### Waiting
hub.auth.message=Gaida autentificēšanu…
hub.auth.description=Vajadzētu notikt automātiskai pārvirzīšanai uz pieteikšanās lapu.
@@ -192,6 +194,7 @@ hub.archived.description=Glabātava tika arhivēta un vairs nav pieejama. Lūgum
### Unauthorized
hub.unauthorized.message=Piekļuve atteikta
hub.unauthorized.description=Nav pilnvaras atvērt šo glabātavu. Jāsazinās ar glabātavas īpašnieku, lai pieprasītu piekļuvi.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Nepieciešama darbība
hub.requireAccountInit.description.0=Lai turpinātu, lūgums pabeigt nepieciešamos soļus savā
@@ -715,4 +718,4 @@ eventView.entry.inUse.ignoreLock=Neņemt vēra izmantošanas stāvokli
## FileIsInUse Notification
notification.inUse.message=Datne tiek izmantota citā ierīcē
notification.inUse.description=Datni atvēra %s ierīcē %s. Jāvaicā aizvērt datni un ļaut pabeigties sinhronizēšanai. Stāvokli tagad var neņemt vērā, lai atvērtu datni, bet tas var radīt nesaderības vai pārrakstīt jaunākas izmaiņas.
notification.inUse.action=Neņemt vēra izmantošanas stāvokli
notification.inUse.action=Neņemt vēra izmantošanas stāvokli

View File

@@ -77,6 +77,7 @@ unlock.unlockBtn=Отклучи
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -86,6 +87,7 @@ hub.registerSuccess.unlockBtn=Отклучи
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -206,4 +208,4 @@ vaultOptions.mount.mountPoint.directoryPickerButton=Избор…
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -32,6 +32,7 @@
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -40,6 +41,7 @@
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -154,4 +156,4 @@
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -159,6 +159,8 @@ unlock.error.title=Lås opp "%s" mislyktes
hub.noKeychain.message=Får ikke tilgang til enhetsnøkkel
hub.noKeychain.description=For å låse opp Hub-hvelv er det nødvendig med en enhetsnøkkel som er sikret med en nøkkelring. For å fortsette, aktiver "%s" og velg en nøkkelring i innstillingene.
hub.noKeychain.openBtn=Åpne innstillinger
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Stol på
### Waiting
hub.auth.message=Venter på autentisering…
hub.auth.description=Du burde bli automatisk videresendt til innloggingssiden.
@@ -188,6 +190,7 @@ hub.registerFailed.description.deviceAlreadyExists=Denne enheten er allerede reg
hub.archived.message=Hvelvet er arkivert
### Unauthorized
hub.unauthorized.message=Ingen tilgang
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Påkrevd handling
hub.requireAccountInit.description.0=For å fortsette, fullfør trinnene som kreves i din
@@ -613,4 +616,4 @@ shareVault.hub.openHub=Åpne Cryptomator hub
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,12 @@ unlock.error.title=Ontgrendelen "%s" mislukt
hub.noKeychain.message=Geen toegang tot de apparaatsleutel
hub.noKeychain.description=Om Hub kluizen te ontgrendelen is een apparaatsleutel vereist, die met een sleutelhanger wordt beveiligd. Om verder te gaan, schakel "%s" in en selecteer een sleutelhanger in de voorkeursinstellingen.
hub.noKeychain.openBtn=Open Voorkeuren
### Check Host Authenticity
hub.checkHostTrust.message.check=Configuratie controleren…
hub.checkHostTrust.message.ask=Deze hosts vertrouwen?
hub.checkHostTrust.message.ask.plural=Deze hosts vertrouwen?
hub.checkHostTrust.trustBtn=Vertrouwen
hub.checkHostTrust.denyBtn=Weigeren
### Waiting
hub.auth.message=Wachten op authenticatie…
hub.auth.description=U zal automatisch worden doorgestuurd naar de inlogpagina.
@@ -192,6 +198,9 @@ hub.archived.description=Deze kluis is gearchiveerd en is niet meer toegankelijk
### Unauthorized
hub.unauthorized.message=Toegang geweigerd
hub.unauthorized.description=U bent niet geautoriseerd om deze kluis te openen. Neem contact op met de eigenaar van de kluis om toegang aan te vragen.
### Untrusted Host
hub.untrustedHost.message=Host niet vertrouwd
hub.untrustedHost.description=Verbinding met Hub werd geblokkeerd voor je veiligheid. Als je gelooft dat de Hub host veilig is, neem dan contact op met je Hub administrator of probeer het opnieuw.
### Requires Account Initialization
hub.requireAccountInit.message=Actie vereist
hub.requireAccountInit.description.0=Om verder te gaan, gelieve de stappen te voltooien in uw
@@ -305,6 +314,7 @@ preferences.general.debugDirectory=Logboekbestanden bekijken
preferences.general.autoStart=Start Cryptomator als het systeem opstart
preferences.general.keychainBackend=Bewaar wachtwoorden met
preferences.general.quickAccessService=Voeg ontgrendelde kluizen toe aan snelle toegang
preferences.general.resetTrustedHosts=Vertrouwde hosts vrijgegeven
## Interface
preferences.interface=Uiterlijk
preferences.interface.theme=Uiterlijk
@@ -716,4 +726,4 @@ eventView.entry.inUse.ignoreLock=Gebruiksstatus negeren
## FileIsInUse Notification
notification.inUse.message=Bestand is op een ander apparaat in gebruik
notification.inUse.description=Het bestand is geopend door %s op %s. Vraag ze om het bestand te sluiten en laat de synchronisatie eindigen. Je kunt de status negeren om het nu te openen, maar dit kan conflicten veroorzaken of nieuwere wijzigingen overschrijven.
notification.inUse.action=Gebruiksstatus negeren
notification.inUse.action=Gebruiksstatus negeren

View File

@@ -95,6 +95,7 @@ unlock.success.rememberChoice=Hugs valet - ikkje vis dette igjen
unlock.success.revealBtn=Gjer eininga synleg
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -104,6 +105,7 @@ hub.registerSuccess.unlockBtn=Låse opp
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -315,4 +317,4 @@ quit.lockAndQuitBtn=Lås og avslutt
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -32,6 +32,7 @@
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -40,6 +41,7 @@
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -154,4 +156,4 @@
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -138,6 +138,8 @@ unlock.error.restartRequired.message=ਵਾਲਟ ਨੂੰ ਅਣ-ਲਾਕ ਕ
unlock.error.title="%s" ਨੂੰ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ
## Hub
hub.noKeychain.openBtn=ਪਸੰਦਾਂ ਨੂੰ ਖੋਲ੍ਹੋ
### Check Host Authenticity
hub.checkHostTrust.trustBtn=ਭਰੋਸਾ ਕਰੋ
### Waiting
hub.auth.message=ਪਰਮਾਣਕਿਤਾ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…
hub.auth.description=ਤੁਹਾਨੂੰ ਆਪਣੇ-ਆਪ ਲਾਗਇਨ ਸਫ਼ੇ ਲਈ ਰੀ-ਡਿਰੈਕਟ ਕੀਤਾ ਜਾਵੇਗਾ।
@@ -157,6 +159,7 @@ hub.registerFailed.message=ਡਿਵਾਈਸ ਰਜਿਸਟਰ ਕਰਨਾ
### Archived
### Unauthorized
hub.unauthorized.message=ਪਹੁੰਚ ਤੋਂ ਇਨਾਕਰ
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=ਕਾਰਵਾਈ ਦੀ ਲੋੜ ਹੈ
hub.requireAccountInit.description.1=ਹੱਬ ਵਰਤੋਂਕਾਰ ਪਰੋਫਾਇਲ
@@ -583,4 +586,4 @@ eventView.entry.inUse.showEncrypted=ਇੰਕ੍ਰਿਪਟ ਕੀਤੀ ਫ਼ਾ
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,8 @@ unlock.error.title=Błąd odblokowywania "%s"
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.openBtn=Otwórz ustawienia
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Zaufany
### Waiting
hub.auth.message=Oczekiwanie na autoryzację…
hub.auth.description=Przekierowanie na stronę logowania nastąpi automatycznie.
@@ -192,6 +194,7 @@ hub.archived.description=Ten sejf został zarchiwizowany i nie jest już dostęp
### Unauthorized
hub.unauthorized.message=Brak dostępu
hub.unauthorized.description=Nie masz uprawnień do otwierania tego sejfu. Skontaktuj się z właścicielem sejfu i poproś o dostęp.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Wymagane działanie
hub.requireAccountInit.description.0=Aby kontynuować, wykonaj wymagane kroki w Twoim
@@ -711,4 +714,4 @@ eventView.entry.inUse.copyUserAndDevice=Kopiowanie blokady użytkownika i nazwy
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,12 @@ unlock.error.title=Desbloqueio "%s" falhou
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.openBtn=Abrir preferências
### Check Host Authenticity
hub.checkHostTrust.message.check=Verificando a configuração…
hub.checkHostTrust.message.ask=Confiar neste anfitrião?
hub.checkHostTrust.message.ask.plural=Confiar nestes anfitriões?
hub.checkHostTrust.trustBtn=Confiar
hub.checkHostTrust.denyBtn=Negar
### Waiting
hub.auth.message=A aguardar autenticação…
hub.auth.description=Vai ser redirecionado automaticamente para a página de início de sessão.
@@ -192,6 +198,9 @@ hub.archived.description=Este cofre foi arquivado e não está mais acessível.
### Unauthorized
hub.unauthorized.message=Acesso negado
hub.unauthorized.description=Não está autorizado a abrir este cofre. Contacte o proprietário do cofre para solicitar o acesso.
### Untrusted Host
hub.untrustedHost.message=Host não fiável
hub.untrustedHost.description=A ligação ao Hub foi bloqueada por motivos de segurança. Se acredita que o host do Hub é seguro, contacte o administrador do Hub ou tente novamente.
### Requires Account Initialization
hub.requireAccountInit.message=Ação requerida
hub.requireAccountInit.description.0=Para continuar, conclua as etapas necessárias no seu
@@ -305,6 +314,7 @@ preferences.general.debugDirectory=Mostrar ficheiros de registo
preferences.general.autoStart=Iniciar o Cryptomator no início do sistema
preferences.general.keychainBackend=Guardar palavras-passe com
preferences.general.quickAccessService=Adicionar cofres desbloqueados à área de acesso rápido
preferences.general.resetTrustedHosts=Redefinir hosts fidedignos
## Interface
preferences.interface=Interface
preferences.interface.theme=Aspecto e Ambiente
@@ -716,4 +726,4 @@ eventView.entry.inUse.ignoreLock=Ignorar estado de utilização
## FileIsInUse Notification
notification.inUse.message=O ficheiro está em utilização noutro dispositivo
notification.inUse.description=O ficheiro está aberto por %s em %s. Peça-lhes que fechem o ficheiro e deixem a sincronização terminar. Pode ignorar o estado para o abrir agora, mas isso pode causar conflitos ou sobrescrever alterações mais recentes.
notification.inUse.action=Ignorar estado de utilização
notification.inUse.action=Ignorar estado de utilização

View File

@@ -161,6 +161,12 @@ unlock.error.title=Falha ao desbloquear "%s"
hub.noKeychain.message=Não foi possível acessar a chave do dispositivo
hub.noKeychain.description=Para desbloquear os cofres do Hub, você precisa de uma chave do dispositivo que fica protegida usando um chaveiro. Para continuar, ative "%s" e escolha um chaveiro nas preferências.
hub.noKeychain.openBtn=Abrir preferências
### Check Host Authenticity
hub.checkHostTrust.message.check=Verificando configuração…
hub.checkHostTrust.message.ask=Confiar neste host?
hub.checkHostTrust.message.ask.plural=Confiar nestes hosts?
hub.checkHostTrust.trustBtn=Confio
hub.checkHostTrust.denyBtn=Recusar
### Waiting
hub.auth.message=Aguardando autenticação…
hub.auth.description=Você será redirecionado automaticamente para a página de login.
@@ -192,6 +198,9 @@ hub.archived.description=Este cofre foi arquivo e está inacessível. Contate o
### Unauthorized
hub.unauthorized.message=Acesso negado
hub.unauthorized.description=Você não tem autorização para abrir este cofre. Entre em contato com o proprietário dele para solicitar acesso.
### Untrusted Host
hub.untrustedHost.message=Host não confiável
hub.untrustedHost.description=A conexão com o Hub foi bloqueada para sua segurança. Caso acredite que o host do Hub está seguro, entre em contato com seu administrador do Hub ou tente novamente.
### Requires Account Initialization
hub.requireAccountInit.message=Ação necessária
hub.requireAccountInit.description.0=Para prosseguir, complete as etapas obrigatórias no seu
@@ -305,6 +314,7 @@ preferences.general.debugDirectory=Mostrar arquivos de registro
preferences.general.autoStart=Iniciar o Cryptomator com o sistema
preferences.general.keychainBackend=Armazenar senhas com
preferences.general.quickAccessService=Adicione cofres desbloqueados à área de acesso rápido
preferences.general.resetTrustedHosts=Redefinir hosts confiáveis
## Interface
preferences.interface=Interface
preferences.interface.theme=Aparência
@@ -716,4 +726,4 @@ eventView.entry.inUse.ignoreLock=Ignorar status de uso
## FileIsInUse Notification
notification.inUse.message=O arquivo está sendo usado em outro dispositivo
notification.inUse.description=O arquivo é aberto por %s em %s. Solicite a eles para fechá-lo e deixar a sincronização finalizar. Você pode ignorar o status para abri-lo agora, mas isso pode causar conflitos ou substituir novas alterações.
notification.inUse.action=Ignorar status de uso
notification.inUse.action=Ignorar status de uso

View File

@@ -154,6 +154,8 @@ unlock.error.title=Deblocarea "%s" a eșuat
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.openBtn=Deschideţi preferinţele
### Check Host Authenticity
hub.checkHostTrust.trustBtn=De încredere
### Waiting
hub.auth.message=Se așteaptă autentificarea…
hub.auth.description=Ar trebui să fiți redirecționat automat către pagina de autentificare.
@@ -182,6 +184,7 @@ hub.registerFailed.description.deviceAlreadyExists=Acest dispozitiv este deja î
### Archived
### Unauthorized
hub.unauthorized.message=Acces respins
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Acțiune necesară
hub.requireAccountInit.description.0=Pentru a continua, vă rugăm să finalizaţi paşii necesari în
@@ -604,4 +607,4 @@ shareVault.hub.openHub=Deschide Cryptomator Hub
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,12 @@ unlock.error.title=Не удалось разблокировать "%s"
hub.noKeychain.message=Нет доступа к ключу устройства
hub.noKeychain.description=Для разблокировки хаб-хранилища необходим ключ устройства, который защищён с помощью связки ключей. Чтобы продолжить, включите "%s" и выберите связку ключей в настройках.
hub.noKeychain.openBtn=Открыть настройки
### Check Host Authenticity
hub.checkHostTrust.message.check=Проверка конфигурации…
hub.checkHostTrust.message.ask=Доверять этому хосту?
hub.checkHostTrust.message.ask.plural=Доверять этим хостам?
hub.checkHostTrust.trustBtn=Доверять
hub.checkHostTrust.denyBtn=Отклонить
### Waiting
hub.auth.message=Ожидание аутентификации…
hub.auth.description=Вы должны быть автоматически перенаправлены на страницу входа.
@@ -192,6 +198,9 @@ hub.archived.description=Это хранилище было заархивиро
### Unauthorized
hub.unauthorized.message=Нет доступа
hub.unauthorized.description=Вы не авторизованы для открытия этого хранилища. Свяжитесь с владельцем хранилища, чтобы запросить доступ.
### Untrusted Host
hub.untrustedHost.message=Хост не доверенный
hub.untrustedHost.description=Подключение к хабу заблокировано из соображений безопасности. Если вы считаете, что хост безопасен, обратитесь к администратору хаба или повторите попытку.
### Requires Account Initialization
hub.requireAccountInit.message=Требуется действие
hub.requireAccountInit.description.0=Для продолжения выполните необходимые шаги в
@@ -305,6 +314,7 @@ preferences.general.debugDirectory=Показать файлы журнала
preferences.general.autoStart=Запускать Cryptomator при старте системы
preferences.general.keychainBackend=Хранение паролей
preferences.general.quickAccessService=Добавлять открытые хранилища в область быстрого доступа
preferences.general.resetTrustedHosts=Сбросить доверенные хосты
## Interface
preferences.interface=Интерфейс
preferences.interface.theme=Тема
@@ -716,4 +726,4 @@ eventView.entry.inUse.ignoreLock=Игнорировать статус испо
## FileIsInUse Notification
notification.inUse.message=Файл используется на другом устройстве
notification.inUse.description=Файл открыт %s на %s. Попросите закрыть файл и завершить синхронизацию. Вы можете проигнорировать статус и открыть его, но есть риск конфликтов или перезаписи новых изменений.
notification.inUse.action=Игнорировать статус использования
notification.inUse.action=Игнорировать статус использования

View File

@@ -14,6 +14,7 @@ generic.button.next=ඊළඟ
generic.button.print=මුද්‍රණය කරන්න
## Vault state
vault.state.error=දෝෂය
# Error
error.message=දෝෂය: %s
@@ -48,15 +49,18 @@ unlock.unlockBtn=අගුළුහරින්න
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
hub.register.registerBtn=ලියාපදිංචි වන්න
### Register Device Legacy
### Registration Success
hub.registerSuccess.unlockBtn=අගුළුහරින්න
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -171,4 +175,4 @@ hub.registerSuccess.unlockBtn=අගුළුහරින්න
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -159,6 +159,12 @@ unlock.error.title=Odomknutie "%s" zlyhalo
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.openBtn=Otvoriť predvoľby
### Check Host Authenticity
hub.checkHostTrust.message.check=Kontrolovanie konfigurácie…
hub.checkHostTrust.message.ask=Veríte tomuto hostovi?
hub.checkHostTrust.message.ask.plural=Veríte týmto hostom?
hub.checkHostTrust.trustBtn=Veriť
hub.checkHostTrust.denyBtn=Odmietnuť
### Waiting
hub.auth.message=Čakanie na autentifikáciu…
hub.auth.description=Môžete byť automaticky presmerovaný na prihlasovaciu stránku.
@@ -184,6 +190,8 @@ hub.archived.description=Tento trezor bol archivovaný a nie je viac dostupný.
### Unauthorized
hub.unauthorized.message=Prístup zamietnutý
hub.unauthorized.description=Nie ste autorizovaný na otvorenie tohto trezora. Kontaktujte vlastníka trezora pre vyžiadanie prístupu.
### Untrusted Host
hub.untrustedHost.message=Nedôveryhodný host
### Requires Account Initialization
hub.requireAccountInit.message=Vyžadovaná akcia
hub.requireAccountInit.description.0=Pre pokračovanie vyplňte potrebné kroky vo vašom
@@ -297,6 +305,7 @@ preferences.general.debugDirectory=Ukázať súbory logov
preferences.general.autoStart=Spustiť Cryptomator pri štarte systému
preferences.general.keychainBackend=Uložiť heslá v
preferences.general.quickAccessService=Pridať odomknuté trezory na plochu rýchleho prístupu
preferences.general.resetTrustedHosts=Zrušiť dôveryhodné hosty
## Interface
preferences.interface=Rozhranie
preferences.interface.theme=Vzhľad a pocit
@@ -665,4 +674,4 @@ eventView.entry.inUse.copyUserAndDevice=Kopírovať zamykaného užívateľa a m
# Notifications
## FileIsInUse Notification
notification.inUse.message=Súbor je používaný iným zariadením
notification.inUse.message=Súbor je používaný iným zariadením

View File

@@ -73,6 +73,7 @@ unlock.unlockBtn=Odkleni
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -83,6 +84,7 @@ hub.registerSuccess.unlockBtn=Odkleni
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -220,4 +222,4 @@ contactHubVaultOwner.title=Hub trezor
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -103,6 +103,7 @@ unlock.success.rememberChoice=Zapamti izbor, ne prikazuj ovo ponovo
unlock.success.revealBtn=Otvori disk
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -112,6 +113,7 @@ hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -359,4 +361,4 @@ quit.lockAndQuitBtn=Zaključaj i Izađi
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -95,6 +95,7 @@ unlock.chooseMasterkey.filePickerTitle=Izaberi "Masterkey" datoteku
unlock.success.revealBtn=Otvori disk
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -104,6 +105,7 @@ hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -278,4 +280,4 @@ vaultOptions.masterkey.changePasswordBtn=Promena lozinke
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,8 @@ unlock.error.title=Upplåsning av "%s" misslyckades
hub.noKeychain.message=Kan inte komma åt enhetsnyckeln
hub.noKeychain.description=För att låsa upp Hubb-valv krävs en enhetsnyckel, som är säkrad med hjälp av en nyckelring. För att fortsätta, aktivera ”%s” och välj en nyckelring i inställningarna.
hub.noKeychain.openBtn=Gå till inställningarna
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Ange som betrott
### Waiting
hub.auth.message=Väntar på autentisering…
hub.auth.description=Du bör automatiskt omdirigeras till inloggningssidan.
@@ -192,6 +194,7 @@ hub.archived.description=Detta valv har arkiverats och är inte längre tillgän
### Unauthorized
hub.unauthorized.message=Åtkomst nekad
hub.unauthorized.description=Du har inte behörighet att öppna detta valv. Kontakta valvets ägare för att begära åtkomst.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Åtgärd krävs
hub.requireAccountInit.description.0=För att fortsätta, vänligen fyll i de steg som krävs i din
@@ -694,4 +697,4 @@ eventView.entry.inUse.copyUserAndDevice=Kopiera blockerande användare och enhet
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -132,6 +132,8 @@ unlock.error.customPath.description.notExists=Njia maalum ya kupachika haipo. Iu
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
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Amini
### Waiting
hub.auth.message=Inasubiri uthibitishaji…
hub.auth.description=Unapaswa kuelekezwa upya kiotomatiki kwa ukurasa wa kuingia.
@@ -148,6 +150,7 @@ hub.registerSuccess.unlockBtn=Fungua
### Archived
### Unauthorized
hub.unauthorized.message=Ufikiaji umekataliwa
### Untrusted Host
### Requires Account Initialization
### License Exceeded
hub.invalidLicense.message=Leseni ya Hub ni batili
@@ -506,4 +509,4 @@ dokanySupportEnd.preferencesBtn=Fungua Mapendeleo
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -119,6 +119,7 @@ unlock.success.rememberChoice=என் விருப்பத்தை நி
unlock.success.revealBtn=இயக்ககத்தை வெளிப்படுத்து
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -128,6 +129,7 @@ hub.registerSuccess.unlockBtn=பூட்டுநீக்கு
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -343,4 +345,4 @@ quit.forced.forceAndQuitBtn=கட்டாயப்படுத்தி வெ
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -34,6 +34,7 @@ generic.button.remove=తొలగించు
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -42,6 +43,7 @@ generic.button.remove=తొలగించు
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -159,4 +161,4 @@ preferences.interface.theme.light=కాంతి
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -154,6 +154,8 @@ unlock.error.title=ปลดล็อก "%s" ไม่สำเร็จ
hub.noKeychain.message=ไม่สามารถเข้าถึง device key ได้
hub.noKeychain.description=เพื่อปลดล็อก Hub vaults จำเป็นต้องใช้ device key ซึ่งได้รับการป้องกันด้วย keychain หากต้องการดำเนินการต่อ โปรดเปิดใช้งาน “%s” และเลือก keychain ในการตั้งค่า
hub.noKeychain.openBtn=การตั้งค่า
### Check Host Authenticity
hub.checkHostTrust.trustBtn=เชื่อถือ
### Waiting
hub.auth.message=กำลังรอการตรวจสอบ…
hub.auth.description=คุณจะถูกเปลี่ยนเส้นทางไปยังหน้าลงชื่อเข้าใช้อัตโนมัติ
@@ -182,6 +184,7 @@ hub.registerFailed.description.deviceAlreadyExists=อุปกรณ์นี
### Archived
### Unauthorized
hub.unauthorized.message=การเข้าถึงถูกปฏิเสธ
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=โปรดดำเนินการ
hub.requireAccountInit.description.0=เพื่อดำเนินการต่อ โปรดทำตามขั้นตอนที่จำเป็นใน
@@ -488,4 +491,4 @@ shareVault.hubAd.encryption=• เข้ารหัสจากต้นทา
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -158,6 +158,8 @@ unlock.error.title="%s" kilidini açma başarısız oldu
hub.noKeychain.message=Cihaz anahtarına erişilemiyor
hub.noKeychain.description=Hub kasalarının kilidini açmak için, bir anahtar deposu kullanılarak güvence altına alınan bir cihaz anahtarı gereklidir. Devam etmek için "%s"yi etkinleştirin ve tercihlerde bir anahtar deposu seçin.
hub.noKeychain.openBtn=Tercihleri Aç
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Güven
### Waiting
hub.auth.message=Kimlik doğrulaması için bekleniyor…
hub.auth.description=Otomatik olarak giriş sayfasına yönlendirilmelisiniz.
@@ -188,6 +190,7 @@ hub.archived.message=Kasa arşivlendi
### Unauthorized
hub.unauthorized.message=Erişim engellendi
hub.unauthorized.description=Bu kasayı açma yetkiniz yok. Erişim talebinde bulunmak için kasanın sahibiyle iletişime geçin.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Eylem gerekli
hub.requireAccountInit.description.0=Devam etmek için lütfen gerekli adımları tamamlayın
@@ -634,4 +637,4 @@ eventView.entry.inUse.ignoreLock=Kullanım durumunu yok say
## FileIsInUse Notification
notification.inUse.message=Dosya başka bir cihazda kullanılıyor
notification.inUse.description=Dosya %s tarafından %s tarihinde açıldı. Onlardan dosyayı kapatmalarını ve senkronizasyonun tamamlanmasını beklemelerini isteyin. Dosyayı şimdi açmak için durumu görmezden gelebilirsiniz, ancak bu çakışmalara veya yeni değişikliklerin üzerine yazılmasına neden olabilir.
notification.inUse.action=Kullanım Durumunu Yok Say
notification.inUse.action=Kullanım Durumunu Yok Say

View File

@@ -152,6 +152,7 @@ unlock.error.title="%s" نى قۇلۇپسىزلاش مەغلۇپ بولدى
hub.noKeychain.message=ئۈسكۈنە ئاچقۇچىغا كىرىش مۇمكىن بولمىدى
hub.noKeychain.description=Hub ئامبارلىرىنى قۇلۇپسىزلاش ئۈچۈن، ئاچقۇچ ساقلىغۇچ ئارقىلىق بىخەتەرلەشتۈرۈلگەن ئۈسكۈنە ئاچقۇچى كېرەك. داۋاملاشتۇرۇش ئۈچۈن، تەڭشەكلەردە "%s" نى قوزغىتىپ ئاچقۇچ ساقلىغۇچنى تاللاڭ.
hub.noKeychain.openBtn=تەڭشەكلەرنى ئېچىش
### Check Host Authenticity
### Waiting
hub.auth.message=دەلىللەشنى كۈتۈۋاتىدۇ…
hub.auth.description=سىز ئاپتوماتىك ھالدا كىرىش بېتىگە يۆتكىلىشىڭىز كېرەك.
@@ -180,6 +181,7 @@ hub.registerFailed.description.deviceAlreadyExists=بۇ ئۈسكۈنە ئالل
### Archived
### Unauthorized
hub.unauthorized.message=كىرىش رەت قىلىندى
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=مەشغۇلات تەلەپ قىلىنىدۇ
hub.requireAccountInit.description.0=داۋاملاشتۇرۇش ئۈچۈن، سىزنىڭ
@@ -594,4 +596,4 @@ shareVault.hub.openHub=Cryptomator Hub ئۇچۇرىنى ئېچىڭ
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -127,13 +127,13 @@ changepassword.finalConfirmation=Я розумію, що не зможу отр
# Forget Password
forgetPassword.title=Забути пароль
forgetPassword.message=Забути збережений пароль?
forgetPassword.description=Ця дія видалить збережений пароль вашого сховища із системної зв'язки ключів.
forgetPassword.description=Ця дія видалить збережений пароль вашого сховища із системної звязки ключів.
forgetPassword.confirmBtn=Забути пароль
# Unlock
unlock.title=Розблокування «%s»
unlock.passwordPrompt=Введіть пароль для «%s»:
unlock.savePassword=Запам'ятати пароль
unlock.savePassword=Запамятати пароль
unlock.unlockBtn=Розблокувати
## Select
unlock.chooseMasterkey.message=Файл masterkey не знайдено
@@ -160,8 +160,14 @@ unlock.error.restartRequired.description=Змініть тип тому в па
unlock.error.title=Розблокувати «%s» не вдалося
## Hub
hub.noKeychain.message=Не вдалося отримати доступ до ключа пристрою
hub.noKeychain.description=Щоб розблокувати сховища Hub, необхідний ключ пристрою, який захищено за допомогою зв'язки ключів. Щоб продовжити, увімкніть «%s» та виберіть зв'язку ключів у налаштуваннях.
hub.noKeychain.description=Щоб розблокувати сховища Hub, необхідний ключ пристрою, який захищено за допомогою звязки ключів. Щоб продовжити, увімкніть «%s» та виберіть звязку ключів у налаштуваннях.
hub.noKeychain.openBtn=Відкрити налаштування
### Check Host Authenticity
hub.checkHostTrust.message.check=Перевірка конфігурації…
hub.checkHostTrust.message.ask=Довіряти цьому хосту?
hub.checkHostTrust.message.ask.plural=Довіряти цим хостам?
hub.checkHostTrust.trustBtn=Довіряти
hub.checkHostTrust.denyBtn=Відхилити
### Waiting
hub.auth.message=Очікування завершення автентифікації…
hub.auth.description=Вас буде автоматично перенаправлено на сторінку входу.
@@ -192,7 +198,10 @@ hub.archived.message=Сховище заархівовано
hub.archived.description=Це сховище було заархівовано і більше не доступне. Зверніться до власника сховища.
### Unauthorized
hub.unauthorized.message=У доступі відмовлено
hub.unauthorized.description=Ви не авторизовані для відкриття цього сховища. Зв'яжіться з його власником, щоб отримати доступ.
hub.unauthorized.description=Ви не авторизовані для відкриття цього сховища. Звяжіться з його власником, щоб отримати доступ.
### Untrusted Host
hub.untrustedHost.message=Хост не є надійним
hub.untrustedHost.description=З’єднання з Hub заблоковано з міркувань безпеки. Якщо ви впевнені в безпеці хоста Hub, зв’яжіться з адміністратором Hub або спробуйте ще раз.
### Requires Account Initialization
hub.requireAccountInit.message=Необхідна дія
hub.requireAccountInit.description.0=Щоб продовжити, будь ласка, виконайте необхідні кроки у вашому
@@ -245,11 +254,11 @@ migration.impossible.moreInfo=Сховище все ще можна відкри
## Start
health.title=Перевірка стану «%s»
health.intro.header=Перевірка стану
health.intro.text=«Перевірка стану»це набір перевірок для виявлення та, можливо, виправлення проблем у внутрішній структурі вашого сховища. Будь ласка, врахуйте:
health.intro.remarkSync=Переконайтеся, що всі пристрої повністю синхронізовані, це вирішує більшість проблем.
health.intro.text=«Перевірка стану» — це набір перевірок для виявлення та, за можливості, виправлення проблем у внутрішній структурі вашого сховища. Будь ласка, зверніть увагу:
health.intro.remarkSync=Переконайтеся, що всі пристрої повністю синхронізовані — це вирішує більшість проблем.
health.intro.remarkFix=Не всі проблеми можна виправити.
health.intro.remarkBackup=Якщо дані пошкоджено, допоможе лише резервна копія.
health.intro.affirmation=Я прочитав(ла) і зрозумів(ла) наведену вище інформацію
health.intro.affirmation=Я прочитав(-ла) та зрозумів(-ла) наведену вище інформацію
## Start Failure
health.fail.header=Помилка при завантаженні конфігурації сховища
health.fail.ioError=Під час доступу та читання файлу конфігурації сталася помилка.
@@ -306,19 +315,20 @@ preferences.general.debugDirectory=Показати файли журналу
preferences.general.autoStart=Запускати Cryptomator під час запуску системи
preferences.general.keychainBackend=Зберігати паролі за допомогою
preferences.general.quickAccessService=Додавати розблоковані сховища до області швидкого доступу
preferences.general.resetTrustedHosts=Скинути список довірених хостів
## Interface
preferences.interface=Вигляд
preferences.interface.theme=Вигляд і поведінка
preferences.interface.theme=Зовнішній вигляд
preferences.interface.theme.automatic=Автоматично
preferences.interface.theme.dark=Темний
preferences.interface.theme.light=Світлий
preferences.interface.theme.dark=Темна
preferences.interface.theme.light=Світла
preferences.interface.unlockThemes=Розблокувати темний режим
preferences.interface.language=Мова (потрібен перезапуск)
preferences.interface.language.auto=Мова системи
preferences.interface.interfaceOrientation=Орієнтація інтерфейсу
preferences.interface.interfaceOrientation.ltr=Зліва направо
preferences.interface.interfaceOrientation.rtl=Справа наліво
preferences.interface.showTrayIcon=Показувати іконку в треї (потрібен перезапуск)
preferences.interface.showTrayIcon=Показувати значок в області сповіщень (потрібен перезапуск)
preferences.interface.compactMode=Увімкнути компактний список сховищ
## Volume
preferences.volume=Віртуальний диск
@@ -584,7 +594,7 @@ recover.recoverMasterkey.title=Відновлення masterkey
recover.onBoarding.chooseMethod=Оберіть спосіб відновлення:
recover.onBoarding.useRecoveryKey=Використати ключ відновлення
recover.onBoarding.usePassword=Використати пароль
recover.onBoarding.intro=Обов'язково перевірте наступне:
recover.onBoarding.intro=Обовязково перевірте наступне:
recover.onBoarding.pleaseConfirm=Перш ніж продовжити, переконайтеся, що:
recover.onBoarding.otherwisePleaseConfirm=В іншому випадку, переконайтеся, що:
recover.onBoarding.allMissing.intro=Якщо цим сховищем керує Cryptomator Hub, його власник повинен відновити його для вас.
@@ -709,7 +719,7 @@ eventView.entry.brokenFileNode.copyDecrypted=Копіювати розшифро
eventView.entry.inUse.message=Файл використовується
eventView.entry.inUse.showDecrypted=Показати розшифрований файл
eventView.entry.inUse.showEncrypted=Показати зашифрований файл
eventView.entry.inUse.copyUserAndDevice=Копіювати ім'я користувача та пристрою, що блокують
eventView.entry.inUse.copyUserAndDevice=Копіювати імя користувача та пристрою, що блокують
eventView.entry.inUse.ignoreLock=Ігнорувати статус використання
@@ -717,4 +727,4 @@ eventView.entry.inUse.ignoreLock=Ігнорувати статус викори
## FileIsInUse Notification
notification.inUse.message=Файл використовується на іншому пристрої
notification.inUse.description=Файл відкритий користувачем %s на пристрої %s. Попросіть його закрити файл, щоб завершити синхронізацію. Ви можете ігнорувати цей статус і відкрити файл зараз, але це може призвести до конфліктів або перезапису новіших змін.
notification.inUse.action=Ігнорувати статус використання
notification.inUse.action=Ігнорувати статус використання

View File

@@ -32,6 +32,7 @@
## Success
## Failure
## Hub
### Check Host Authenticity
### Waiting
### Receive Key
### Register Device
@@ -40,6 +41,7 @@
### Registration Failed
### Archived
### Unauthorized
### Untrusted Host
### Requires Account Initialization
### License Exceeded
@@ -154,4 +156,4 @@
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -154,6 +154,8 @@ unlock.error.title=Mở khóa "%s" không thành công
hub.noKeychain.message=Không thể truy cập khoá thiết bị
hub.noKeychain.description=Để mở khoá vault Hub, cần có khoá thiết bị, khoá này được bảo mật bằng chuỗi khoá. Để tiếp tục, hãy bật “%s” và chọn một chuỗi khoá trong tuỳ chọn.
hub.noKeychain.openBtn=Mở Tuỳ chọn
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Tin tưởng
### Waiting
hub.auth.message=Đang chờ xác thực…
hub.auth.description=Bạn sẽ tự động được chuyển hướng đến trang đăng nhập.
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=Thiết bị này đã đư
### Unauthorized
hub.unauthorized.message=Truy cập bị từ chối
hub.unauthorized.description=Bạn không được phép mở vault này. Vui lòng liên hệ với chủ sở hữu vault để yêu cầu quyền truy cập.
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=Cần thực hiện hành động
hub.requireAccountInit.description.0=Để tiếp tục, vui lòng hoàn thành các bước yêu cầu trong
@@ -644,4 +647,4 @@ eventView.entry.inUse.showEncrypted=Hiển thị tệp đã mã hóa
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification

View File

@@ -161,6 +161,12 @@ unlock.error.title=解锁“%s”失败
hub.noKeychain.message=无法访问设备密钥
hub.noKeychain.description=为了解锁 Hub 保险库,需要使用由钥匙串保护的设备密钥。若要继续,请启用“%s”并在首选项中选择一个钥匙串
hub.noKeychain.openBtn=打开首选项
### Check Host Authenticity
hub.checkHostTrust.message.check=正在检查配置…
hub.checkHostTrust.message.ask=是否信任这台主机?
hub.checkHostTrust.message.ask.plural=是否信任这些主机?
hub.checkHostTrust.trustBtn=信任
hub.checkHostTrust.denyBtn=拒绝
### Waiting
hub.auth.message=正在等待认证…
hub.auth.description=您应该会被自动重定向到登录页面
@@ -187,9 +193,14 @@ hub.registerFailed.message=设备注册失败
hub.registerFailed.description.generic=注册过程中出现错误。详情请查看应用程序日志。
hub.registerFailed.description.deviceAlreadyExists=此设备已被注册给另一位用户。请尝试更改用户帐户或使用别的设备。
### Archived
hub.archived.message=保险库已归档
hub.archived.description=此保险库已被归档,无法再访问。请联系保险库所有者。
### Unauthorized
hub.unauthorized.message=拒绝访问
hub.unauthorized.description=您无权打开此保险库。请联系保险库的所有者以请求访问。
### Untrusted Host
hub.untrustedHost.message=主机不可信
hub.untrustedHost.description=为了您的安全Hub 的连接已被阻止。如果您认为该 Hub 主机是安全的,请联系您的 Hub 管理员或重试。
### Requires Account Initialization
hub.requireAccountInit.message=操作请求
hub.requireAccountInit.description.0=要继续,请完成所需的步骤
@@ -267,6 +278,8 @@ health.check.detail.checkFinishedAndFound=检查运行完成,请查看结果
health.check.detail.checkFailed=检查由于出错而退出
health.check.detail.checkCancelled=检查已被取消
health.check.detail.listFilters.label=筛选
health.check.detail.filterSeverity=按严重程度筛选
health.check.detail.filterFixState=按修复状态筛选
health.check.detail.fixAllSpecificBtn=修复所有类型
health.check.exportBtn=导出报告
## Result view
@@ -301,6 +314,7 @@ preferences.general.debugDirectory=显示日志文件
preferences.general.autoStart=开机自动启动
preferences.general.keychainBackend=存储密码方式
preferences.general.quickAccessService=将已解锁的保险库添加到快速访问区域
preferences.general.resetTrustedHosts=重置信任主机
## Interface
preferences.interface=用户界面
preferences.interface.theme=界面外观
@@ -340,8 +354,12 @@ preferences.updates.lastUpdateCheck.recently=最近
preferences.updates.lastUpdateCheck.daysAgo=%s 天前
preferences.updates.lastUpdateCheck.hoursAgo=%s 小时前
preferences.updates.prohibitedDueToUnlockedVaults.1=
preferences.updates.prohibitedDueToUnlockedVaults.2=锁定您的保险库
preferences.updates.prohibitedDueToUnlockedVaults.3=安装此更新。
preferences.updates.checkFailed=更新失败,请检查您的互网络连接或稍后再试
preferences.updates.updateFailed=更新失败。请手动安装更新。
preferences.updates.upToDate=Cryptomator 已是最新版
preferences.updates.visitDownloadPage=访问下载页面
## Contribution
preferences.contribute=支持我们
@@ -352,6 +370,7 @@ preferences.contribute.promptText=在这里粘贴赞助者证书码
preferences.contribute.thankYou=感谢您支持 Cryptomator 开源项目!
preferences.contribute.donate=捐赠
preferences.contribute.sponsor=赞助
preferences.contribute.removeCert.tooltip=移除证书
### Remove License Key Dialog
removeCert.title=删除证书
@@ -361,6 +380,7 @@ removeCert.description=Cryptomator 的核心功能不会受此影响。您对保
## About
preferences.about=关于
preferences.about.thirdPartyLicenses=第三方许可证
# Vault Statistics
stats.title=%s 统计信息
@@ -400,6 +420,7 @@ stats.access.total=总访问量:%d
# Main Window
## Vault List
main.vaultlist=保险库
main.vaultlist.listEntry=保险库 %s (%s)
main.vaultlist.emptyList.onboardingInstruction=点击此处添加一个保险库
main.vaultlist.contextMenu.remove=移除…
main.vaultlist.contextMenu.lock=锁定
@@ -412,12 +433,16 @@ main.vaultlist.addVaultBtn.menuItemNew=新建保险库…
main.vaultlist.addVaultBtn.menuItemExisting=打开现有的保险库…
main.vaultlist.addVaultBtn.menuItemRecover=恢复现有保险库…
main.vaultlist.addVaultButton.tooltip=添加保险库
main.vaultlist.showEventsButton.tooltip=打开事件视图
main.vaultlist.showPreferencesButton.tooltip=显示偏好设置
##Notification
main.notification.updateAvailable=发现新版本
main.notification.support=支持 Cryptomator
main.notification.closeButton.tooltip=关闭信息栏
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=感谢您使用 Cryptomator 来保护您的文件。如果您需要任何帮助,请查看我们的快速开始指南:
main.vaultDetail.storageLocation=私密库存储位置
### Locked
main.vaultDetail.lockedStatus=已锁定
main.vaultDetail.unlockBtn=解锁…
@@ -475,6 +500,7 @@ vaultOptions.general=常规​​​​​
vaultOptions.general.vaultName=保险库名称
vaultOptions.general.autoLock.lockAfterTimePart1=空闲超时
vaultOptions.general.autoLock.lockAfterTimePart2=分钟后自动锁定
vaultOptions.general.autoLock.accessibleText=锁定超时(分钟)
vaultOptions.general.unlockAfterStartup=启动 Cryptomator 时解锁保险库(此功能需先勾选保存密码)
vaultOptions.general.actionAfterUnlock=解锁成功后的操作
vaultOptions.general.actionAfterUnlock.ignore=什么也不做
@@ -505,6 +531,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=忘记保存的密码
vaultOptions.masterkey.recoveryKeyExplanation=忘记密码时,恢复密钥是你恢复保险库访问权限的唯一方式!
vaultOptions.masterkey.showRecoveryKeyBtn=显示恢复密钥
vaultOptions.masterkey.recoverPasswordBtn=重置密码
vaultOptions.masterkey.missingMasterkeyFile=只有当主密钥文件位于保险库目录中时,这些选项才可用。
## Hub
vaultOptions.hub=恢复
vaultOptions.hub.convertInfo=您可以在紧急情况下使用恢复密钥将此 Hub 保险库转换为基于密码的保险库。
@@ -688,10 +715,15 @@ eventView.entry.brokenDirFile.showEncrypted=显示损坏的加密链接
eventView.entry.brokenFileNode.message=损坏的文件系统节点
eventView.entry.brokenFileNode.showEncrypted=显示损坏的加密节点
eventView.entry.brokenFileNode.copyDecrypted=复制解密路径
eventView.entry.inUse.message=该文件正在使用中
eventView.entry.inUse.showDecrypted=显示解密文件
eventView.entry.inUse.showEncrypted=显示加密文件
eventView.entry.inUse.copyUserAndDevice=复制锁定用户和设备名称
eventView.entry.inUse.ignoreLock=忽略使用状态
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification
notification.inUse.message=该文件正在另一台设备上使用
notification.inUse.description=该文件正在由 %s 位于 %s 上打开。请让他们关闭该文件,以便同步完成。您现在可以忽略此状态并打开文件,但这可能会导致冲突或覆盖较新的更改。
notification.inUse.action=忽略使用状态

View File

@@ -18,6 +18,11 @@ generic.button.print=列印
generic.button.remove=移除
## Vault state
vault.state.locked=已鎖定
vault.state.unlocked=已解鎖
vault.state.missing=缺失
vault.state.migrationNeeded=需要遷移
vault.state.processing=正在處理
vault.state.error=錯誤
# Error
@@ -100,6 +105,7 @@ addvault.new.readme.accessLocation.4=你可以放心移除這個檔案。
## Existing
addvaultwizard.existing.title=新增現有加密檔案庫
addvaultwizard.existing.instruction=請選擇現有加密庫中名為「vault.cryptomator」的檔案。如果只有一個名為「masterkey.cryptomator」的檔案則選擇該檔案。
addvaultwizard.existing.restore=復原…
addvaultwizard.existing.chooseBtn=選取…
addvaultwizard.existing.filePickerTitle=選取加密庫檔案
addvaultwizard.existing.filePickerMimeDesc=Cryptomator 加密庫
@@ -131,6 +137,7 @@ unlock.unlockBtn=解鎖
## Select
unlock.chooseMasterkey.message=未找到主金鑰(Masterkey)檔案
unlock.chooseMasterkey.description=無法在其預期位置自動找到加密庫 %s 的主密鑰。請手動選擇密鑰文件。
unlock.chooseMasterkey.restoreInstead=改為還原主金鑰文件
unlock.chooseMasterkey.filePickerTitle=選擇主金鑰檔案
unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator 主密鑰
## Success
@@ -154,6 +161,12 @@ unlock.error.title=解鎖"%s"失敗
hub.noKeychain.message=無法訪問設備密鑰
hub.noKeychain.description=為了解鎖 Hub 加密檔案庫需要一個裝置密鑰,該密鑰已被安全地保管在鑰匙串中。為了繼續進行,請啟用「%s」並在偏好設定中選擇一個鑰匙串。
hub.noKeychain.openBtn=開啟偏好設定
### Check Host Authenticity
hub.checkHostTrust.message.check=正在檢查配置…
hub.checkHostTrust.message.ask=是否信任主機?
hub.checkHostTrust.message.ask.plural=是否信任主機?
hub.checkHostTrust.trustBtn=信任
hub.checkHostTrust.denyBtn=拒絕
### Waiting
hub.auth.message=等待認證中…
hub.auth.description=您將被自動傳送到登入頁面。
@@ -180,8 +193,14 @@ hub.registerFailed.message=裝置註冊失敗
hub.registerFailed.description.generic=註冊過程中發生錯誤。欲了解更多詳情,請查閱應用程式日誌。
hub.registerFailed.description.deviceAlreadyExists=此裝置已註冊為其他使用者。請嘗試更改使用者帳戶或使用其他裝置。
### Archived
hub.archived.message=加密庫已封存
hub.archived.description=這個加密庫已封存且不再可用。請聯絡加密庫所有人。
### Unauthorized
hub.unauthorized.message=拒絕存取
hub.unauthorized.description=您無授權開啟此加密庫。請聯絡加密庫所有者以取得權限。
### Untrusted Host
hub.untrustedHost.message=主機不可信
hub.untrustedHost.description=爲了您的安全Hub 的鏈接已被阻止。如果您認爲該Hub主機是安全的請聯係您的Hub管理員或重試。
### Requires Account Initialization
hub.requireAccountInit.message=需要操作
hub.requireAccountInit.description.0=請完成您所需的步驟以繼續。
@@ -259,6 +278,8 @@ health.check.detail.checkFinishedAndFound=檢查結束,請查看結果。
health.check.detail.checkFailed=檢查發生錯誤並意外退出。
health.check.detail.checkCancelled=檢查被取消。
health.check.detail.listFilters.label=過濾
health.check.detail.filterSeverity=以嚴重程度篩選
health.check.detail.filterFixState=以修復狀態篩選
health.check.detail.fixAllSpecificBtn=修復所有類型
health.check.exportBtn=匯出報告
## Result view
@@ -287,11 +308,13 @@ preferences.title=偏好設定
## General
preferences.general=一般
preferences.general.startHidden=啟動 Cryptomator 時隱藏視窗
preferences.general.autoCloseVaults=離開程式時直接鎖定加密庫而不詢問
preferences.general.debugLogging=啟用除錯日誌
preferences.general.debugDirectory=展示日誌檔案
preferences.general.autoStart=系統啟動時同時啟動 Cryptomator
preferences.general.keychainBackend=儲存密碼使用
preferences.general.quickAccessService=將解鎖的加密檔案庫新增至快速存取區域
preferences.general.resetTrustedHosts=已清除信任的主機
## Interface
preferences.interface=界面
preferences.interface.theme=外觀
@@ -330,8 +353,13 @@ preferences.updates.lastUpdateCheck.never=從未
preferences.updates.lastUpdateCheck.recently=最近
preferences.updates.lastUpdateCheck.daysAgo=%s天前
preferences.updates.lastUpdateCheck.hoursAgo=%s小時前
preferences.updates.prohibitedDueToUnlockedVaults.1=
preferences.updates.prohibitedDueToUnlockedVaults.2=鎖定您的加密庫
preferences.updates.prohibitedDueToUnlockedVaults.3=以安裝更新。
preferences.updates.checkFailed=更新失敗。請檢查您網路連線或稍後再試。
preferences.updates.updateFailed=更新失敗。請手動安裝更新。
preferences.updates.upToDate=Cryptomator已是最新版本
preferences.updates.visitDownloadPage=前往下載頁面
## Contribution
preferences.contribute=贊助我們
@@ -342,6 +370,7 @@ preferences.contribute.promptText=在這貼上贊助憑證代碼
preferences.contribute.thankYou=感謝您贊助Cryptomator的開源軟體開發!
preferences.contribute.donate=捐款
preferences.contribute.sponsor=贊助
preferences.contribute.removeCert.tooltip=移除憑證
### Remove License Key Dialog
removeCert.title=移除憑證
@@ -351,6 +380,7 @@ removeCert.description=Cryptomator的核心功能不會受此影響。您的加
## About
preferences.about=關於
preferences.about.thirdPartyLicenses=第三方授權
# Vault Statistics
stats.title=%s 的統計數據
@@ -390,6 +420,7 @@ stats.access.total=總存取數:%d
# Main Window
## Vault List
main.vaultlist=加密庫
main.vaultlist.listEntry=加密庫 %s (%s)
main.vaultlist.emptyList.onboardingInstruction=點擊此處以加入加密庫
main.vaultlist.contextMenu.remove=移除…
main.vaultlist.contextMenu.lock=鎖定
@@ -398,13 +429,20 @@ main.vaultlist.contextMenu.unlockNow=立即解鎖
main.vaultlist.contextMenu.vaultoptions=顯示加密庫選項
main.vaultlist.contextMenu.reveal=展示磁碟
main.vaultlist.contextMenu.share=分享…
main.vaultlist.addVaultBtn.menuItemNew=建立新加密庫…
main.vaultlist.addVaultBtn.menuItemExisting=開啟現有加密庫…
main.vaultlist.addVaultBtn.menuItemRecover=恢復現有加密庫…
main.vaultlist.addVaultButton.tooltip=新增加密庫
main.vaultlist.showEventsButton.tooltip=打開事件檢視
main.vaultlist.showPreferencesButton.tooltip=顯示偏好設定
##Notification
main.notification.updateAvailable=有可用更新
main.notification.support=贊助Cryptomator.
main.notification.closeButton.tooltip=關閉訊息欄
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=感謝選用 Cryptomator 保護你的檔案。如需要任何協助,請參照我們的使用指南:
main.vaultDetail.storageLocation=加密庫儲存位置
### Locked
main.vaultDetail.lockedStatus=已鎖定
main.vaultDetail.unlockBtn=解鎖…
@@ -427,12 +465,17 @@ main.vaultDetail.stats=加密庫統計數據
main.vaultDetail.locateEncryptedFileBtn=顯示加密檔案路徑
main.vaultDetail.locateEncryptedFileBtn.tooltip=選擇要顯示對應加密檔案路徑的加密檔案庫檔案
main.vaultDetail.encryptedPathsCopied=路徑已複製到剪貼簿
main.vaultDetail.locateEncrypted.filePickerTitle=從加密庫中選擇檔案
main.vaultDetail.decryptName.buttonLabel=解密檔案名
main.vaultDetail.decryptName.tooltip=選擇加密庫檔案以解密其名稱
### Missing
main.vaultDetail.missing.info=Cryptomator 無法在指定位置找到加密庫。
main.vaultDetail.missing.recheck=重新檢查
main.vaultDetail.missing.remove=從加密庫列表中移除…
main.vaultDetail.missing.changeLocation=升級加密庫
### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=加密庫配置缺失。
main.vaultDetail.missingVaultConfig.restore=復原加密庫配置
### Needs Migration
main.vaultDetail.migrateButton=升級加密庫
main.vaultDetail.migratePrompt=你必須先更新加密庫才能存取內容
@@ -457,6 +500,7 @@ vaultOptions.general=一般
vaultOptions.general.vaultName=加密庫名稱
vaultOptions.general.autoLock.lockAfterTimePart1=在空閒時間後鎖定
vaultOptions.general.autoLock.lockAfterTimePart2=分鐘
vaultOptions.general.autoLock.accessibleText=鎖定逾時(以分鐘計)
vaultOptions.general.unlockAfterStartup=啟動 Cryptomator 時解鎖加密庫
vaultOptions.general.actionAfterUnlock=成功解鎖後
vaultOptions.general.actionAfterUnlock.ignore=不執行任何動作
@@ -466,6 +510,7 @@ vaultOptions.general.startHealthCheckBtn=開始狀態檢查
## Mount
vaultOptions.mount=掛載
vaultOptions.mount.info=開啟虛擬磁碟偏好設定以更改預設。
vaultOptions.mount.readonly=唯讀
vaultOptions.mount.customMountFlags=自訂掛載參數
vaultOptions.mount.winDriveLetterOccupied=已使用
@@ -475,6 +520,10 @@ vaultOptions.mount.mountPoint.driveLetter=使用指定的磁碟代號
vaultOptions.mount.mountPoint.custom=使用選擇的路徑
vaultOptions.mount.mountPoint.directoryPickerButton=選取…
vaultOptions.mount.mountPoint.directoryPickerTitle=選擇一個路徑
vaultOptions.mount.volumeType.default=默認預設(%s)
vaultOptions.mount.volumeType.restartRequired=Cryptomator 需重新啟動以使用此加密空間。
vaultOptions.mount.volume.tcp.port=TCP 埠
vaultOptions.mount.volume.type=加密空間
## Master Key
vaultOptions.masterkey=密碼
vaultOptions.masterkey.changePasswordBtn=更改密碼
@@ -482,6 +531,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=清除已儲存密碼
vaultOptions.masterkey.recoveryKeyExplanation=在您遺失密碼時,僅能以復原金鑰恢復存取。
vaultOptions.masterkey.showRecoveryKeyBtn=顯示復原金鑰
vaultOptions.masterkey.recoverPasswordBtn=重設密碼
vaultOptions.masterkey.missingMasterkeyFile=只有主金鑰位於加密庫的資料夾中,選項才可用。
## Hub
vaultOptions.hub=恢復
vaultOptions.hub.convertInfo=您可以使用恢復金鑰在緊急情況下將此 Hub 保險庫轉換為基於密碼的加密檔案庫。
@@ -492,6 +542,7 @@ vaultOptions.hub.convertBtn=轉換為基於密碼的加密檔案庫。
recoveryKey.display.title=顯示恢復金鑰
recoveryKey.create.message=需要密碼
recoveryKey.create.description=請輸入您的密碼以顯示「%s」的復原金鑰
recoveryKey.recover.description=輸入"%s" 密碼以復原加密庫配置。
recoveryKey.display.description=下方的復原金鑰可用來恢復「%s」的存取
recoveryKey.display.StorageHints=請把它保存在非常安全的地方,例如:\n • 使用密碼管理器保管\n • 存在 USB 隨身碟裡\n • 印在紙上
## Reset Password
@@ -504,28 +555,59 @@ recoveryKey.recover.invalidKey=此復原金鑰無效
recoveryKey.printout.heading=Cryptomator 復原金鑰\n「%s」\n
### Reset Password
recoveryKey.recover.resetBtn=重設
recoveryKey.recover.recoverBtn=恢復
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=密碼重設成功
recoveryKey.recover.resetSuccess.description=您現在可以用新密碼解鎖您的加密庫
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=加密庫配置已復原
recoveryKey.recover.resetMasterkeyFileSuccess.message=主金鑰檔案已復原
recoveryKey.recover.resetMasterkeyFileSuccess.description=您現可以密碼解鎖加密庫。
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=已新增加密庫
recover.existing.message=加密庫新增成功
recover.existing.description=您的加密庫 "%s" 已加入加密庫列表。無需復原。
##Vault Already Exists - Dialog
recover.alreadyExists.title=加密庫已存在
recover.alreadyExists.message=這個加密庫已經新增
recover.alreadyExists.description=您的加密庫 "%s" 已經存在於列表,不會再次新增。
##Invalid Selection - Dialog
recover.invalidSelection.title=無效選擇
recover.invalidSelection.message=所選并非加密庫
recover.invalidSelection.description=所選資料夾必須為有效加密庫。
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Hub 加密庫
contactHubVaultOwner.message=此加密庫由 Cryptomator Hub 建立
contactHubVaultOwner.description=請聯絡加密庫所有者以復原遺失檔案。加密庫所有者可從 Cryptomator Hub 取得加密庫範本。
##Dialog Title
recover.recoverVaultConfig.title=復原加密庫配置
recover.recoverMasterkey.title=復原主金鑰
## OnBoarding
recover.onBoarding.chooseMethod=選擇復原方式:
recover.onBoarding.useRecoveryKey=使用恢復金鑰
recover.onBoarding.usePassword=使用密碼
recover.onBoarding.intro=請務必檢查以下內容:
recover.onBoarding.pleaseConfirm=繼續操作前,請確認:
recover.onBoarding.otherwisePleaseConfirm=則或,請確認:
recover.onBoarding.allMissing.intro=如果加密庫由 Cryptomator Hub 管理,則需由加密庫所有者恢復。
recover.onBoarding.intro.ensure=所有檔案已同步。
recover.onBoarding.affirmation=我已閱讀並了解要求
###Vault Config Missing
recover.onBoarding.intro.recoveryKey=您擁有復原金鑰,且知曉有否啓用進階專家設定。
recover.onBoarding.intro.password=您擁有加密庫密碼,且知曉有否啓用進階專家設定。
###Masterkey Missing
recover.onBoarding.intro.masterkey.recoveryKey=您擁有加密庫復原金鑰。
## Expert Settings
recover.expertSettings.shorteningThreshold.title=此值必須與復原前一致,以確保相容已加密檔案。
# Convert Vault
convertVault.title=轉換加密檔案庫
@@ -566,19 +648,82 @@ updateReminder.yesOnce=是,僅一次
updateReminder.yesAutomatically=是,自動
#Dokany Support End
dokanySupportEnd.title=棄用通知
dokanySupportEnd.message=Dokany 支持已終止
dokanySupportEnd.description=Cryptomator 不再支援 Dokany 檔案系統。您的設定已調整為使用預設檔案系統。所預設的檔案系統可於偏好設定查看。
dokanySupportEnd.preferencesBtn=開啟偏好設定
#Retry If Readonly
retryIfReadonly.title=加密庫存取受限
retryIfReadonly.message=无權寫入加密庫資料夾
retryIfReadonly.description=Cryptomator 無法寫入加密庫路徑。您可將加密庫改成唯讀重試。此選項可以在加密庫選項中關閉。
retryIfReadonly.retry=更改與重試
# Share Vault
shareVault.title=共享加密庫
shareVault.message=是否要与他人共享你的加密庫?
shareVault.description=與他人共享加密庫時請務必小心。簡而言之,請遵循以下步驟:
shareVault.instruction.1=1. 透過雲端儲存共享加密保險庫資料夾的存取權限。
shareVault.instruction.2=2. 透過安全的方式共享保險庫密碼。
shareVault.remarkBestPractices=更多資訊,請參閱使用手冊的建議。
shareVault.docsTooltip=閲讀手冊,了解與他人共用加密庫的更多細節。
shareVault.hubAd.description=安全的團隊合作方式
shareVault.hubAd.keyManagement=• 零知識金鑰管理
shareVault.hubAd.authentication=• 強認證
shareVault.hubAd.encryption=• 端到端加密
shareVault.visitHub=前往 Cryptomator Hub
shareVault.hub.message=如何共享 Hub 加密庫
shareVault.hub.description=您需要執行以下兩步,才可與團隊共用加密庫内容:
shareVault.hub.instruction.1=1. 透過雲端儲存共享加密保險庫資料夾的存取權限。
shareVault.hub.instruction.2=2. 在 Cryptomator Hub 内授予團隊成員訪問權限。
shareVault.hub.openHub=開啟 Cryptomator Hub
# Decrypt File Names
decryptNames.title=解密檔案名
decryptNames.filePicker.title=顯示加密檔案
decryptNames.filePicker.extensionDescription=Cryptomator 加密文件
decryptNames.copyTable.tooltip=複製表格
decryptNames.clearTable.tooltip=清除表格
decryptNames.column.encrypted=已加密
decryptNames.column.decrypted=已解密
decryptNames.copyHint=用 %s 複製資料格內容
decryptNames.dropZone.message=拖放檔案或點擊選取
decryptNames.dropZone.error.vaultInternalFiles=所選取的加密檔案庫內部檔案並沒有可解密的檔名
decryptNames.dropZone.error.foreignFiles=檔案不屬於加密檔案庫「%s」
decryptNames.dropZone.error.noDirIdBackup=選取的檔案的資料夾並不包含dirId.c9r檔案
decryptNames.dropZone.error.generic=解密檔案名稱失敗
# Event View
eventView.title=事件
eventView.filter.allVaults=所有
eventView.clearListButton.tooltip=清除清單
eventView.filterVaults=以加密檔案庫篩選
eventView.cell.actionsButton.tooltip=事件動作
## event list entries
eventView.entry.vaultLocked.description=解鎖「%s」以顯示詳細資訊
eventView.entry.conflictResolved.message=以解決的衝突
eventView.entry.conflictResolved.showDecrypted=顯示解密檔案
eventView.entry.conflict.message=解決衝突失敗
eventView.entry.conflict.showDecrypted=顯示解密、原始的檔案
eventView.entry.conflict.showEncrypted=顯示衝突的加密檔案
eventView.entry.decryptionFailed.message=解密失敗
eventView.entry.decryptionFailed.showEncrypted=顯示加密檔案
eventView.entry.brokenDirFile.message=損壞的目錄連結
eventView.entry.brokenDirFile.showEncrypted=顯示損壞的加密路徑
eventView.entry.brokenFileNode.message=損壞的檔案系統節點
eventView.entry.brokenFileNode.showEncrypted=顯示損壞的加密節點
eventView.entry.brokenFileNode.copyDecrypted=複製解密路徑
eventView.entry.inUse.message=檔案使用中
eventView.entry.inUse.showDecrypted=顯示解密檔案
eventView.entry.inUse.showEncrypted=顯示加密檔案
eventView.entry.inUse.copyUserAndDevice=複製鎖定使用者與裝置名稱
eventView.entry.inUse.ignoreLock=忽略使用狀態
# Notifications
## FileIsInUse Notification
## FileIsInUse Notification
notification.inUse.message=此檔案正被另一部裝置取用
notification.inUse.description=%s 正用 %s 取用此檔案 。需對方關閉檔案,暫停存取,方能同步。亦可忽略狀態警告開啟檔案,但或有衝突,更甚或覆蓋變更。
notification.inUse.action=忽略使用狀態

View File

@@ -42,7 +42,7 @@ defaults.vault.vaultName=加密檔案庫
# Tray Menu
traymenu.showMainWindow=顯示
traymenu.showPreferencesWindow=偏好
traymenu.showPreferencesWindow=偏好設定
traymenu.lockAllVaults=全部鎖定
traymenu.quitApplication=離開
traymenu.vault.unlock=解鎖
@@ -161,6 +161,8 @@ unlock.error.title=解鎖%s失敗
hub.noKeychain.message=無法讀取裝置金鑰
hub.noKeychain.description=需要由鑰匙圈保護的裝置金鑰才能解鎖Hub加密檔案庫。請先至偏好設定中啟用「%s」並選擇一組鑰匙圈。
hub.noKeychain.openBtn=開啟偏好設定
### Check Host Authenticity
hub.checkHostTrust.trustBtn=信任
### Waiting
hub.auth.message=等待認證中…
hub.auth.description=您將自動傳送到登入頁面。
@@ -192,6 +194,7 @@ hub.archived.description=這個加密檔案庫已封存且無法再被存取。
### Unauthorized
hub.unauthorized.message=拒絕存取
hub.unauthorized.description=您沒有被授權開啟這個加密檔案庫。請聯絡檔案庫擁有者取得權限。
### Untrusted Host
### Requires Account Initialization
hub.requireAccountInit.message=需進一步操作
hub.requireAccountInit.description.0=請完成您的
@@ -314,7 +317,7 @@ preferences.interface.theme.light=亮色
preferences.interface.unlockThemes=解鎖暗色模式
preferences.interface.language=語言 (需要重新啟動)
preferences.interface.language.auto=系統預設
preferences.interface.interfaceOrientation=界面方向
preferences.interface.interfaceOrientation=介面排版
preferences.interface.interfaceOrientation.ltr=由左至右
preferences.interface.interfaceOrientation.rtl=由右至左
preferences.interface.showTrayIcon=顯示系統工作列圖示 (需要重新啟動)
@@ -329,7 +332,7 @@ preferences.volume.tcp.port=預設TCP埠
preferences.volume.supportedFeatures=所選擇的磁區空間類別支援下列功能:
preferences.volume.feature.mountAuto=自動選擇掛載路徑
preferences.volume.feature.mountToDir=使用自訂資料夾路徑來掛載
preferences.volume.feature.mountToDriveLetter=使用硬盤符號來當掛載路徑
preferences.volume.feature.mountToDriveLetter=使用磁碟機代號來當掛載路徑
preferences.volume.feature.mountFlags=自訂掛載選項
preferences.volume.feature.readOnly=唯讀掛載
## Updates
@@ -716,4 +719,4 @@ eventView.entry.inUse.ignoreLock=忽略使用狀態
## FileIsInUse Notification
notification.inUse.message=檔案正在被另一部裝置使用中
notification.inUse.description=這個檔案正在由 %s 在 %s 開啟中。告訴他們關閉檔案讓同步完成。您可以忽略這個狀態並且馬上開啟,但是可能會造成衝突或把新的變更覆蓋掉。
notification.inUse.action=忽略使用狀態
notification.inUse.action=忽略使用狀態