Compare commits

..
Author SHA1 Message Date
Armin Schrenk fc76f5f83f Merge branch 'release/1.19.3' 2026-06-29 13:52:10 +02:00
Armin Schrenk bfc8542551 remove dependency-check from release-check workflow
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-29 13:50:24 +02:00
Armin Schrenk 24a20911f1 finalize 1.19.3
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-29 13:39:27 +02:00
Armin Schrenk b681c26d72 Replace some slim runners by regular ones
Slim ubuntu runners don't have docker, thus failing executing certain actions. (i.e. https://github.com/rtCamp/action-slack-notify/issues/240)

Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 13:16:17 +02:00
Armin Schrenk 34f5c06795 [skip ci] Update changelog
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 13:11:11 +02:00
Armin Schrenk f4928fd981 prepare 1.19.3
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 11:23:48 +02:00
Armin SchrenkandGitHub f748bfd953 replace zulu by temurin (#4263)
Closes #4242

Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 11:13:18 +02:00
Armin SchrenkandGitHub cb689946ed Merge pull request #4262 from cryptomator/feature/4260-fix-unsigned-ps1
Sign Powershell scripts (again)
2026-06-25 10:21:47 +02:00
Armin Schrenk 38bdf6d0e4 cleanup workflow
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 10:14:42 +02:00
Armin Schrenk 409209fd89 [skip ci] update changelog
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 10:09:48 +02:00
Armin Schrenk 1fd44ff651 for scripts, do not append signature
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 01:10:10 +02:00
Armin Schrenk 9bb19b0130 extra sign steps for ps1
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 00:51:46 +02:00
Armin Schrenk 1b5319f706 check ps1 scripts after signing
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 00:31:19 +02:00
Armin Schrenk 33b4aa5ba3 Revert "Revert #4169 and fix ps1 files not signed"
This reverts commit 1879c6fa77.
2026-06-25 00:23:58 +02:00
Armin Schrenk 1879c6fa77 Revert #4169 and fix ps1 files not signed 2026-06-24 17:31:42 +02:00
Armin Schrenk 8b4c4dca8e Ensure also exe build uses JDK 26.0.1+8 2026-06-24 17:22:18 +02:00
Armin Schrenk 32c0327058 Update code-signing action to version 2.0.0 2026-06-24 17:22:04 +02:00
Armin SchrenkandGitHub 3be6b6eceb [skip ci] Update changelog 2026-06-24 15:51:39 +02:00
Armin Schrenk 1ff01e17f4 [skip ci] Update changelog 2026-06-24 15:43:43 +02:00
CryptobotandGitHub c932810bd8 New Crowdin updates (#4223)
New translations strings.properties

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

[ci skip]
2026-06-24 15:09:58 +02:00
Armin SchrenkandGitHub 4b6c4d1ce4 Merge pull request #4258 from cryptomator/feature/automatic-maven-profile
Automatically activate os specific maven profiles
2026-06-24 15:08:01 +02:00
Armin Schrenk 3d76ed5048 [skip ci] update readme 2026-06-24 15:04:48 +02:00
Armin Schrenk 47d2900f37 automatically activate os specific maven profiles 2026-06-24 14:55:38 +02:00
Armin SchrenkandGitHub 95f5c7aecd Merge pull request #4255 from cryptomator/feature/javafx25.0.3
Update to openjfx 25.0.3
2026-06-24 13:24:41 +02:00
Armin SchrenkandGitHub bda019f0b4 Merge branch 'develop' into feature/javafx25.0.3 2026-06-24 08:55:33 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
69e87c067e Bump the maven-dependencies group across 1 directory with 16 updates (#4257)
Bumps the maven-dependencies group with 16 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [org.cryptomator:webdav-nio-adapter](https://github.com/cryptomator/webdav-nio-adapter) | `3.0.1` | `3.0.2` |
| [org.cryptomator:integrations-api](https://github.com/cryptomator/integrations-api) | `1.8.0` | `1.9.0` |
| org.slf4j:slf4j-api | `2.0.17` | `2.0.18` |
| [ch.qos.logback:logback-core](https://github.com/qos-ch/logback) | `1.5.32` | `1.5.35` |
| [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) | `1.5.32` | `1.5.35` |
| [com.auth0:java-jwt](https://github.com/auth0/java-jwt) | `4.5.1` | `4.5.2` |
| [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) | `2.21.1` | `2.21.4` |
| com.fasterxml.jackson.datatype:jackson-datatype-jsr310 | `2.21.1` | `2.21.4` |
| [com.github.ben-manes.caffeine:caffeine](https://github.com/ben-manes/caffeine) | `3.2.3` | `3.2.4` |
| [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework) | `6.0.3` | `6.1.0` |
| [org.mockito:mockito-core](https://github.com/mockito/mockito) | `5.22.0` | `5.23.0` |
| [org.cryptomator:integrations-win](https://github.com/cryptomator/integrations-win) | `1.6.0` | `1.6.1` |
| [org.apache.maven.plugins:maven-dependency-plugin](https://github.com/apache/maven-dependency-plugin) | `3.10.0` | `3.11.0` |
| [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) | `3.5.3` | `3.5.6` |
| [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) | `0.8.14` | `0.8.15` |
| [org.owasp:dependency-check-maven](https://github.com/dependency-check/DependencyCheck) | `12.2.0` | `12.2.2` |



Updates `org.cryptomator:webdav-nio-adapter` from 3.0.1 to 3.0.2
- [Release notes](https://github.com/cryptomator/webdav-nio-adapter/releases)
- [Changelog](https://github.com/cryptomator/webdav-nio-adapter/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cryptomator/webdav-nio-adapter/compare/3.0.1...3.0.2)

Updates `org.cryptomator:integrations-api` from 1.8.0 to 1.9.0
- [Release notes](https://github.com/cryptomator/integrations-api/releases)
- [Changelog](https://github.com/cryptomator/integrations-api/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cryptomator/integrations-api/compare/1.8.0...1.9.0)

Updates `org.slf4j:slf4j-api` from 2.0.17 to 2.0.18

Updates `ch.qos.logback:logback-core` from 1.5.32 to 1.5.35
- [Release notes](https://github.com/qos-ch/logback/releases)
- [Commits](https://github.com/qos-ch/logback/compare/v_1.5.32...v_1.5.35)

Updates `ch.qos.logback:logback-classic` from 1.5.32 to 1.5.35
- [Release notes](https://github.com/qos-ch/logback/releases)
- [Commits](https://github.com/qos-ch/logback/compare/v_1.5.32...v_1.5.35)

Updates `ch.qos.logback:logback-classic` from 1.5.32 to 1.5.35
- [Release notes](https://github.com/qos-ch/logback/releases)
- [Commits](https://github.com/qos-ch/logback/compare/v_1.5.32...v_1.5.35)

Updates `com.auth0:java-jwt` from 4.5.1 to 4.5.2
- [Release notes](https://github.com/auth0/java-jwt/releases)
- [Changelog](https://github.com/auth0/java-jwt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/auth0/java-jwt/compare/4.5.1...4.5.2)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.21.1 to 2.21.4
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.21.1 to 2.21.4

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.21.1 to 2.21.4

Updates `com.github.ben-manes.caffeine:caffeine` from 3.2.3 to 3.2.4
- [Release notes](https://github.com/ben-manes/caffeine/releases)
- [Commits](https://github.com/ben-manes/caffeine/compare/v3.2.3...v3.2.4)

Updates `org.junit.jupiter:junit-jupiter` from 6.0.3 to 6.1.0
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0)

Updates `org.mockito:mockito-core` from 5.22.0 to 5.23.0
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v5.22.0...v5.23.0)

Updates `org.cryptomator:integrations-win` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/cryptomator/integrations-win/releases)
- [Changelog](https://github.com/cryptomator/integrations-win/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cryptomator/integrations-win/compare/1.6.0...1.6.1)

Updates `org.apache.maven.plugins:maven-dependency-plugin` from 3.10.0 to 3.11.0
- [Release notes](https://github.com/apache/maven-dependency-plugin/releases)
- [Commits](https://github.com/apache/maven-dependency-plugin/compare/maven-dependency-plugin-3.10.0...maven-dependency-plugin-3.11.0)

Updates `org.apache.maven.plugins:maven-surefire-plugin` from 3.5.3 to 3.5.6
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.3...surefire-3.5.6)

Updates `org.jacoco:jacoco-maven-plugin` from 0.8.14 to 0.8.15
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.14...v0.8.15)

Updates `org.owasp:dependency-check-maven` from 12.2.0 to 12.2.2
- [Release notes](https://github.com/dependency-check/DependencyCheck/releases)
- [Changelog](https://github.com/dependency-check/DependencyCheck/blob/main/CHANGELOG.md)
- [Commits](https://github.com/dependency-check/DependencyCheck/compare/v12.2.0...v12.2.2)

---
updated-dependencies:
- dependency-name: org.cryptomator:webdav-nio-adapter
  dependency-version: 3.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: org.cryptomator:integrations-api
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven-dependencies
- dependency-name: org.slf4j:slf4j-api
  dependency-version: 2.0.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: ch.qos.logback:logback-core
  dependency-version: 1.5.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: ch.qos.logback:logback-classic
  dependency-version: 1.5.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: ch.qos.logback:logback-classic
  dependency-version: 1.5.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: com.auth0:java-jwt
  dependency-version: 4.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-version: 2.21.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
  dependency-version: 2.21.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
  dependency-version: 2.21.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: com.github.ben-manes.caffeine:caffeine
  dependency-version: 3.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-version: 6.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: maven-dependencies
- dependency-name: org.mockito:mockito-core
  dependency-version: 5.23.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: maven-dependencies
- dependency-name: org.cryptomator:integrations-win
  dependency-version: 1.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: org.apache.maven.plugins:maven-dependency-plugin
  dependency-version: 3.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven-dependencies
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-version: 3.5.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-version: 0.8.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: org.owasp:dependency-check-maven
  dependency-version: 12.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-23 17:25:42 +02:00
Armin Schrenk fc7cf0da2d manually update javafx
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-23 16:38:32 +02:00
Armin SchrenkandGitHub c3de54f256 Merge pull request #4254 from cryptomator/dependabot/github_actions/github-actions-0c3dbf5312
Bump the github-actions group across 1 directory with 11 updates
2026-06-23 16:31:21 +02:00
Armin Schrenk 40f0a363c9 Update to openjfx 25.0.3 2026-06-23 11:55:42 +02:00
dependabot[bot]andGitHub 09e8cc7fdf Bump the github-actions group across 1 directory with 11 updates
Bumps the github-actions group with 11 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `6.0.2` | `7.0.0` |
| [actions/setup-java](https://github.com/actions/setup-java) | `5.2.0` | `5.3.0` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `7.0.0` | `7.0.1` |
| [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `2.5.0` | `3.0.1` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `8.0.0` | `8.0.1` |
| [rtCamp/action-slack-notify](https://github.com/rtcamp/action-slack-notify) | `2.3.3` | `2.4.0` |
| [SamKirkland/FTP-Deploy-Action](https://github.com/samkirkland/ftp-deploy-action) | `4.3.6` | `4.4.0` |
| [actions/cache](https://github.com/actions/cache) | `5.0.4` | `5.0.5` |
| [skymatic/workflows/.github/workflows/run-dependency-check.yml](https://github.com/skymatic/workflows) | `3.0.3` | `3.1.0` |
| [actions/github-script](https://github.com/actions/github-script) | `8.0.0` | `9.0.0` |
| [actions/stale](https://github.com/actions/stale) | `10.2.0` | `10.3.0` |



Updates `actions/checkout` from 6.0.2 to 7.0.0
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)

Updates `actions/setup-java` from 5.2.0 to 5.3.0
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/be666c2fcd27ec809703dec50e508c2fdc7f6654...ad2b38190b15e4d6bdf0c97fb4fca8412226d287)

Updates `actions/upload-artifact` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a)

Updates `softprops/action-gh-release` from 2.5.0 to 3.0.1
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2.5.0...718ea10b132b3b2eba29c1007bb80653f286566b)

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

Updates `rtCamp/action-slack-notify` from 2.3.3 to 2.4.0
- [Release notes](https://github.com/rtcamp/action-slack-notify/releases)
- [Commits](https://github.com/rtcamp/action-slack-notify/compare/e31e87e03dd19038e411e38ae27cbad084a90661...33ca3be66c6f378fe1610fd1d5258632dbed5e58)

Updates `SamKirkland/FTP-Deploy-Action` from 4.3.6 to 4.4.0
- [Release notes](https://github.com/samkirkland/ftp-deploy-action/releases)
- [Commits](https://github.com/samkirkland/ftp-deploy-action/compare/a51268f67f6605236975928ae28b0f7e9971d50a...110f9186c050f71550953127052e77650219c287)

Updates `actions/cache` from 5.0.4 to 5.0.5
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/668228422ae6a00e4ad889ee87cd7109ec5666a7...27d5ce7f107fe9357f9df03efb73ab90386fccae)

Updates `skymatic/workflows/.github/workflows/run-dependency-check.yml` from 3.0.3 to 3.1.0
- [Release notes](https://github.com/skymatic/workflows/releases)
- [Commits](https://github.com/skymatic/workflows/compare/957d3c2c08c56855fdac41e5afb9a7aca8c30dd9...8356563bf7b8d1c8d693f75ca487e8f57573cec9)

Updates `actions/github-script` from 8.0.0 to 9.0.0
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3)

Updates `actions/stale` from 10.2.0 to 10.3.0
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/b5d41d4e1d5dceea10e7104786b73624c18a190f...eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/setup-java
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  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: rtCamp/action-slack-notify
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: SamKirkland/FTP-Deploy-Action
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/cache
  dependency-version: 5.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: skymatic/workflows/.github/workflows/run-dependency-check.yml
  dependency-version: 3.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/github-script
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/stale
  dependency-version: 10.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-23 09:54:10 +00:00
Armin Schrenk b4ea03a7cd remove maven-surefire-junit5-tree-reporter
incompatible with surefire 3.5.4 and above
2026-06-23 11:50:15 +02:00
Armin Schrenk a30e887177 Stay on Jackson 2.21.x
LTS release supported until 2028
2026-06-23 11:47:58 +02:00
Armin SchrenkandGitHub 331f66db0c Merge pull request #4243 from cryptomator/feature/not-a-vault-dir
Feature: Improve UX when importing vaults with invalid structure
2026-06-10 11:24:00 +02:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
dd5827204c Bump Maven Wrapper distribution to Apache Maven 3.9.16 (#4247)
* Add Maven Wrapper and migrate Maven invocations

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-06-03 18:03:47 +02:00
Armin Schrenk 8bee60975e Merge branch 'develop' into feature/not-a-vault-dir 2026-06-03 16:59:19 +02:00
Armin SchrenkandGitHub f96a03ae30 Upgrade project JDK version from 25 to 26
references #4244
2026-06-03 16:35:03 +02:00
Armin SchrenkandGitHub 41ce350b61 Merge pull request #4244 from cryptomator/feature/jdk26
Feature: JDK 26
2026-06-03 10:44:40 +02:00
Armin Schrenk 64b0e63b21 cleaner errro report for invalid vaults 2026-06-03 10:41:45 +02:00
Armin Schrenk 6c62b4d293 prevent duplicates when adding same vault several times
do checking and adding on the fx thread.
2026-06-03 10:41:23 +02:00
Armin Schrenk 3f312b183e Prevent any blocking questions
when adding coffeelibs repo
2026-06-03 09:13:26 +02:00
Armin Schrenk 719a91692a cleanup 2026-06-02 20:21:16 +02:00
Armin Schrenk 85b7265b95 Place vault storage location check in separate functions 2026-06-02 20:21:02 +02:00
Armin Schrenk fbdf1b1bdb Replace openjdk by coffeelibs-jdk again
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-02 18:27:39 +02:00
Armin Schrenk ae2fd74411 Revert "test if signing issue is fixed with temurin"
This reverts commit 602c206dae.
2026-06-01 11:52:41 +02:00
Armin Schrenk 49ca7f4891 Bump jdk to 26 (or 26.0.1+8) 2026-06-01 09:52:57 +02:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>infeo
d5d992b1c2 Add dependency-check suppressions for new Jetty CVEs (#4241)
Agent-Logs-Url: https://github.com/cryptomator/cryptomator/sessions/7fec8174-cf7f-4860-9a62-1299e45a5ca6

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: infeo <9036915+infeo@users.noreply.github.com>
2026-05-18 11:23:09 +02:00
Armin Schrenk 01b30b173e enhance message 2026-05-12 12:09:50 +02:00
Armin Schrenk be4a39c628 Run validation on non-fx thread
old code can still run it on fx thread
2026-05-12 09:39:07 +02:00
Armin Schrenk e63a0e8ee8 Show user improved error message 2026-05-12 08:30:34 +02:00
Armin Schrenk 6c925d6a1f Throw more specific error about vault directory 2026-05-11 12:12:58 +02:00
Armin Schrenk 602c206dae test if signing issue is fixed with temurin 2026-05-05 11:23:14 +02:00
jose-cardoso-a22506616andGitHub 472b10a8a4 Merge pull request #4228 from jose-cardoso-a22506616/issue-3993
Closes #3993
2026-05-04 08:50:10 +02:00
108 changed files with 2156 additions and 483 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ runs:
echo "client-secret=${{ inputs.client-secret }}" >> "$GITHUB_OUTPUT" echo "client-secret=${{ inputs.client-secret }}" >> "$GITHUB_OUTPUT"
shell: bash shell: bash
- name: Sign DLLs with Azure Trusted Signing - name: Sign DLLs with Azure Trusted Signing
uses: azure/artifact-signing-action@87c2e83e6868da99d3380aa309851b32ed9a8346 # v1.1.0 uses: azure/artifact-signing-action@c7ab2a863ab5f9a846ddb8265964877ef296ee82 # v2.0.0
with: with:
files-folder: ${{ inputs.base-dir }} files-folder: ${{ inputs.base-dir }}
files-folder-filter: ${{ inputs.file-extensions }} files-folder-filter: ${{ inputs.file-extensions }}
+2 -4
View File
@@ -10,10 +10,8 @@ updates:
- dependency-name: "jakarta.inject:jakarta.inject-api" - dependency-name: "jakarta.inject:jakarta.inject-api"
versions: ["2.0.1.MR"] versions: ["2.0.1.MR"]
- dependency-name: "org.openjfx:*" - dependency-name: "org.openjfx:*"
update-types: ["version-update:semver-major"] - dependency-name: "com.fasterxml.jackson.*"
# due to https://github.com/fabriciorby/maven-surefire-junit5-tree-reporter/issues/68 versions: [ "[2.22,)" ] # 2.21.x is LTS, see https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.21
- dependency-name: "org.apache.maven.plugins:maven-surefire-plugin"
versions: [ "3.5.4", "3.5.5" ]
groups: groups:
maven-dependencies: maven-dependencies:
patterns: patterns:
+1 -1
View File
@@ -123,7 +123,7 @@ flowchart TD
| Job | Runs on | Description | | Job | Runs on | Description |
|-----|---------|-------------| |-----|---------|-------------|
| **get-version** | ubuntu | Parses the tag into semver components (`semVerNum`, `semVerSuffix`, `revNum`, `versionType`). The release is aborted if not an alpha, beta, rc or 'stable' release. | | **get-version** | ubuntu | Parses the tag into semver components (`semVerNum`, `semVerSuffix`, `revNum`, `versionType`). The release is aborted if not an alpha, beta, rc or 'stable' release. |
| **create-release-draft** | ubuntu | Checks out the repo, verifies the tag is **signed** and lives on a `main` or `release/*` branch. Runs `mvn verify` (with `xvfb-run`). Creates a GitHub Release **draft** using the [release body template](../release-body.md.template). Downloads and GPG-signs the source tarball. | | **create-release-draft** | ubuntu | Checks out the repo, verifies the tag is **signed** and lives on a `main` or `release/*` branch. Runs `./mvnw verify` (with `xvfb-run`). Creates a GitHub Release **draft** using the [release body template](../release-body.md.template). Downloads and GPG-signs the source tarball. |
| **build-exe-and-msi** | windows | Calls [`win-exe.yml`](win-exe.yml). Builds the MSI and EXE bundle installer for x64 Windows. Code-signed via Azure Trusted Signing, GPG-signed, and uploaded to the draft release. Outputs SHA-256 checksums. | | **build-exe-and-msi** | windows | Calls [`win-exe.yml`](win-exe.yml). Builds the MSI and EXE bundle installer for x64 Windows. Code-signed via Azure Trusted Signing, GPG-signed, and uploaded to the draft release. Outputs SHA-256 checksums. |
| **build-dmg-arm64** | macos-15 | Calls [`mac-dmg.yml`](mac-dmg.yml). Builds the DMG for Apple Silicon. Code-signed, notarized with Apple, GPG-signed, and uploaded. Outputs SHA-256 checksum. | | **build-dmg-arm64** | macos-15 | Calls [`mac-dmg.yml`](mac-dmg.yml). Builds the DMG for Apple Silicon. Code-signed, notarized with Apple, GPG-signed, and uploaded. Outputs SHA-256 checksum. |
| **build-dmg-x64** | macos-15-large | Calls [`mac-dmg-x64.yml`](mac-dmg-x64.yml). Same as above but for Intel Macs. Uses macFUSE instead of FUSE-T. | | **build-dmg-x64** | macos-15-large | Calls [`mac-dmg-x64.yml`](mac-dmg-x64.yml). Same as above but for Intel Macs. Uses macFUSE instead of FUSE-T. |
+13 -13
View File
@@ -50,7 +50,7 @@ on:
env: env:
JAVA_DIST: 'temurin' JAVA_DIST: 'temurin'
JAVA_VERSION: '25.0.2+10.0.LTS' JAVA_VERSION: '26.0.1+8'
VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}} VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}}
REVISION_NUM: ${{ inputs.revisionNum || '0' }} REVISION_NUM: ${{ inputs.revisionNum || '0' }}
VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}} VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}}
@@ -66,18 +66,18 @@ jobs:
include: include:
- os: ubuntu-latest - os: ubuntu-latest
arch: x86_64 arch: x86_64
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-x64_bin-jmods.zip' openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_linux-x64_bin-jmods.zip'
openjfx-sha: 'e0a9c29d8cf3af9b8b48848b43f87b5785bc107c53a951b19668ce05842bba1b' openjfx-sha: '47035c653863a8e4be3dc6f142b8dbd84b4bb1efc9a8cbc68413e6a5ff5e9f50'
appimagetool-sha: 'ed4ce84f0d9caff66f50bcca6ff6f35aae54ce8135408b3fa33abfc3cb384eb0' appimagetool-sha: 'ed4ce84f0d9caff66f50bcca6ff6f35aae54ce8135408b3fa33abfc3cb384eb0'
- os: ubuntu-24.04-arm - os: ubuntu-24.04-arm
arch: aarch64 arch: aarch64
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-aarch64_bin-jmods.zip' openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_linux-aarch64_bin-jmods.zip'
openjfx-sha: 'c3408f818693cce09e59829a8e862a82c7695fdfcd585c41cfd527f5fc3fe646' openjfx-sha: 'e3fd682354346845d2944a2da2b1ff2b6cb9259d92027f2f9c121b9b93c5e42f'
appimagetool-sha: 'f0837e7448a0c1e4e650a93bb3e85802546e60654ef287576f46c71c126a9158' appimagetool-sha: 'f0837e7448a0c1e4e650a93bb3e85802546e60654ef287576f46c71c126a9158'
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Java - name: Setup Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ env.JAVA_DIST }} distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }} java-version: ${{ env.JAVA_VERSION }}
@@ -95,7 +95,7 @@ jobs:
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1) JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@} JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*} JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) POM_JFX_VERSION=$(./mvnw help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@} POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*} POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
@@ -104,9 +104,9 @@ jobs:
exit 1 exit 1
fi fi
- name: Set version - name: Set version
run : mvn versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}" run : ./mvnw versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}"
- name: Run maven - name: Run maven
run: mvn -B clean package -Plinux -DskipTests run: ./mvnw -B clean package -DskipTests
- name: Patch target dir - name: Patch target dir
run: | run: |
cp LICENSE.txt target cp LICENSE.txt target
@@ -210,7 +210,7 @@ jobs:
gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-*.AppImage gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-*.AppImage
gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-*.AppImage.zsync gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-*.AppImage.zsync
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: appimage-${{ matrix.arch }} name: appimage-${{ matrix.arch }}
path: | path: |
@@ -220,7 +220,7 @@ jobs:
if-no-files-found: error if-no-files-found: error
- name: Publish AppImage on GitHub Releases - name: Publish AppImage on GitHub Releases
if: inputs.upload-to-draft if: inputs.upload-to-draft
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1 uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
with: with:
draft: true draft: true
fail_on_unmatched_files: true fail_on_unmatched_files: true
@@ -240,7 +240,7 @@ jobs:
aarch64-sha256sum: ${{ steps.sha256sum.outputs.aarch64-sha256sum }} aarch64-sha256sum: ${{ steps.sha256sum.outputs.aarch64-sha256sum }}
steps: steps:
- name: Download AppImage artifacts - name: Download AppImage artifacts
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with: with:
pattern: appimage-* pattern: appimage-*
path: appimage-artifacts path: appimage-artifacts
+2 -2
View File
@@ -33,7 +33,7 @@ jobs:
pacman-key --populate archlinux pacman-key --populate archlinux
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip github-cli curl pacman-contrib pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip github-cli curl pacman-contrib
- name: Checkout cryptomator/aur-bin - name: Checkout cryptomator/aur-bin
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
repository: 'cryptomator/aur-bin' repository: 'cryptomator/aur-bin'
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }} token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
@@ -102,7 +102,7 @@ jobs:
DIST_VERSION: ${{ steps.pkgrel.outputs.dist-version }} DIST_VERSION: ${{ steps.pkgrel.outputs.dist-version }}
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }} GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Slack Notification - name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3 uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
env: env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_USERNAME: 'Cryptobot' SLACK_USERNAME: 'Cryptobot'
+3 -3
View File
@@ -51,7 +51,7 @@ jobs:
- name: Download file - name: Download file
run: curl --silent --fail-with-body --proto "=https" -L "${INPUT_URL}" -o "${{steps.extractName.outputs.fileName}}" run: curl --silent --fail-with-body --proto "=https" -L "${INPUT_URL}" -o "${{steps.extractName.outputs.fileName}}"
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: ${{ steps.extractName.outputs.fileName }} name: ${{ steps.extractName.outputs.fileName }}
path: ${{ steps.extractName.outputs.fileName }} path: ${{ steps.extractName.outputs.fileName }}
@@ -68,7 +68,7 @@ jobs:
name: ${{ needs.download-file.outputs.fileName }} name: ${{ needs.download-file.outputs.fileName }}
path: upload path: upload
- name: Upload to Kaspersky - name: Upload to Kaspersky
uses: SamKirkland/FTP-Deploy-Action@a51268f67f6605236975928ae28b0f7e9971d50a # v4.6.3 uses: SamKirkland/FTP-Deploy-Action@110f9186c050f71550953127052e77650219c287 # v4.6.3
with: with:
protocol: ftps protocol: ftps
server: allowlist.kaspersky-labs.com server: allowlist.kaspersky-labs.com
@@ -78,7 +78,7 @@ jobs:
local-dir: ./upload/ local-dir: ./upload/
allowlist-avast: allowlist-avast:
name: Anti Virus Allowlisting Avast name: Anti Virus Allowlisting Avast
runs-on: ubuntu-slim runs-on: ubuntu
needs: download-file needs: download-file
if: inputs.avast if: inputs.avast
steps: steps:
+5 -5
View File
@@ -11,7 +11,7 @@ on:
env: env:
JAVA_DIST: 'temurin' JAVA_DIST: 'temurin'
JAVA_VERSION: 25 JAVA_VERSION: 26
defaults: defaults:
run: run:
@@ -22,14 +22,14 @@ jobs:
name: Compile and Test name: Compile and Test
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 - uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ env.JAVA_DIST }} distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }} java-version: ${{ env.JAVA_VERSION }}
cache: 'maven' cache: 'maven'
- name: Cache SonarCloud packages - name: Cache SonarCloud packages
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with: with:
path: ~/.sonar/cache path: ~/.sonar/cache
key: ${{ runner.os }}-sonar key: ${{ runner.os }}-sonar
@@ -37,7 +37,7 @@ jobs:
- name: Build and Test - name: Build and Test
run: > run: >
xvfb-run xvfb-run
mvn -B verify ./mvnw -B verify
jacoco:report jacoco:report
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
-Pcoverage -Pcoverage
+2 -2
View File
@@ -26,7 +26,7 @@ jobs:
run: echo 'JDK_MAJOR_VERSION=${{ env.JDK_VERSION }}'.substring(0,2) >> "$env:GITHUB_ENV" run: echo 'JDK_MAJOR_VERSION=${{ env.JDK_VERSION }}'.substring(0,2) >> "$env:GITHUB_ENV"
shell: pwsh shell: pwsh
- name: Checkout latest JDK ${{ env.JDK_MAJOR_VERSION }} - name: Checkout latest JDK ${{ env.JDK_MAJOR_VERSION }}
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
java-version: ${{ env.JDK_MAJOR_VERSION}} java-version: ${{ env.JDK_MAJOR_VERSION}}
distribution: ${{ env.JDK_VENDOR }} distribution: ${{ env.JDK_VENDOR }}
@@ -70,7 +70,7 @@ jobs:
} }
- name: Notify - name: Notify
if: steps.determine.outputs.UPDATE_AVAILABLE == 'true' if: steps.determine.outputs.UPDATE_AVAILABLE == 'true'
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3 uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
env: env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_USERNAME: 'Cryptobot' SLACK_USERNAME: 'Cryptobot'
+12 -11
View File
@@ -25,12 +25,12 @@ on:
env: env:
JAVA_DIST: 'temurin' JAVA_DIST: 'temurin'
JAVA_VERSION: '25.0.2+10.0.LTS' JAVA_VERSION: '26.0.1+8'
DEB_BUILD_DEPENDS: 'debhelper (>=10), openjdk-25-jdk (>= 25+36), libgtk-3-0 (>= 3.20.0), libxxf86vm1, libgl1' DEB_BUILD_DEPENDS: 'debhelper (>=10), coffeelibs-jdk-26 (>= 26.0.1+8-0ppa1), libgtk-3-0 (>= 3.20.0), libxxf86vm1, libgl1'
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-x64_bin-jmods.zip' OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_linux-x64_bin-jmods.zip'
OPENJFX_JMODS_AMD64_HASH: 'e0a9c29d8cf3af9b8b48848b43f87b5785bc107c53a951b19668ce05842bba1b' OPENJFX_JMODS_AMD64_HASH: '47035c653863a8e4be3dc6f142b8dbd84b4bb1efc9a8cbc68413e6a5ff5e9f50'
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-aarch64_bin-jmods.zip' OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_linux-aarch64_bin-jmods.zip'
OPENJFX_JMODS_AARCH64_HASH: 'c3408f818693cce09e59829a8e862a82c7695fdfcd585c41cfd527f5fc3fe646' OPENJFX_JMODS_AARCH64_HASH: 'e3fd682354346845d2944a2da2b1ff2b6cb9259d92027f2f9c121b9b93c5e42f'
jobs: jobs:
get-version: get-version:
@@ -45,7 +45,7 @@ jobs:
env: env:
INPUT_PPAVER: ${{ inputs.ppaver }} INPUT_PPAVER: ${{ inputs.ppaver }}
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- id: deb-version - id: deb-version
name: Determine deb-version name: Determine deb-version
run: | run: |
@@ -56,20 +56,21 @@ jobs:
fi fi
- name: Install build tools - name: Install build tools
run: | run: |
sudo add-apt-repository -y ppa:coffeelibs/openjdk
sudo apt-get update sudo apt-get update
sudo apt-get install devscripts dput sudo apt-get install devscripts dput
sudo apt-get satisfy "${DEB_BUILD_DEPENDS}" sudo apt-get satisfy "${DEB_BUILD_DEPENDS}"
env: env:
DEB_BUILD_DEPENDS: ${{ env.DEB_BUILD_DEPENDS }} DEB_BUILD_DEPENDS: ${{ env.DEB_BUILD_DEPENDS }}
- name: Setup Java - name: Setup Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ env.JAVA_DIST }} distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }} java-version: ${{ env.JAVA_VERSION }}
check-latest: true check-latest: true
cache: 'maven' cache: 'maven'
- name: Run maven - name: Run maven
run: mvn -B clean package -Plinux -DskipTests run: ./mvnw -B clean package -DskipTests
- name: Download OpenJFX jmods - name: Download OpenJFX jmods
id: download-jmods id: download-jmods
run: | run: |
@@ -89,7 +90,7 @@ jobs:
JMOD_VERSION_AARCH64=$(jmod describe jmods/aarch64/javafx.base.jmod | head -1) JMOD_VERSION_AARCH64=$(jmod describe jmods/aarch64/javafx.base.jmod | head -1)
JMOD_VERSION_AARCH64=${JMOD_VERSION_AARCH64#*@} JMOD_VERSION_AARCH64=${JMOD_VERSION_AARCH64#*@}
JMOD_VERSION_AARCH64=${JMOD_VERSION_AARCH64%%.*} JMOD_VERSION_AARCH64=${JMOD_VERSION_AARCH64%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) POM_JFX_VERSION=$(./mvnw help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@} POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*} POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
@@ -145,7 +146,7 @@ jobs:
run: | run: |
gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator_*_amd64.deb gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator_*_amd64.deb
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: linux-deb-package name: linux-deb-package
path: | path: |
+2 -2
View File
@@ -7,11 +7,11 @@ on:
jobs: jobs:
check-dependencies: check-dependencies:
uses: skymatic/workflows/.github/workflows/run-dependency-check.yml@957d3c2c08c56855fdac41e5afb9a7aca8c30dd9 # v3.0.3 uses: skymatic/workflows/.github/workflows/run-dependency-check.yml@8356563bf7b8d1c8d693f75ca487e8f57573cec9 # v3.1.0
with: with:
runner-os: 'ubuntu-latest' runner-os: 'ubuntu-latest'
java-distribution: 'temurin' java-distribution: 'temurin'
java-version: 25 java-version: 26
secrets: secrets:
nvd-api-key: ${{ secrets.NVD_API_KEY }} nvd-api-key: ${{ secrets.NVD_API_KEY }}
ossindex-username: ${{ secrets.OSSINDEX_USERNAME }} ossindex-username: ${{ secrets.OSSINDEX_USERNAME }}
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
steps: steps:
- name: Get download count of latest releases - name: Get download count of latest releases
id: get-stats id: get-stats
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with: with:
script: | script: |
const query = `query($owner:String!, $name:String!) { const query = `query($owner:String!, $name:String!) {
+7 -7
View File
@@ -7,7 +7,7 @@ on:
env: env:
JAVA_DIST: 'temurin' JAVA_DIST: 'temurin'
JAVA_VERSION: '25.0.2+10.0.LTS' JAVA_VERSION: '26.0.1+8'
defaults: defaults:
run: run:
@@ -25,24 +25,24 @@ jobs:
needs: get-version needs: get-version
if: needs.get-version.outputs.versionType != 'unknown' if: needs.get-version.outputs.versionType != 'unknown'
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Check the git tag is signed - name: Check the git tag is signed
run: git cat-file -p "${GITHUB_REF_NAME}" | grep "BEGIN SSH SIGNATURE" run: git cat-file -p "${GITHUB_REF_NAME}" | grep "BEGIN SSH SIGNATURE"
- name: Check the git tag is on release or main branch - name: Check the git tag is on release or main branch
run: git branch -r --contains "${GITHUB_REF_NAME}" | grep -E '^\s*origin/(main|release/.*)\s*$' run: git branch -r --contains "${GITHUB_REF_NAME}" | grep -E '^\s*origin/(main|release/.*)\s*$'
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 - uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ env.JAVA_DIST }} distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }} java-version: ${{ env.JAVA_VERSION }}
cache: 'maven' cache: 'maven'
- name: Build and Test - name: Build and Test
run: xvfb-run mvn -B verify -Plinux run: xvfb-run ./mvnw -B verify
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
- name: Draft a release - name: Draft a release
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0 uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
with: with:
draft: true draft: true
discussion_category_name: releases discussion_category_name: releases
@@ -60,7 +60,7 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }} GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Publish asc on GitHub Releases - name: Publish asc on GitHub Releases
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0 uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
with: with:
draft: true draft: true
fail_on_unmatched_files: true fail_on_unmatched_files: true
@@ -112,7 +112,7 @@ jobs:
SEMVER: ${{ needs.get-version.outputs.semVerStr }} SEMVER: ${{ needs.get-version.outputs.semVerStr }}
GH_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }} GH_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Compute source tarball SHA256 - name: Compute source tarball SHA256
id: src-sha256 id: src-sha256
run: | run: |
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
- name: Query Discussion Data - name: Query Discussion Data
if: github.event_name == 'discussion_comment' || github.event_name == 'discussion' && github.event.action != 'deleted' if: github.event_name == 'discussion_comment' || github.event_name == 'discussion' && github.event.action != 'deleted'
id: query-data id: query-data
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with: with:
script: | script: |
const query = `query ($owner: String!, $name: String!, $discussionNumber: Int!) { const query = `query ($owner: String!, $name: String!, $discussionNumber: Int!) {
+4 -4
View File
@@ -26,7 +26,7 @@ on:
env: env:
JAVA_DIST: 'temurin' JAVA_DIST: 'temurin'
JAVA_VERSION: 25 JAVA_VERSION: 26
jobs: jobs:
determine-version: determine-version:
@@ -39,11 +39,11 @@ jobs:
revNum: ${{ steps.versions.outputs.revNum }} revNum: ${{ steps.versions.outputs.revNum }}
type: ${{ steps.versions.outputs.type}} type: ${{ steps.versions.outputs.type}}
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Setup Java - name: Setup Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ env.JAVA_DIST }} distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }} java-version: ${{ env.JAVA_VERSION }}
@@ -56,7 +56,7 @@ jobs:
elif [[ "${VERSION_STRING}" =~ [0-9]+\.[0-9]+\.[0-9]+.* ]]; then elif [[ "${VERSION_STRING}" =~ [0-9]+\.[0-9]+\.[0-9]+.* ]]; then
SEM_VER_STR="${VERSION_STRING}" SEM_VER_STR="${VERSION_STRING}"
else else
SEM_VER_STR=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout` SEM_VER_STR=`./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout`
fi fi
SEM_VER_NUM=$(echo ${SEM_VER_STR} | sed -E 's/([0-9]+\.[0-9]+\.[0-9]+).*/\1/') SEM_VER_NUM=$(echo ${SEM_VER_STR} | sed -E 's/([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
+8 -8
View File
@@ -49,16 +49,16 @@ jobs:
env: env:
SRC_GIT_SHA: ${{ inputs.src-tag || github.sha}} SRC_GIT_SHA: ${{ inputs.src-tag || github.sha}}
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
repository: flathub/org.cryptomator.Cryptomator repository: flathub/org.cryptomator.Cryptomator
submodules: true submodules: true
- name: Checkout build script - name: Checkout build script
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
path: build-scripts path: build-scripts
- name: Checkout app source - name: Checkout app source
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
path: cryptomator path: cryptomator
ref: ${{ env.SRC_GIT_SHA }} ref: ${{ env.SRC_GIT_SHA }}
@@ -77,7 +77,7 @@ jobs:
commit: ${{ env.SRC_GIT_SHA }} commit: ${{ env.SRC_GIT_SHA }}
- name: Copy build script for upload - name: Copy build script for upload
run: cp org.cryptomator.Cryptomator.yaml org.cryptomator.Cryptomator.${{matrix.variant.arch}}.yaml run: cp org.cryptomator.Cryptomator.yaml org.cryptomator.Cryptomator.${{matrix.variant.arch}}.yaml
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
archive: false archive: false
if-no-files-found: error if-no-files-found: error
@@ -129,7 +129,7 @@ jobs:
EOF EOF
done < maven-dependency-files-javafx.txt done < maven-dependency-files-javafx.txt
) > javafx-maven-dependencies-${{ matrix.variant.arch }}.yaml ) > javafx-maven-dependencies-${{ matrix.variant.arch }}.yaml
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: maven-sources-${{ matrix.variant.arch }} name: maven-sources-${{ matrix.variant.arch }}
if-no-files-found: error if-no-files-found: error
@@ -176,7 +176,7 @@ jobs:
fi fi
env: env:
SRC_TAG: ${{ inputs.src-tag }} SRC_TAG: ${{ inputs.src-tag }}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
repository: flathub/org.cryptomator.Cryptomator repository: flathub/org.cryptomator.Cryptomator
submodules: true #TODO: Update submodule! submodules: true #TODO: Update submodule!
@@ -184,7 +184,7 @@ jobs:
- name: Checkout release branch - name: Checkout release branch
run: | run: |
git checkout -b release/${{ needs.get-version.outputs.semVerStr }} git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
path: cryptomator path: cryptomator
- name: Download source tarball and compute checksum - name: Download source tarball and compute checksum
@@ -250,7 +250,7 @@ jobs:
env: env:
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }} GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Slack Notification - name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3 uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
if: github.event_name == 'release' if: github.event_name == 'release'
env: env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
+5 -5
View File
@@ -44,7 +44,7 @@ jobs:
pacman-key --init pacman-key --init
pacman-key --populate archlinux pacman-key --populate archlinux
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
path: cryptomator path: cryptomator
- name: Create build user - name: Create build user
@@ -69,13 +69,13 @@ jobs:
sudo -u builder sudo -u builder
env PKGDEST="$PKGDEST" SRCDEST="$SRCDEST" env PKGDEST="$PKGDEST" SRCDEST="$SRCDEST"
makepkg --syncdeps --cleanbuild --noconfirm --log makepkg --syncdeps --cleanbuild --noconfirm --log
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: arch-package name: arch-package
if-no-files-found: error if-no-files-found: error
path: | path: |
${{ env.PKGDEST }}/*.pkg.tar.zst ${{ env.PKGDEST }}/*.pkg.tar.zst
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: pkgbuild-file name: pkgbuild-file
if-no-files-found: error if-no-files-found: error
@@ -108,7 +108,7 @@ jobs:
env: env:
TAG: ${{ needs.get-version.outputs.semVerStr || github.event.release.tag_name }} TAG: ${{ needs.get-version.outputs.semVerStr || github.event.release.tag_name }}
- name: Checkout cryptomator/aur repo - name: Checkout cryptomator/aur repo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with: with:
repository: 'cryptomator/aur' repository: 'cryptomator/aur'
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }} token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
@@ -188,7 +188,7 @@ jobs:
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }} GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Slack Notification - name: Slack Notification
if: github.event_name == 'release' if: github.event_name == 'release'
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3 uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
env: env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_USERNAME: 'Cryptobot' SLACK_USERNAME: 'Cryptobot'
+11 -11
View File
@@ -56,7 +56,7 @@ on:
env: env:
JAVA_DIST: 'temurin' JAVA_DIST: 'temurin'
JAVA_VERSION: '25.0.2+10.0.LTS' JAVA_VERSION: '26.0.1+8'
VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}} VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}}
REVISION_NUM: ${{ inputs.revisionNum || '0' }} REVISION_NUM: ${{ inputs.revisionNum || '0' }}
VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}} VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}}
@@ -76,12 +76,12 @@ jobs:
architecture: x64 architecture: x64
output-suffix: x64 output-suffix: x64
fuse-lib: macFUSE fuse-lib: macFUSE
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_osx-x64_bin-jmods.zip' openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_osx-x64_bin-jmods.zip'
openjfx-sha: '0b4d8463f03901b7425d94628e4116b7078abb8dd540fbec415266fac20bda5c' openjfx-sha: '3512fabe43aee467538d329cfbbaab3c53dff2a810f0d54e381f461d5e0fac43'
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Java - name: Setup Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ env.JAVA_DIST }} distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }} java-version: ${{ env.JAVA_VERSION }}
@@ -100,7 +100,7 @@ jobs:
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1) JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@} JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*} JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) POM_JFX_VERSION=$(./mvnw help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@} POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*} POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
@@ -109,9 +109,9 @@ jobs:
exit 1 exit 1
fi fi
- name: Set version - name: Set version
run : mvn versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}" run : ./mvnw versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}"
- name: Run maven - name: Run maven
run: mvn -B clean package -Pmac -DskipTests run: ./mvnw -B clean package -Pmac -DskipTests
- name: Patch target dir - name: Patch target dir
run: | run: |
cp LICENSE.txt target cp LICENSE.txt target
@@ -185,7 +185,7 @@ jobs:
PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }} PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }}
- name: Generate license for dmg - name: Generate license for dmg
run: > run: >
mvn -B license:add-third-party ./mvnw -B license:add-third-party
-Dlicense.thirdPartyFilename=license.rtf -Dlicense.thirdPartyFilename=license.rtf
-Dlicense.outputDirectory=dist/mac/dmg/resources -Dlicense.outputDirectory=dist/mac/dmg/resources
-Dlicense.fileTemplate=dist/mac/dmg/resources/licenseTemplate.ftl -Dlicense.fileTemplate=dist/mac/dmg/resources/licenseTemplate.ftl
@@ -303,7 +303,7 @@ jobs:
run: security delete-keychain $RUNNER_TEMP/codesign.keychain-db run: security delete-keychain $RUNNER_TEMP/codesign.keychain-db
continue-on-error: true continue-on-error: true
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: dmg-${{ matrix.output-suffix }} name: dmg-${{ matrix.output-suffix }}
path: | path: |
@@ -312,7 +312,7 @@ jobs:
if-no-files-found: error if-no-files-found: error
- name: Publish dmg on GitHub Releases - name: Publish dmg on GitHub Releases
if: inputs.upload-to-draft if: inputs.upload-to-draft
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1 uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
with: with:
draft: true draft: true
fail_on_unmatched_files: true fail_on_unmatched_files: true
+11 -11
View File
@@ -54,7 +54,7 @@ on:
env: env:
JAVA_DIST: 'temurin' JAVA_DIST: 'temurin'
JAVA_VERSION: '25.0.2+10.0.LTS' JAVA_VERSION: '26.0.1+8'
VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}} VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}}
REVISION_NUM: ${{ inputs.revisionNum || '0' }} REVISION_NUM: ${{ inputs.revisionNum || '0' }}
VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}} VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}}
@@ -74,12 +74,12 @@ jobs:
architecture: aarch64 architecture: aarch64
output-suffix: arm64 output-suffix: arm64
fuse-lib: FUSE-T fuse-lib: FUSE-T
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_osx-aarch64_bin-jmods.zip' openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_osx-aarch64_bin-jmods.zip'
openjfx-sha: '4cd258001c75af7047005c5c891e2400ed11d24fbb09412324c0cbaf8b503c5a' openjfx-sha: 'a52014d625b8b04e57fd71650f881c1397542b4018e1b04f1b4e66c8800a1f34'
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Java - name: Setup Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ env.JAVA_DIST }} distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }} java-version: ${{ env.JAVA_VERSION }}
@@ -98,7 +98,7 @@ jobs:
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1) JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@} JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*} JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) POM_JFX_VERSION=$(./mvnw help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@} POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*} POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
@@ -107,9 +107,9 @@ jobs:
exit 1 exit 1
fi fi
- name: Set version - name: Set version
run : mvn versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}" run : ./mvnw versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}"
- name: Run maven - name: Run maven
run: mvn -B clean package -Pmac -DskipTests run: ./mvnw -B clean package -Pmac -DskipTests
- name: Patch target dir - name: Patch target dir
run: | run: |
cp LICENSE.txt target cp LICENSE.txt target
@@ -184,7 +184,7 @@ jobs:
PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }} PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }}
- name: Generate license for dmg - name: Generate license for dmg
run: > run: >
mvn -B license:add-third-party ./mvnw -B license:add-third-party
-Dlicense.thirdPartyFilename=license.rtf -Dlicense.thirdPartyFilename=license.rtf
-Dlicense.outputDirectory=dist/mac/dmg/resources -Dlicense.outputDirectory=dist/mac/dmg/resources
-Dlicense.fileTemplate=dist/mac/dmg/resources/licenseTemplate.ftl -Dlicense.fileTemplate=dist/mac/dmg/resources/licenseTemplate.ftl
@@ -302,7 +302,7 @@ jobs:
run: security delete-keychain $RUNNER_TEMP/codesign.keychain-db run: security delete-keychain $RUNNER_TEMP/codesign.keychain-db
continue-on-error: true continue-on-error: true
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: dmg-${{ matrix.output-suffix }} name: dmg-${{ matrix.output-suffix }}
path: | path: |
@@ -311,7 +311,7 @@ jobs:
if-no-files-found: error if-no-files-found: error
- name: Publish dmg on GitHub Releases - name: Publish dmg on GitHub Releases
if: inputs.upload-to-draft if: inputs.upload-to-draft
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1 uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
with: with:
draft: true draft: true
fail_on_unmatched_files: true fail_on_unmatched_files: true
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
issues: write issues: write
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0
with: with:
days-before-stale: 14 days-before-stale: 14
days-before-close: 0 days-before-close: 0
+5 -5
View File
@@ -6,10 +6,10 @@ on:
jobs: jobs:
notify: notify:
runs-on: ubuntu-slim runs-on: ubuntu
steps: steps:
- name: Notify about DEB build - name: Notify about DEB build
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3 uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
env: env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_USERNAME: 'Cryptobot' SLACK_USERNAME: 'Cryptobot'
@@ -21,7 +21,7 @@ jobs:
SLACK_FOOTER: '' SLACK_FOOTER: ''
MSG_MINIMAL: true MSG_MINIMAL: true
- name: Notify about latest-version update - name: Notify about latest-version update
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3 uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
env: env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_USERNAME: 'Cryptobot' SLACK_USERNAME: 'Cryptobot'
@@ -102,10 +102,10 @@ jobs:
name: Notify for winget-release name: Notify for winget-release
if: needs.get-asset-urls.outputs.is-windows-release == 'true' && needs.check-release.outputs.release-kind == 'stable' if: needs.get-asset-urls.outputs.is-windows-release == 'true' && needs.check-release.outputs.release-kind == 'stable'
needs: [check-release, get-asset-urls] needs: [check-release, get-asset-urls]
runs-on: ubuntu-slim runs-on: ubuntu
steps: steps:
- name: Slack Notification - name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3 uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
env: env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_USERNAME: 'Cryptobot' SLACK_USERNAME: 'Cryptobot'
+4 -4
View File
@@ -5,7 +5,7 @@ on:
env: env:
JAVA_DIST: 'temurin' JAVA_DIST: 'temurin'
JAVA_VERSION: 25 JAVA_VERSION: 26
defaults: defaults:
run: run:
@@ -16,11 +16,11 @@ jobs:
name: Compile and Test name: Compile and Test
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 - uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ env.JAVA_DIST }} distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }} java-version: ${{ env.JAVA_VERSION }}
cache: 'maven' cache: 'maven'
- name: Build and Test - name: Build and Test
run: xvfb-run mvn -B clean install jacoco:report -Pcoverage run: xvfb-run ./mvnw -B clean install jacoco:report -Pcoverage
+5 -20
View File
@@ -12,16 +12,16 @@ defaults:
env: env:
JAVA_DIST: 'temurin' JAVA_DIST: 'temurin'
JAVA_VERSION: 25 JAVA_VERSION: 26
jobs: jobs:
check-preconditions: check-preconditions:
name: Validate commits pushed to release/hotfix branch to fulfill release requirements name: Validate commits pushed to release/hotfix branch to fulfill release requirements
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Java - name: Setup Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ env.JAVA_DIST }} distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }} java-version: ${{ env.JAVA_VERSION }}
@@ -36,7 +36,7 @@ jobs:
exit 1 exit 1
fi fi
if [[ ${SEM_VER_STR} == `mvn help:evaluate -Dexpression=project.version -q -DforceStdout` ]]; then if [[ ${SEM_VER_STR} == `./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout` ]]; then
echo "semVerStr=${SEM_VER_STR}" >> $GITHUB_OUTPUT echo "semVerStr=${SEM_VER_STR}" >> $GITHUB_OUTPUT
else else
echo "Version not set in POM" echo "Version not set in POM"
@@ -48,19 +48,4 @@ jobs:
if ! grep -q "<release date=\".*\" version=\"${{ steps.validate-pom-version.outputs.semVerStr }}\">" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml; then if ! grep -q "<release date=\".*\" version=\"${{ steps.validate-pom-version.outputs.semVerStr }}\">" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml; then
echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml" echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml"
exit 1 exit 1
fi fi
- name: Cache NVD DB
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: ~/.m2/repository/org/owasp/dependency-check-data/
key: dependency-check-${{ github.run_id }}
restore-keys: |
dependency-check
env:
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5
- name: Run org.owasp:dependency-check plugin
id: dependency-check
continue-on-error: true
run: mvn -B verify -Pdependency-check -DskipTests
env:
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
issues: write issues: write
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0
with: with:
days-before-stale: 365 days-before-stale: 365
days-before-close: 90 days-before-close: 90
+29 -17
View File
@@ -60,8 +60,8 @@ env:
VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}} VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}}
REVISION_NUM: ${{ inputs.revisionNum || '0' }} REVISION_NUM: ${{ inputs.revisionNum || '0' }}
VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}} VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}}
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_windows-x64_bin-jmods.zip' OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_windows-x64_bin-jmods.zip'
OPENJFX_JMODS_AMD64_HASH: '33d878dfac85590c4d77c518ed413e512d34a8479d90132b230a7ddd173576b3' OPENJFX_JMODS_AMD64_HASH: '0bf9b83260b85607a9ba200124debabd9cdb013cbc0d659e62a20192a7137907'
WINFSP_MSI: 'https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi' WINFSP_MSI: 'https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi'
WINFSP_MSI_HASH: '073a70e00f77423e34bed98b86e600def93393ba5822204fac57a29324db9f7a' WINFSP_MSI_HASH: '073a70e00f77423e34bed98b86e600def93393ba5822204fac57a29324db9f7a'
WINFSP_UNINSTALLER: 'https://github.com/cryptomator/winfsp-uninstaller/releases/latest/download/winfsp-uninstaller.exe' WINFSP_UNINSTALLER: 'https://github.com/cryptomator/winfsp-uninstaller/releases/latest/download/winfsp-uninstaller.exe'
@@ -82,13 +82,13 @@ jobs:
include: include:
- arch: x64 - arch: x64
os: windows-latest os: windows-latest
java-dist: 'zulu' #cannot use temurin, see https://github.com/cryptomator/cryptomator/issues/3824#issuecomment-2829827427 java-dist: 'temurin'
java-version: '26.0.1+8' java-version: '26.0.1+8'
java-package: 'jdk' java-package: 'jdk'
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Java - name: Setup Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ matrix.java-dist }} distribution: ${{ matrix.java-dist }}
java-version: ${{ matrix.java-version }} java-version: ${{ matrix.java-version }}
@@ -119,7 +119,7 @@ jobs:
JMOD_VERSION_AMD64=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1) JMOD_VERSION_AMD64=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64#*@} JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64#*@}
JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64%%.*} JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) POM_JFX_VERSION=$(./mvnw help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@} POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*} POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
@@ -128,9 +128,9 @@ jobs:
exit 1 exit 1
fi fi
- name: Set version - name: Set version
run: mvn versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}" run: ./mvnw versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}"
- name: Run maven - name: Run maven
run: mvn -B clean package -Pwin -DskipTests run: ./mvnw -B clean package -Pwin -DskipTests
- name: Patch target dir - name: Patch target dir
run: | run: |
cp LICENSE.txt target cp LICENSE.txt target
@@ -229,11 +229,23 @@ jobs:
uses: ./.github/actions/win-sign-action uses: ./.github/actions/win-sign-action
with: with:
base-dir: ${{ github.workspace }}\appdir base-dir: ${{ github.workspace }}\appdir
file-extensions: 'exe,dll'
recursive: true recursive: true
append-signature: true append-signature: true
tenant-id: ${{ secrets.AZURE_TENANT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }}
client-id: ${{ secrets.AZURE_CLIENT_ID }} client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Sign Scripts with Azure Trusted Signing
if: inputs.sign || github.event_name == 'schedule'
uses: ./.github/actions/win-sign-action
with:
base-dir: ${{ github.workspace }}\appdir\Cryptomator
file-extensions: 'ps1'
recursive: false
append-signature: false # Powershell scripts cannot be signed in append mode, see #4260
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Replace DLLs inside jars with signed ones - name: Replace DLLs inside jars with signed ones
shell: pwsh shell: pwsh
run: | run: |
@@ -250,7 +262,7 @@ jobs:
} }
- name: Generate license for MSI - name: Generate license for MSI
run: > run: >
mvn -B license:add-third-party ./mvnw -B license:add-third-party
"-Dlicense.thirdPartyFilename=license.rtf" "-Dlicense.thirdPartyFilename=license.rtf"
"-Dlicense.outputDirectory=dist/win/resources" "-Dlicense.outputDirectory=dist/win/resources"
"-Dlicense.fileTemplate=dist/win/resources/licenseTemplate.ftl" "-Dlicense.fileTemplate=dist/win/resources/licenseTemplate.ftl"
@@ -316,7 +328,7 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }} GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: msi-${{ matrix.arch }} name: msi-${{ matrix.arch }}
path: | path: |
@@ -336,11 +348,11 @@ jobs:
- arch: x64 - arch: x64
os: windows-latest os: windows-latest
executable-suffix: x64 executable-suffix: x64
java-dist: 'zulu' java-dist: 'temurin'
java-version: '24.0.1+9' java-version: '26.0.1+8'
java-package: 'jdk' java-package: 'jdk'
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install wix and extensions - name: Install wix and extensions
run: | run: |
dotnet tool install --global wix --version ${WIX_VERSION} dotnet tool install --global wix --version ${WIX_VERSION}
@@ -356,7 +368,7 @@ jobs:
- name: Strip version info from msi file name - name: Strip version info from msi file name
run: mv dist/win/bundle/resources/Cryptomator*.msi dist/win/bundle/resources/Cryptomator.msi run: mv dist/win/bundle/resources/Cryptomator*.msi dist/win/bundle/resources/Cryptomator.msi
- name: Setup Java - name: Setup Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
with: with:
distribution: ${{ matrix.java-dist }} distribution: ${{ matrix.java-dist }}
java-version: ${{ matrix.java-version }} java-version: ${{ matrix.java-version }}
@@ -365,7 +377,7 @@ jobs:
cache: 'maven' cache: 'maven'
- name: Generate license for exe - name: Generate license for exe
run: > run: >
mvn -B license:add-third-party ./mvnw -B license:add-third-party
"-Dlicense.thirdPartyFilename=license.rtf" "-Dlicense.thirdPartyFilename=license.rtf"
"-Dlicense.fileTemplate=dist/win/bundle/resources/licenseTemplate.ftl" "-Dlicense.fileTemplate=dist/win/bundle/resources/licenseTemplate.ftl"
"-Dlicense.outputDirectory=dist/win/bundle/resources" "-Dlicense.outputDirectory=dist/win/bundle/resources"
@@ -449,7 +461,7 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }} GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with: with:
name: exe-${{ matrix.executable-suffix }} name: exe-${{ matrix.executable-suffix }}
path: | path: |
@@ -469,7 +481,7 @@ jobs:
merge-multiple: true merge-multiple: true
- name: Publish installers on GitHub Releases - name: Publish installers on GitHub Releases
id: publish id: publish
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1 uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
with: with:
draft: true draft: true
fail_on_unmatched_files: true fail_on_unmatched_files: true
+4
View File
@@ -0,0 +1,4 @@
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip
distributionSha256Sum=5af3b743dd8b876b5c45da33b676251e5f1687712644abb4ee519ca56e1d89ce
+25 -1
View File
@@ -8,10 +8,34 @@ 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). 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.2...HEAD) ## [1.19.3](https://github.com/cryptomator/cryptomator/releases/1.19.3) - 2026-06-29
### Added
* New error dialog if importing a vault fails ([#4243](https://github.com/cryptomator/cryptomator/pull/4243))
### Fixed
* Fixed Cryptomator file extensions were not registered on Windows ([#4219](https://github.com/cryptomator/cryptomator/issues/4219))
* Fixed warning was displayed when accessing update tab in settings even though an update check did not ran ([#4199](https://github.com/cryptomator/cryptomator/pull/4199))
* Fixed several Decrypt Name dialogs could be opened on the same vault ([#4164](https://github.com/cryptomator/cryptomator/pull/4164))
* Fixed not all mount options in vault specific settings could be displayed ([#4227](https://github.com/cryptomator/cryptomator/pull/4227))
* Fixed localhost alias on Windows was not removed on uninstall ([#3993](https://github.com/cryptomator/cryptomator/issues/3993))
### Changed ### Changed
* Refactored release pipeline to allow immutable releases ([#4205](https://github.com/cryptomator/cryptomator/pull/4205)) * Refactored release pipeline to allow immutable releases ([#4205](https://github.com/cryptomator/cryptomator/pull/4205))
* Updated to JDK 26.0.1 ([#4244](https://github.com/cryptomator/cryptomator/pull/4244))
* Updated to JavaFX 25.0.3 ([#4255](https://github.com/cryptomator/cryptomator/pull/4255))
* Drop signing with Actalis issued certificate ([#4169](https://github.com/cryptomator/cryptomator/pull/4169), [#4262](https://github.com/cryptomator/cryptomator/pull/4262))
* Fix dagger binding graph issues ([#4147](https://github.com/cryptomator/cryptomator/pull/4147))
* Added flatpak build to CI ([#4199](https://github.com/cryptomator/cryptomator/pull/4199))
* Updated dependencies:
- `org.cryptomator:webdav-nio-adapter` from 3.0.1 to 3.0.2
- `org.cryptomator:integrations-api` from 1.8.0 to 1.9.0
- `org.slf4j:slf4j-api` from 2.0.17 to 2.0.18
- `ch.qos.logback:logback-core` from 1.5.32 to 1.5.35
- `ch.qos.logback:logback-classic` from 1.5.32 to 1.5.35
- `com.auth0:java-jwt` from 4.5.1 4.5.2
- `com.fasterxml.jackson.core:jackson-databind` from 2.21.1 to 2.21.4
- `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.21.1 to 2.21.4
- `com.github.ben-manes.caffeine:caffeine` from 3.2.3 to 3.2.4
## [1.19.2](https://github.com/cryptomator/cryptomator/releases/1.19.2) - 2026-03-20 ## [1.19.2](https://github.com/cryptomator/cryptomator/releases/1.19.2) - 2026-03-20
+1 -5
View File
@@ -79,15 +79,11 @@ For more information on the security details visit [cryptomator.org](https://doc
### Dependencies ### Dependencies
* JDK 25 (e.g. temurin, zulu) * JDK 25 (e.g. temurin, zulu)
* Maven 3
### Run Maven ### Run Maven
``` ```
mvn clean install ./mvnw clean install
# or mvn clean install -Pwin
# or mvn clean install -Pmac
# or mvn clean install -Plinux
``` ```
This will build all the jars and bundle them together with their OS-specific dependencies under `target`. This can now be used to build native packages. This will build all the jars and bundle them together with their OS-specific dependencies under `target`. This can now be used to build native packages.
+8 -8
View File
@@ -6,29 +6,29 @@ REVISION_NO=`git rev-list --count HEAD`
# check preconditions # check preconditions
if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi
command -v mvn >/dev/null 2>&1 || { echo >&2 "mvn not found."; exit 1; } [ -x ../../../mvnw ] || { echo >&2 "mvnw not found at ../../../mvnw."; exit 1; }
command -v curl >/dev/null 2>&1 || { echo >&2 "curl not found."; exit 1; } command -v curl >/dev/null 2>&1 || { echo >&2 "curl not found."; exit 1; }
command -v unzip >/dev/null 2>&1 || { echo >&2 "unzip not found."; exit 1; } command -v unzip >/dev/null 2>&1 || { echo >&2 "unzip not found."; exit 1; }
VERSION=$(mvn -f ../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout) VERSION=$(../../../mvnw -f ../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout)
SEMVER_STR=${VERSION} SEMVER_STR=${VERSION}
CPU_ARCH=$(uname -m) CPU_ARCH=$(uname -m)
if [[ ! "${CPU_ARCH}" =~ x86_64|aarch64 ]]; then echo "Platform ${CPU_ARCH} not supported"; exit 1; fi if [[ ! "${CPU_ARCH}" =~ x86_64|aarch64 ]]; then echo "Platform ${CPU_ARCH} not supported"; exit 1; fi
mvn -f ../../../pom.xml versions:set -DnewVersion=${SEMVER_STR} ../../../mvnw -f ../../../pom.xml versions:set -DnewVersion=${SEMVER_STR}
# compile # compile
mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests ../../../mvnw -B -f ../../../pom.xml clean package -DskipTests
cp ../../../LICENSE.txt ../../../target cp ../../../LICENSE.txt ../../../target
cp ../../../target/cryptomator-*.jar ../../../target/mods cp ../../../target/cryptomator-*.jar ../../../target/mods
JAVAFX_VERSION=25.0.2 JAVAFX_VERSION=25.0.3
JAVAFX_ARCH="x64" JAVAFX_ARCH="x64"
JAVAFX_JMODS_SHA256='e0a9c29d8cf3af9b8b48848b43f87b5785bc107c53a951b19668ce05842bba1b' JAVAFX_JMODS_SHA256='47035c653863a8e4be3dc6f142b8dbd84b4bb1efc9a8cbc68413e6a5ff5e9f50'
if [ "${CPU_ARCH}" = "aarch64" ]; then if [ "${CPU_ARCH}" = "aarch64" ]; then
JAVAFX_ARCH="aarch64" JAVAFX_ARCH="aarch64"
JAVAFX_JMODS_SHA256='c3408f818693cce09e59829a8e862a82c7695fdfcd585c41cfd527f5fc3fe646' JAVAFX_JMODS_SHA256='e3fd682354346845d2944a2da2b1ff2b6cb9259d92027f2f9c121b9b93c5e42f'
fi fi
# download javaFX jmods # download javaFX jmods
@@ -42,7 +42,7 @@ unzip -o -j openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/jav
JMOD_VERSION=$(jmod describe ./openjfx-jmods/javafx.base.jmod | head -1) JMOD_VERSION=$(jmod describe ./openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@} JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*} JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout -B -f ../../../pom.xml) POM_JFX_VERSION=$(../../../mvnw help:evaluate "-Dexpression=javafx.version" -q -DforceStdout -B -f ../../../pom.xml)
POM_JFX_VERSION=${POM_JFX_VERSION#*@} POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*} POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
if [ $POM_JFX_VERSION -ne $JMOD_VERSION ]; then if [ $POM_JFX_VERSION -ne $JMOD_VERSION ]; then
@@ -84,6 +84,9 @@
</content_rating> </content_rating>
<releases> <releases>
<release date="2026-06-29" version="1.19.3">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.19.3</url>
</release>
<release date="2026-03-20" version="1.19.2"> <release date="2026-03-20" version="1.19.2">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.19.2</url> <url type="details">https://github.com/cryptomator/cryptomator/releases/1.19.2</url>
</release> </release>
+1 -1
View File
@@ -2,7 +2,7 @@ Source: cryptomator
Maintainer: Cryptobot <releases@cryptomator.org> Maintainer: Cryptobot <releases@cryptomator.org>
Section: utils Section: utils
Priority: optional Priority: optional
Build-Depends: debhelper (>=10), openjdk-25-jdk (>= 25+36), libgtk-3-0 (>= 3.20.0), libxxf86vm1, libgl1 Build-Depends: debhelper (>=10), coffeelibs-jdk-26 (>= 26.0.1+8-0ppa1), libgtk-3-0 (>= 3.20.0), libxxf86vm1, libgl1
Standards-Version: 4.5.0 Standards-Version: 4.5.0
Homepage: https://cryptomator.org Homepage: https://cryptomator.org
Vcs-Git: https://github.com/cryptomator/cryptomator.git Vcs-Git: https://github.com/cryptomator/cryptomator.git
+1 -2
View File
@@ -4,12 +4,11 @@
# Uncomment this to turn on verbose mode. # Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1 #export DH_VERBOSE=1
JAVA_HOME = /usr/lib/jvm/java-26-coffeelibs
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
ifeq ($(DEB_BUILD_ARCH),amd64) ifeq ($(DEB_BUILD_ARCH),amd64)
JAVA_HOME = /usr/lib/jvm/java-25-openjdk-amd64
JMODS_PATH = jmods/amd64:${JAVA_HOME}/jmods JMODS_PATH = jmods/amd64:${JAVA_HOME}/jmods
else ifeq ($(DEB_BUILD_ARCH),arm64) else ifeq ($(DEB_BUILD_ARCH),arm64)
JAVA_HOME = /usr/lib/jvm/java-25-openjdk-arm64
JMODS_PATH = jmods/aarch64:${JAVA_HOME}/jmods JMODS_PATH = jmods/aarch64:${JAVA_HOME}/jmods
endif endif
@@ -94,7 +94,7 @@ modules:
- mkdir maven - mkdir maven
- tar xf maven.tar.gz --strip-components=1 --exclude=jansi-native --directory=maven - tar xf maven.tar.gz --strip-components=1 --exclude=jansi-native --directory=maven
# Build project # Build project
- maven/bin/mvn clean package -DskipTests -P"linux-$(uname -m)" - maven/bin/mvn clean package -DskipTests
- cp target/cryptomator-*.jar target/mods - cp target/cryptomator-*.jar target/mods
- cd target - cd target
- $JAVA_HOME/bin/jlink - $JAVA_HOME/bin/jlink
@@ -150,26 +150,26 @@ modules:
dest-filename: jdk.tar.gz dest-filename: jdk.tar.gz
only-arches: only-arches:
- x86_64 - 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 url: https://github.com/adoptium/temurin26-binaries/releases/download/jdk-26.0.1%2B8/OpenJDK26U-jdk_x64_linux_hotspot_26.0.1_8.tar.gz
sha512: 29043fde119a031c2ca8d57aed445fedd9e7f74608fcdc7a809076ba84cfd1c31f08de2ecccf352e159fdcd1cae172395ed46363007552ff242057826c81ab3a sha512: eb46cda97ffd46e2e0c1f6f977dc204d9cc969b958946287b7e7d0bfe859fd92faccb2f6ef79995421a963c6de140c436af559403e0a2cd27c90b06c20260d5c
- type: file - type: file
dest-filename: jdk.tar.gz dest-filename: jdk.tar.gz
only-arches: only-arches:
- aarch64 - 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 url: https://github.com/adoptium/temurin26-binaries/releases/download/jdk-26.0.1%2B8/OpenJDK26U-jdk_aarch64_linux_hotspot_26.0.1_8.tar.gz
sha512: f1d3ccec3e1f1bed9d632f14b9223709d6e5c2e0d922125d068870dd3016492a2ca8f08924d4a9d0dc5eb2159fa09efee366a748fd0093475baf29e5c70c781a sha512: 3c31671552712a8f0df96df2eeae7e9ad5156c0e98ebd5bf4fa04c14bba58bd5e19ff567ddcdc7aa478f6f4b0a852762a09bd88d3132acb121e667cfe0397034
- type: file - type: file
dest-filename: openjfx.zip dest-filename: openjfx.zip
only-arches: only-arches:
- x86_64 - x86_64
url: https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-x64_bin-jmods.zip url: https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_linux-x64_bin-jmods.zip
sha512: 21f550217101c513f9eb1d7947eba30cb79618238e6539ce770e54e84b01574cdaeba40af602391145f163dd8e43e3794395467413152f13ffffeff948b0ca1b sha512: 75605440f13d0337e70ada1220f77d0d9780fb4602e676f1f07674d8b2e296b25080549d07edcca8f66733e15388860e3472d4ff6d51fd72b0452ed8bbe78022
- type: file - type: file
dest-filename: openjfx.zip dest-filename: openjfx.zip
only-arches: only-arches:
- aarch64 - aarch64
url: https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-aarch64_bin-jmods.zip url: https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_linux-aarch64_bin-jmods.zip
sha512: a9268409b3803e386490bf1319d0f0a14173cebe862c12254cd51b430ee0a297437d9e38d5ebeae0da8899be898b312b103330d09dcfd3e63c1e7d15f2f14311 sha512: 30c509b880ced1b29e0fafa41073d2350a16296d9439124b9a0e3bb391bf7f27e34d5abcfb338df11e5e898175699bceac40574bc9ad123ff071a5964f8fb14d
- type: file - type: file
dest-filename: maven.tar.gz 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 url: https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.13/apache-maven-3.9.13-bin.tar.gz
+7 -7
View File
@@ -14,8 +14,8 @@ license=('GPL3')
depends=('fuse3' 'alsa-lib' 'hicolor-icon-theme' 'libxtst' 'libnet' 'libxrender') depends=('fuse3' 'alsa-lib' 'hicolor-icon-theme' 'libxtst' 'libnet' 'libxrender')
makedepends=('maven' 'unzip') makedepends=('maven' 'unzip')
optdepends=('keepassxc-cryptomator: Use KeePassXC to store vault passwords' 'ttf-hanazono: Install this font when using Japanese system language') optdepends=('keepassxc-cryptomator: Use KeePassXC to store vault passwords' 'ttf-hanazono: Install this font when using Japanese system language')
_jdkver=25.0.2+10 _jdkver=26.0.1+8
_jfxver=25.0.2 _jfxver=25.0.3
_src_app_dir=cryptomator-${pkgver//_/-} _src_app_dir=cryptomator-${pkgver//_/-}
source=($SOURCES); source=($SOURCES);
source_x86_64=("jdk-${_jdkver}.tar.gz::https://github.com/adoptium/temurin${_jdkver:0:2}-binaries/releases/download/jdk-${_jdkver//\+/%2B}/OpenJDK${_jdkver:0:2}U-jdk_x64_linux_hotspot_${_jdkver//\+/_}.tar.gz" source_x86_64=("jdk-${_jdkver}.tar.gz::https://github.com/adoptium/temurin${_jdkver:0:2}-binaries/releases/download/jdk-${_jdkver//\+/%2B}/OpenJDK${_jdkver:0:2}U-jdk_x64_linux_hotspot_${_jdkver//\+/_}.tar.gz"
@@ -24,10 +24,10 @@ source_aarch64=("jdk-${_jdkver}.tar.gz::https://github.com/adoptium/temurin${_jd
"openjfx-${_jfxver}.zip::https://download2.gluonhq.com/openjfx/${_jfxver}/openjfx-${_jfxver}_linux-aarch64_bin-jmods.zip") "openjfx-${_jfxver}.zip::https://download2.gluonhq.com/openjfx/${_jfxver}/openjfx-${_jfxver}_linux-aarch64_bin-jmods.zip")
noextract=("jdk-${_jdkver}.tar.gz" "openjfx-${_jfxver}.zip") noextract=("jdk-${_jdkver}.tar.gz" "openjfx-${_jfxver}.zip")
sha256sums=($SOURCES_SHA) sha256sums=($SOURCES_SHA)
sha256sums_x86_64=('987387933b64b9833846dee373b640440d3e1fd48a04804ec01a6dbf718e8ab8' sha256sums_x86_64=('8e512f13e575a43655fc92319436c94890c137b9035cc6bd6f9cf24239704d3a'
'e0a9c29d8cf3af9b8b48848b43f87b5785bc107c53a951b19668ce05842bba1b') '47035c653863a8e4be3dc6f142b8dbd84b4bb1efc9a8cbc68413e6a5ff5e9f50')
sha256sums_aarch64=('a9d73e711d967dc44896d4f430f73a68fd33590dabc29a7f2fb9f593425b854c' sha256sums_aarch64=('613f9b2861dea937b24d5eca745ef8567733b377d0bb612195acaad0e3f61360'
'c3408f818693cce09e59829a8e862a82c7695fdfcd585c41cfd527f5fc3fe646') 'e3fd682354346845d2944a2da2b1ff2b6cb9259d92027f2f9c121b9b93c5e42f')
options=('!strip') options=('!strip')
validpgpkeys=('58117AFA1F85B3EEC154677D615D449FE6E6A235') validpgpkeys=('58117AFA1F85B3EEC154677D615D449FE6E6A235')
@@ -47,7 +47,7 @@ build() {
cd "${srcdir}/${_src_app_dir}" cd "${srcdir}/${_src_app_dir}"
mvn -B clean package -DskipTests -Plinux mvn -B clean package -DskipTests
cp LICENSE.txt target cp LICENSE.txt target
cp target/cryptomator-*.jar target/mods cp target/cryptomator-*.jar target/mods
+8 -8
View File
@@ -29,24 +29,24 @@ PACKAGE_IDENTIFIER="org.cryptomator"
MAIN_JAR_GLOB="cryptomator-*.jar" MAIN_JAR_GLOB="cryptomator-*.jar"
MODULE_AND_MAIN_CLASS="org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator" MODULE_AND_MAIN_CLASS="org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator"
REVISION_NO=`git rev-list --count HEAD` REVISION_NO=`git rev-list --count HEAD`
VERSION_NO=`mvn -f../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout | sed -rn 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'` VERSION_NO=`../../../mvnw -f../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout | sed -rn 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'`
FUSE_LIB="FUSE-T" FUSE_LIB="FUSE-T"
JAVAFX_VERSION=25.0.2 JAVAFX_VERSION=25.0.3
JAVAFX_ARCH="undefined" JAVAFX_ARCH="undefined"
JAVAFX_JMODS_SHA256="undefined" JAVAFX_JMODS_SHA256="undefined"
if [ "$(machine)" = "arm64e" ]; then if [ "$(machine)" = "arm64e" ]; then
JAVAFX_ARCH="aarch64" JAVAFX_ARCH="aarch64"
JAVAFX_JMODS_SHA256="4cd258001c75af7047005c5c891e2400ed11d24fbb09412324c0cbaf8b503c5a" JAVAFX_JMODS_SHA256="a52014d625b8b04e57fd71650f881c1397542b4018e1b04f1b4e66c8800a1f34"
else else
JAVAFX_ARCH="x64" JAVAFX_ARCH="x64"
JAVAFX_JMODS_SHA256="0b4d8463f03901b7425d94628e4116b7078abb8dd540fbec415266fac20bda5c" JAVAFX_JMODS_SHA256="3512fabe43aee467538d329cfbbaab3c53dff2a810f0d54e381f461d5e0fac43"
fi fi
JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-${JAVAFX_ARCH}_bin-jmods.zip" JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-${JAVAFX_ARCH}_bin-jmods.zip"
# check preconditions # check preconditions
if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi
command -v mvn >/dev/null 2>&1 || { echo >&2 "mvn not found. Fix by 'brew install maven'."; exit 1; } [ -x ../../../mvnw ] || { echo >&2 "mvnw not found at ../../../mvnw."; exit 1; }
command -v create-dmg >/dev/null 2>&1 || { echo >&2 "create-dmg not found. Fix by 'brew install create-dmg'."; exit 1; } command -v create-dmg >/dev/null 2>&1 || { echo >&2 "create-dmg not found. Fix by 'brew install create-dmg'."; exit 1; }
if [ -n "${CODESIGN_IDENTITY}" ]; then if [ -n "${CODESIGN_IDENTITY}" ]; then
command -v codesign >/dev/null 2>&1 || { echo >&2 "codesign not found. Fix by 'xcode-select --install'."; exit 1; } command -v codesign >/dev/null 2>&1 || { echo >&2 "codesign not found. Fix by 'xcode-select --install'."; exit 1; }
@@ -61,7 +61,7 @@ unzip -jo openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javaf
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1) JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@} JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*} JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn -f../../../pom.xml help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) POM_JFX_VERSION=$(../../../mvnw -f../../../pom.xml help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@} POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*} POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
@@ -71,7 +71,7 @@ if [ "${POM_JFX_VERSION}" -ne "${JMOD_VERSION}" ]; then
fi fi
# compile # compile
mvn -B -f../../../pom.xml clean package -DskipTests -Pmac ../../../mvnw -B -f../../../pom.xml clean package -DskipTests -Pmac
cp ../../../LICENSE.txt ../../../target cp ../../../LICENSE.txt ../../../target
cp ../../../target/${MAIN_JAR_GLOB} ../../../target/mods cp ../../../target/${MAIN_JAR_GLOB} ../../../target/mods
@@ -137,7 +137,7 @@ sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" ${APP_NAME}.app/Contents/Inf
cp ../embedded.provisionprofile ${APP_NAME}.app/Contents/ cp ../embedded.provisionprofile ${APP_NAME}.app/Contents/
# generate license # generate license
mvn -B -f../../../pom.xml license:add-third-party \ ../../../mvnw -B -f../../../pom.xml license:add-third-party \
-Dlicense.thirdPartyFilename=license.rtf \ -Dlicense.thirdPartyFilename=license.rtf \
-Dlicense.outputDirectory=dist/mac/dmg/resources \ -Dlicense.outputDirectory=dist/mac/dmg/resources \
-Dlicense.fileTemplate=resources/licenseTemplate.ftl \ -Dlicense.fileTemplate=resources/licenseTemplate.ftl \
+2 -2
View File
@@ -107,9 +107,9 @@ switch ($archName) {
$jmodPaths = "$Env:JAVA_HOME/jmods" $jmodPaths = "$Env:JAVA_HOME/jmods"
} }
'x64' { 'x64' {
$javaFxVersion='25.0.2' $javaFxVersion='25.0.3'
$javaFxJmodsUrl = "https://download2.gluonhq.com/openjfx/${javaFxVersion}/openjfx-${javaFxVersion}_windows-x64_bin-jmods.zip" $javaFxJmodsUrl = "https://download2.gluonhq.com/openjfx/${javaFxVersion}/openjfx-${javaFxVersion}_windows-x64_bin-jmods.zip"
$javaFxJmodsSHA256 = '33d878dfac85590c4d77c518ed413e512d34a8479d90132b230a7ddd173576b3' $javaFxJmodsSHA256 = '0bf9b83260b85607a9ba200124debabd9cdb013cbc0d659e62a20192a7137907'
$javaFxJmods = '.\resources\jfxJmods.zip' $javaFxJmods = '.\resources\jfxJmods.zip'
if( !(Test-Path -Path $javaFxJmods) ) { if( !(Test-Path -Path $javaFxJmods) ) {
+4 -1
View File
@@ -4,15 +4,18 @@
:: This file must be located in the INSTALLDIR :: This file must be located in the INSTALLDIR
set "LOOPBACK_ALIAS=%1" set "LOOPBACK_ALIAS=%1"
set "ACTION=%2"
if "%ACTION%"=="" set "ACTION=install"
:: Log for debugging :: Log for debugging
echo LOOPBACK_ALIAS=%LOOPBACK_ALIAS% echo LOOPBACK_ALIAS=%LOOPBACK_ALIAS%
echo ACTION=%ACTION%
:: Change to INSTALLDIR :: Change to INSTALLDIR
cd %~dp0 cd %~dp0
:: Execute the PowerShell script :: Execute the PowerShell script
powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -File .\patchWebDAV.ps1^ powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -File .\patchWebDAV.ps1^
-LoopbackAlias %LOOPBACK_ALIAS% -LoopbackAlias %LOOPBACK_ALIAS% -Action %ACTION%
:: Return the exit code from PowerShell :: Return the exit code from PowerShell
exit /b %ERRORLEVEL% exit /b %ERRORLEVEL%
+36 -11
View File
@@ -1,15 +1,17 @@
#Requires -RunAsAdministrator #Requires -RunAsAdministrator
Param( Param(
[Parameter(Mandatory, HelpMessage="Please provide an alias for 127.0.0.1")][string] $LoopbackAlias [Parameter(Mandatory, HelpMessage="Please provide an alias for 127.0.0.1")][string] $LoopbackAlias,
[string] $Action = "install"
) )
New-Variable -Name "sysdir" -Value ([Environment]::SystemDirectory) -Option Constant -Scope Global
New-Variable -Name "hostsFile" -Value "$sysdir\drivers\etc\hosts" -Option Constant -Scope Global
# Adds an alias for 127.0.0.1 to the hosts file # Adds an alias for 127.0.0.1 to the hosts file
function Add-AliasToHost { function Add-AliasToHost {
param ( param (
[string]$LoopbackAlias [string]$LoopbackAlias
) )
$sysdir = [Environment]::SystemDirectory
$hostsFile = "$sysdir\drivers\etc\hosts"
$aliasLine = "127.0.0.1 $LoopbackAlias" $aliasLine = "127.0.0.1 $LoopbackAlias"
foreach ($line in Get-Content $hostsFile) { foreach ($line in Get-Content $hostsFile) {
@@ -18,9 +20,26 @@ function Add-AliasToHost {
} }
} }
Add-Content -Path $hostsFile -Encoding ascii -Value "`r`n$aliasLine" $content = Get-Content $hostsFile
$content += "`r`n$aliasLine"
$content | Set-Content "$hostsFile.tmp" -Encoding ascii
Move-Item "$hostsFile.tmp" $hostsFile -Force
} }
# Removes an alias for 127.0.0.1 from the hosts file
function Remove-AliasFromHost {
param (
[string]$LoopbackAlias
)
$aliasLine = "127.0.0.1 $LoopbackAlias"
$content = Get-Content $hostsFile
$newContent = $content | Where-Object { $_ -ne $aliasLine }
$newContent | Set-Content "$hostsFile.tmp" -Encoding ascii
Move-Item "$hostsFile.tmp" $hostsFile -Force
}
# Sets in the registry the webclient file size limit to the maximum value # Sets in the registry the webclient file size limit to the maximum value
function Set-WebDAVFileSizeLimit { function Set-WebDAVFileSizeLimit {
@@ -54,14 +73,20 @@ function Edit-ProviderOrder {
New-ItemProperty -Path $RegistryPath -Name $Name -Value $UpdatedOrder -PropertyType String -Force | Out-Null New-ItemProperty -Path $RegistryPath -Name $Name -Value $UpdatedOrder -PropertyType String -Force | Out-Null
} }
if ($Action -eq "install") {
Add-AliasToHost $LoopbackAlias
Write-Output 'Ensured alias exists in hosts file'
Add-AliasToHost $LoopbackAlias Set-WebDAVFileSizeLimit
Write-Output 'Ensured alias exists in hosts file' Write-Output 'Set WebDAV file size limit'
Set-WebDAVFileSizeLimit Edit-ProviderOrder
Write-Output 'Set WebDAV file size limit' Write-Output 'Ensured correct provider order'
} elseif ($Action -eq "uninstall") {
Edit-ProviderOrder Remove-AliasFromHost $LoopbackAlias
Write-Output 'Ensured correct provider order' Write-Output 'Ensured alias removed from hosts file'
} else {
Write-Error "Invalid action: $Action. Only 'install' or 'uninstall' are valid."
}
exit 0 exit 0
+7 -4
View File
@@ -158,9 +158,13 @@
<ns0:CustomAction Id="DisableUserConfig" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" DllEntry="WixQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/> <ns0:CustomAction Id="DisableUserConfig" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" DllEntry="WixQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>
<!-- WebDAV patches --> <!-- WebDAV patches -->
<ns0:SetProperty Id="PatchWebDAV" Value="&quot;[INSTALLDIR]patchWebDAV.bat&quot; &quot;$(var.LoopbackAlias)&quot;" Sequence="execute" Before="PatchWebDAV" /> <ns0:SetProperty Id="PatchWebDAV" Value="&quot;[INSTALLDIR]patchWebDAV.bat&quot; &quot;$(var.LoopbackAlias)&quot; install" Sequence="execute" Before="PatchWebDAV" />
<ns0:CustomAction Id="PatchWebDAV" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" DllEntry="WixQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/> <ns0:CustomAction Id="PatchWebDAV" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" DllEntry="WixQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>
<!-- WebDAV patches (Uninstall) -->
<ns0:SetProperty Id="PatchWebDAVUninstall" Value="&quot;[INSTALLDIR]patchWebDAV.bat&quot; &quot;$(var.LoopbackAlias)&quot; uninstall" Sequence="execute" Before="PatchWebDAVUninstall" />
<ns0:CustomAction Id="PatchWebDAVUninstall" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" DllEntry="WixQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/>
<!-- Update check configuration --> <!-- Update check configuration -->
<ns0:SetProperty Id="PatchUpdateCheck" Value="&quot;[INSTALLDIR]patchUpdateCheck.bat&quot; &quot;[DISABLEUPDATECHECK]&quot;" Sequence="execute" Before="PatchUpdateCheck" /> <ns0:SetProperty Id="PatchUpdateCheck" Value="&quot;[INSTALLDIR]patchUpdateCheck.bat&quot; &quot;[DISABLEUPDATECHECK]&quot;" Sequence="execute" Before="PatchUpdateCheck" />
<ns0:CustomAction Id="PatchUpdateCheck" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" DllEntry="WixQuietExec64" Execute="deferred" Return="ignore" Impersonate="no"/> <ns0:CustomAction Id="PatchUpdateCheck" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" DllEntry="WixQuietExec64" Execute="deferred" Return="ignore" Impersonate="no"/>
@@ -214,9 +218,8 @@
<ns0:RemoveExistingProducts After="InstallValidate"/> <!-- Moved from CostInitialize, due to Wix4CloseApplications_* --> <ns0:RemoveExistingProducts After="InstallValidate"/> <!-- Moved from CostInitialize, due to Wix4CloseApplications_* -->
<ns0:Custom Action="DisableUserConfig" After="InstallFiles" Condition="NOT (Installed AND (NOT REINSTALL) AND (NOT UPGRADINGPRODUCTCODE) AND REMOVE)"/> <ns0:Custom Action="DisableUserConfig" After="InstallFiles" Condition="NOT (Installed AND (NOT REINSTALL) AND (NOT UPGRADINGPRODUCTCODE) AND REMOVE)"/>
<!-- Skip action on uninstall -->
<!-- TODO: don't skip action, but remove cryptomator alias from hosts file -->
<ns0:Custom Action="PatchWebDAV" After="DisableUserConfig" Condition="NOT (Installed AND (NOT REINSTALL) AND (NOT UPGRADINGPRODUCTCODE) AND REMOVE)"/> <ns0:Custom Action="PatchWebDAV" After="DisableUserConfig" Condition="NOT (Installed AND (NOT REINSTALL) AND (NOT UPGRADINGPRODUCTCODE) AND REMOVE)"/>
<ns0:Custom Action="PatchWebDAVUninstall" Before="RemoveFiles" Condition="Installed AND (NOT REINSTALL) AND (NOT UPGRADINGPRODUCTCODE) AND REMOVE" />
<!-- Configure update check setting if property is provided --> <!-- Configure update check setting if property is provided -->
<ns0:Custom Action="PatchUpdateCheck" After="PatchWebDAV" Condition="DISABLEUPDATECHECK AND NOT (Installed AND (NOT REINSTALL) AND (NOT UPGRADINGPRODUCTCODE) AND REMOVE)"/> <ns0:Custom Action="PatchUpdateCheck" After="PatchWebDAV" Condition="DISABLEUPDATECHECK AND NOT (Installed AND (NOT REINSTALL) AND (NOT UPGRADINGPRODUCTCODE) AND REMOVE)"/>
</ns0:InstallExecuteSequence> </ns0:InstallExecuteSequence>
@@ -228,4 +231,4 @@
<ns0:WixVariable Id="WixUIBannerBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)banner.bmp" /> <ns0:WixVariable Id="WixUIBannerBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)banner.bmp" />
<ns0:WixVariable Id="WixUIDialogBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)background.bmp" /> <ns0:WixVariable Id="WixUIDialogBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)background.bmp" />
</ns0:Package> </ns0:Package>
</ns0:Wix> </ns0:Wix>
Vendored Executable
+295
View File
@@ -0,0 +1,295 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Apache Maven Wrapper startup batch script, version 3.3.4
#
# Optional ENV vars
# -----------------
# JAVA_HOME - location of a JDK home dir, required when download maven via java source
# MVNW_REPOURL - repo url base for downloading maven distribution
# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
# ----------------------------------------------------------------------------
set -euf
[ "${MVNW_VERBOSE-}" != debug ] || set -x
# OS specific support.
native_path() { printf %s\\n "$1"; }
case "$(uname)" in
CYGWIN* | MINGW*)
[ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
native_path() { cygpath --path --windows "$1"; }
;;
esac
# set JAVACMD and JAVACCMD
set_java_home() {
# For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
if [ -n "${JAVA_HOME-}" ]; then
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACCMD="$JAVA_HOME/jre/sh/javac"
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACCMD="$JAVA_HOME/bin/javac"
if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
return 1
fi
fi
else
JAVACMD="$(
'set' +e
'unset' -f command 2>/dev/null
'command' -v java
)" || :
JAVACCMD="$(
'set' +e
'unset' -f command 2>/dev/null
'command' -v javac
)" || :
if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
return 1
fi
fi
}
# hash string like Java String::hashCode
hash_string() {
str="${1:-}" h=0
while [ -n "$str" ]; do
char="${str%"${str#?}"}"
h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
str="${str#?}"
done
printf %x\\n $h
}
verbose() { :; }
[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
die() {
printf %s\\n "$1" >&2
exit 1
}
trim() {
# MWRAPPER-139:
# Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
# Needed for removing poorly interpreted newline sequences when running in more
# exotic environments such as mingw bash on Windows.
printf "%s" "${1}" | tr -d '[:space:]'
}
scriptDir="$(dirname "$0")"
scriptName="$(basename "$0")"
# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
while IFS="=" read -r key value; do
case "${key-}" in
distributionUrl) distributionUrl=$(trim "${value-}") ;;
distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
esac
done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties"
[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
case "${distributionUrl##*/}" in
maven-mvnd-*bin.*)
MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
*AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
:Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
:Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
:Linux*x86_64*) distributionPlatform=linux-amd64 ;;
*)
echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
distributionPlatform=linux-amd64
;;
esac
distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
;;
maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
esac
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
distributionUrlName="${distributionUrl##*/}"
distributionUrlNameMain="${distributionUrlName%.*}"
distributionUrlNameMain="${distributionUrlNameMain%-bin}"
MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
exec_maven() {
unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
}
if [ -d "$MAVEN_HOME" ]; then
verbose "found existing MAVEN_HOME at $MAVEN_HOME"
exec_maven "$@"
fi
case "${distributionUrl-}" in
*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
esac
# prepare tmp dir
if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
trap clean HUP INT TERM EXIT
else
die "cannot create temp dir"
fi
mkdir -p -- "${MAVEN_HOME%/*}"
# Download and Install Apache Maven
verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
verbose "Downloading from: $distributionUrl"
verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
# select .zip or .tar.gz
if ! command -v unzip >/dev/null; then
distributionUrl="${distributionUrl%.zip}.tar.gz"
distributionUrlName="${distributionUrl##*/}"
fi
# verbose opt
__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
# normalize http auth
case "${MVNW_PASSWORD:+has-password}" in
'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
esac
if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
verbose "Found wget ... using wget"
wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
verbose "Found curl ... using curl"
curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
elif set_java_home; then
verbose "Falling back to use Java to download"
javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
cat >"$javaSource" <<-END
public class Downloader extends java.net.Authenticator
{
protected java.net.PasswordAuthentication getPasswordAuthentication()
{
return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
}
public static void main( String[] args ) throws Exception
{
setDefault( new Downloader() );
java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
}
}
END
# For Cygwin/MinGW, switch paths to Windows format before running javac and java
verbose " - Compiling Downloader.java ..."
"$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
verbose " - Running Downloader.java ..."
"$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
fi
# If specified, validate the SHA-256 sum of the Maven distribution zip file
if [ -n "${distributionSha256Sum-}" ]; then
distributionSha256Result=false
if [ "$MVN_CMD" = mvnd.sh ]; then
echo "Checksum validation is not supported for maven-mvnd." >&2
echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
exit 1
elif command -v sha256sum >/dev/null; then
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then
distributionSha256Result=true
fi
elif command -v shasum >/dev/null; then
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
distributionSha256Result=true
fi
else
echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
exit 1
fi
if [ $distributionSha256Result = false ]; then
echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
exit 1
fi
fi
# unzip and move
if command -v unzip >/dev/null; then
unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
else
tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
fi
# Find the actual extracted directory name (handles snapshots where filename != directory name)
actualDistributionDir=""
# First try the expected directory name (for regular distributions)
if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then
if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then
actualDistributionDir="$distributionUrlNameMain"
fi
fi
# If not found, search for any directory with the Maven executable (for snapshots)
if [ -z "$actualDistributionDir" ]; then
# enable globbing to iterate over items
set +f
for dir in "$TMP_DOWNLOAD_DIR"/*; do
if [ -d "$dir" ]; then
if [ -f "$dir/bin/$MVN_CMD" ]; then
actualDistributionDir="$(basename "$dir")"
break
fi
fi
done
set -f
fi
if [ -z "$actualDistributionDir" ]; then
verbose "Contents of $TMP_DOWNLOAD_DIR:"
verbose "$(ls -la "$TMP_DOWNLOAD_DIR")"
die "Could not find Maven distribution directory in extracted archive"
fi
verbose "Found extracted Maven distribution directory: $actualDistributionDir"
printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url"
mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
clean || :
exec_maven "$@"
Vendored
+189
View File
@@ -0,0 +1,189 @@
<# : batch portion
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Apache Maven Wrapper startup batch script, version 3.3.4
@REM
@REM Optional ENV vars
@REM MVNW_REPOURL - repo url base for downloading maven distribution
@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
@REM ----------------------------------------------------------------------------
@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
@SET __MVNW_CMD__=
@SET __MVNW_ERROR__=
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
@SET PSModulePath=
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
)
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
@SET __MVNW_PSMODULEP_SAVE=
@SET __MVNW_ARG0_NAME__=
@SET MVNW_USERNAME=
@SET MVNW_PASSWORD=
@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*)
@echo Cannot start maven from wrapper >&2 && exit /b 1
@GOTO :EOF
: end batch / begin powershell #>
$ErrorActionPreference = "Stop"
if ($env:MVNW_VERBOSE -eq "true") {
$VerbosePreference = "Continue"
}
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
if (!$distributionUrl) {
Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
}
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
"maven-mvnd-*" {
$USE_MVND = $true
$distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
$MVN_CMD = "mvnd.cmd"
break
}
default {
$USE_MVND = $false
$MVN_CMD = $script -replace '^mvnw','mvn'
break
}
}
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
if ($env:MVNW_REPOURL) {
$MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" }
$distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')"
}
$distributionUrlName = $distributionUrl -replace '^.*/',''
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
$MAVEN_M2_PATH = "$HOME/.m2"
if ($env:MAVEN_USER_HOME) {
$MAVEN_M2_PATH = "$env:MAVEN_USER_HOME"
}
if (-not (Test-Path -Path $MAVEN_M2_PATH)) {
New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null
}
$MAVEN_WRAPPER_DISTS = $null
if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) {
$MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists"
} else {
$MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists"
}
$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain"
$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
exit $?
}
if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
}
# prepare tmp dir
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
trap {
if ($TMP_DOWNLOAD_DIR.Exists) {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
}
New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
# Download and Install Apache Maven
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
Write-Verbose "Downloading from: $distributionUrl"
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
$webclient = New-Object System.Net.WebClient
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
# If specified, validate the SHA-256 sum of the Maven distribution zip file
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
if ($distributionSha256Sum) {
if ($USE_MVND) {
Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
}
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
}
}
# unzip and move
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
# Find the actual extracted directory name (handles snapshots where filename != directory name)
$actualDistributionDir = ""
# First try the expected directory name (for regular distributions)
$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain"
$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD"
if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) {
$actualDistributionDir = $distributionUrlNameMain
}
# If not found, search for any directory with the Maven executable (for snapshots)
if (!$actualDistributionDir) {
Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object {
$testPath = Join-Path $_.FullName "bin/$MVN_CMD"
if (Test-Path -Path $testPath -PathType Leaf) {
$actualDistributionDir = $_.Name
}
}
}
if (!$actualDistributionDir) {
Write-Error "Could not find Maven distribution directory in extracted archive"
}
Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir"
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null
try {
Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
} catch {
if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
Write-Error "fail to move MAVEN_HOME"
}
} finally {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
+19 -42
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>cryptomator</artifactId> <artifactId>cryptomator</artifactId>
<version>1.20.0-SNAPSHOT</version> <version>1.19.3</version>
<name>Cryptomator Desktop App</name> <name>Cryptomator Desktop App</name>
<organization> <organization>
@@ -26,7 +26,7 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.jdk.version>25</project.jdk.version> <project.jdk.version>26</project.jdk.version>
<!-- Group IDs of jars that need to stay on the class path for now --> <!-- Group IDs of jars that need to stay on the class path for now -->
<!-- remove them, as soon they got modularized or support is dropped (i.e., WebDAV) --> <!-- remove them, as soon they got modularized or support is dropped (i.e., WebDAV) -->
@@ -35,43 +35,42 @@
<!-- cryptomator dependencies --> <!-- cryptomator dependencies -->
<cryptomator.cryptofs.version>2.10.0</cryptomator.cryptofs.version> <cryptomator.cryptofs.version>2.10.0</cryptomator.cryptofs.version>
<cryptomator.cryptolib.version>2.2.2</cryptomator.cryptolib.version> <cryptomator.cryptolib.version>2.2.2</cryptomator.cryptolib.version>
<cryptomator.integrations.version>1.8.0</cryptomator.integrations.version> <cryptomator.integrations.version>1.9.0</cryptomator.integrations.version>
<cryptomator.integrations.win.version>1.6.0</cryptomator.integrations.win.version> <cryptomator.integrations.win.version>1.6.1</cryptomator.integrations.win.version>
<cryptomator.integrations.mac.version>1.5.0</cryptomator.integrations.mac.version> <cryptomator.integrations.mac.version>1.5.0</cryptomator.integrations.mac.version>
<cryptomator.integrations.linux.version>1.7.0</cryptomator.integrations.linux.version> <cryptomator.integrations.linux.version>1.7.0</cryptomator.integrations.linux.version>
<cryptomator.fuse.version>6.0.1</cryptomator.fuse.version> <cryptomator.fuse.version>6.0.1</cryptomator.fuse.version>
<cryptomator.webdav.version>3.0.1</cryptomator.webdav.version> <cryptomator.webdav.version>3.0.2</cryptomator.webdav.version>
<cryptomator.webdav-servlet.version>1.2.12</cryptomator.webdav-servlet.version> <cryptomator.webdav-servlet.version>1.2.12</cryptomator.webdav-servlet.version>
<!-- 3rd party dependencies --> <!-- 3rd party dependencies -->
<caffeine.version>3.2.3</caffeine.version> <caffeine.version>3.2.4</caffeine.version>
<commons-lang3.version>3.20.0</commons-lang3.version> <commons-lang3.version>3.20.0</commons-lang3.version>
<dagger.version>2.59.2</dagger.version> <dagger.version>2.59.2</dagger.version>
<easybind.version>2.2</easybind.version> <easybind.version>2.2</easybind.version>
<jackson.version>2.21.1</jackson.version> <jackson.version>2.21.4</jackson.version>
<javafx.version>25.0.2</javafx.version> <javafx.version>25.0.3</javafx.version>
<jwt.version>4.5.1</jwt.version> <jwt.version>4.5.2</jwt.version>
<nimbus-jose.version>10.5</nimbus-jose.version> <nimbus-jose.version>10.5</nimbus-jose.version>
<logback.version>1.5.32</logback.version> <logback.version>1.5.35</logback.version>
<slf4j.version>2.0.17</slf4j.version> <slf4j.version>2.0.18</slf4j.version>
<tinyoauth2.version>0.8.1</tinyoauth2.version> <tinyoauth2.version>0.8.1</tinyoauth2.version>
<zxcvbn.version>1.9.0</zxcvbn.version> <zxcvbn.version>1.9.0</zxcvbn.version>
<!-- test dependencies --> <!-- test dependencies -->
<junit.jupiter.version>6.0.3</junit.jupiter.version> <junit.jupiter.version>6.1.0</junit.jupiter.version>
<mockito.version>5.22.0</mockito.version> <mockito.version>5.23.0</mockito.version>
<hamcrest.version>3.0</hamcrest.version> <hamcrest.version>3.0</hamcrest.version>
<!-- build-time dependencies --> <!-- build-time dependencies -->
<jetbrains.annotations.version>26.1.0</jetbrains.annotations.version> <jetbrains.annotations.version>26.1.0</jetbrains.annotations.version>
<dependency-check.version>12.2.0</dependency-check.version> <dependency-check.version>12.2.2</dependency-check.version>
<jacoco.version>0.8.14</jacoco.version> <jacoco.version>0.8.15</jacoco.version>
<license-generator.version>2.7.1</license-generator.version> <license-generator.version>2.7.1</license-generator.version>
<junit-tree-reporter.version>1.5.1</junit-tree-reporter.version>
<mvn-compiler.version>3.15.0</mvn-compiler.version> <mvn-compiler.version>3.15.0</mvn-compiler.version>
<mvn-resources.version>3.5.0</mvn-resources.version> <mvn-resources.version>3.5.0</mvn-resources.version>
<mvn-dependency.version>3.10.0</mvn-dependency.version> <mvn-dependency.version>3.11.0</mvn-dependency.version>
<mvn-surefire.version>3.5.3</mvn-surefire.version> <mvn-surefire.version>3.5.6</mvn-surefire.version>
<mvn-jar.version>3.5.0</mvn-jar.version> <mvn-jar.version>3.5.0</mvn-jar.version>
<!-- Property used by surefire to determine jacoco engine --> <!-- Property used by surefire to determine jacoco engine -->
@@ -356,22 +355,12 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<dependencies>
<dependency>
<groupId>me.fabriciorby</groupId>
<artifactId>maven-surefire-junit5-tree-reporter</artifactId>
<version>${junit-tree-reporter.version}</version>
</dependency>
</dependencies>
<configuration> <configuration>
<reportFormat>plain</reportFormat> <reportFormat>plain</reportFormat>
<consoleOutputReporter> <consoleOutputReporter>
<disable>true</disable> <disable>true</disable>
</consoleOutputReporter> </consoleOutputReporter>
<argLine>@{surefire.jacoco.args} -javaagent:${org.mockito:mockito-core:jar} --enable-native-access=javafx.graphics</argLine> <argLine>@{surefire.jacoco.args} -javaagent:${org.mockito:mockito-core:jar} --enable-native-access=javafx.graphics</argLine>
<statelessTestsetInfoReporter
implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5StatelessTestsetInfoTreeReporter">
</statelessTestsetInfoReporter>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
@@ -513,9 +502,6 @@
<os> <os>
<family>mac</family> <family>mac</family>
</os> </os>
<property>
<name>idea.version</name>
</property>
</activation> </activation>
<dependencies> <dependencies>
<dependency> <dependency>
@@ -531,12 +517,9 @@
<activation> <activation>
<os> <os>
<family>unix</family> <family>unix</family>
<name>Linux</name> <name>linux</name>
<arch>aarch64</arch> <arch>aarch64</arch>
</os> </os>
<property>
<name>idea.version</name>
</property>
</activation> </activation>
<dependencies> <dependencies>
<dependency> <dependency>
@@ -576,12 +559,9 @@
<activation> <activation>
<os> <os>
<family>unix</family> <family>unix</family>
<name>Linux</name> <name>linux</name>
<arch>amd64</arch> <arch>amd64</arch>
</os> </os>
<property>
<name>idea.version</name>
</property>
</activation> </activation>
<dependencies> <dependencies>
<dependency> <dependency>
@@ -598,9 +578,6 @@
<os> <os>
<family>windows</family> <family>windows</family>
</os> </os>
<property>
<name>idea.version</name>
</property>
</activation> </activation>
<dependencies> <dependencies>
<dependency> <dependency>
@@ -0,0 +1,32 @@
package org.cryptomator.common.vaults;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
public class NotAVaultDirectoryException extends NoSuchFileException {
public enum Reason {
MISSING_DATA_DIR,
DATA_NOT_A_DIRECTORY,
MISSING_VAULT_CONFIG,
VAULT_CONFIG_ACCESS_DENIED,
UNSUPPORTED_STRUCTURE
}
private final transient Path path;
private final Reason reason;
public NotAVaultDirectoryException(Path path, Reason reason) {
super(path.toString(), null, "Not a vault directory: " + reason);
this.path = path;
this.reason = reason;
}
public Path path() {
return path;
}
public Reason notAVaultReason() {
return reason;
}
}
@@ -22,20 +22,31 @@ import org.slf4j.LoggerFactory;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import javafx.application.Platform;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.file.AccessDeniedException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.NoSuchFileException; import java.nio.file.NoSuchFileException;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; import static org.cryptomator.common.Constants.MASTERKEY_FILENAME;
import static org.cryptomator.common.Constants.VAULTCONFIG_FILENAME; import static org.cryptomator.common.Constants.VAULTCONFIG_FILENAME;
import static org.cryptomator.common.vaults.VaultState.Value.*; import static org.cryptomator.common.vaults.VaultState.Value.ALL_MISSING;
import static org.cryptomator.common.vaults.VaultState.Value.ERROR;
import static org.cryptomator.common.vaults.VaultState.Value.LOCKED;
import static org.cryptomator.common.vaults.VaultState.Value.MISSING;
import static org.cryptomator.common.vaults.VaultState.Value.NEEDS_MIGRATION;
import static org.cryptomator.common.vaults.VaultState.Value.PROCESSING;
import static org.cryptomator.common.vaults.VaultState.Value.UNLOCKED;
import static org.cryptomator.common.vaults.VaultState.Value.VAULT_CONFIG_MISSING;
import static org.cryptomator.cryptofs.common.Constants.DATA_DIR_NAME;
@Singleton @Singleton
public class VaultListManager { public class VaultListManager {
@@ -72,18 +83,57 @@ public class VaultListManager {
return vaultList.stream().anyMatch(v -> vaultPath.equals(v.getPath())); return vaultList.stream().anyMatch(v -> vaultPath.equals(v.getPath()));
} }
/**
* Safe to call from any thread: the IO work runs on the calling thread, but the
* {@code ObservableList} mutation is marshaled to the JavaFX application thread.
*/
public Vault add(Path pathToVault) throws IOException { public Vault add(Path pathToVault) throws IOException {
Path normalizedPathToVault = pathToVault.normalize().toAbsolutePath(); Path normalizedPathToVault = pathToVault.normalize().toAbsolutePath();
if (CryptoFileSystemProvider.checkDirStructureForVault(normalizedPathToVault, VAULTCONFIG_FILENAME, MASTERKEY_FILENAME) == DirStructure.UNRELATED) { assertIsVaultDirectory(normalizedPathToVault);
throw new NoSuchFileException(normalizedPathToVault.toString(), null, "Not a vault directory");
}
return get(normalizedPathToVault) // return get(normalizedPathToVault).orElseGet(() -> {
.orElseGet(() -> { Vault newVault = create(newVaultSettings(normalizedPathToVault));
Vault newVault = create(newVaultSettings(normalizedPathToVault)); if (Platform.isFxApplicationThread()) {
vaultList.add(newVault); addVault(newVault);
return newVault; } else {
}); Platform.runLater(() -> addVault(newVault));
}
return newVault;
});
}
public static void assertIsVaultDirectory(Path pathToVault) throws IOException {
if (CryptoFileSystemProvider.checkDirStructureForVault(pathToVault, VAULTCONFIG_FILENAME, MASTERKEY_FILENAME) == DirStructure.UNRELATED) {
checkDataDir(pathToVault);
checkConfigFile(pathToVault);
//if vault is legacy _and_ not readable, just say unsupported
throw new NotAVaultDirectoryException(pathToVault, NotAVaultDirectoryException.Reason.UNSUPPORTED_STRUCTURE);
}
}
static void checkDataDir(Path pathToVault) throws NotAVaultDirectoryException {
Path dataDir = pathToVault.resolve(DATA_DIR_NAME);
if (!Files.exists(dataDir)) {
throw new NotAVaultDirectoryException(pathToVault, NotAVaultDirectoryException.Reason.MISSING_DATA_DIR);
}
if (!Files.isDirectory(dataDir)) {
throw new NotAVaultDirectoryException(pathToVault, NotAVaultDirectoryException.Reason.DATA_NOT_A_DIRECTORY);
}
}
static void checkConfigFile(Path pathToVault) throws NotAVaultDirectoryException {
Path vaultConfig = pathToVault.resolve(VAULTCONFIG_FILENAME);
try (var ch = Files.newByteChannel(vaultConfig, StandardOpenOption.READ)) {
ch.read(ByteBuffer.allocate(1));
} catch (AccessDeniedException e) {
throw new NotAVaultDirectoryException(pathToVault, NotAVaultDirectoryException.Reason.VAULT_CONFIG_ACCESS_DENIED);
} catch (NoSuchFileException e) {
throw new NotAVaultDirectoryException(pathToVault, NotAVaultDirectoryException.Reason.MISSING_VAULT_CONFIG);
} catch (IOException e) {
LOG.warn("Failed to read vault config: {}", e.getMessage());
throw new NotAVaultDirectoryException(pathToVault, NotAVaultDirectoryException.Reason.UNSUPPORTED_STRUCTURE);
}
} }
private VaultSettings newVaultSettings(Path path) { private VaultSettings newVaultSettings(Path path) {
@@ -153,7 +203,7 @@ public class VaultListManager {
//for legacy reasons: pre v8 vault do not have a config, but they are in the NEEDS_MIGRATION state //for legacy reasons: pre v8 vault do not have a config, but they are in the NEEDS_MIGRATION state
vaultSettings.lastKnownKeyLoader.set(MasterkeyFileLoadingStrategy.SCHEME); vaultSettings.lastKnownKeyLoader.set(MasterkeyFileLoadingStrategy.SCHEME);
} }
case VAULT_CONFIG_MISSING -> { case VAULT_CONFIG_MISSING -> {
//Nothing to do here, since there is no config to read //Nothing to do here, since there is no config to read
} }
case MISSING, ALL_MISSING, ERROR, PROCESSING -> { case MISSING, ALL_MISSING, ERROR, PROCESSING -> {
@@ -2,12 +2,14 @@ package org.cryptomator.ui.addvaultwizard;
import dagger.Lazy; import dagger.Lazy;
import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.vaults.NotAVaultDirectoryException;
import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.VaultListManager; import org.cryptomator.common.vaults.VaultListManager;
import org.cryptomator.integrations.uiappearance.Theme; import org.cryptomator.integrations.uiappearance.Theme;
import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.common.FxmlFile; import org.cryptomator.ui.common.FxmlFile;
import org.cryptomator.ui.common.FxmlScene; import org.cryptomator.ui.common.FxmlScene;
import org.cryptomator.ui.dialogs.Dialogs;
import org.cryptomator.ui.fxapp.FxApplicationStyle; import org.cryptomator.ui.fxapp.FxApplicationStyle;
import org.cryptomator.ui.fxapp.FxApplicationWindows; import org.cryptomator.ui.fxapp.FxApplicationWindows;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -41,6 +43,7 @@ public class ChooseExistingVaultController implements FxController {
private final ObjectProperty<Vault> vault; private final ObjectProperty<Vault> vault;
private final VaultListManager vaultListManager; private final VaultListManager vaultListManager;
private final ResourceBundle resourceBundle; private final ResourceBundle resourceBundle;
private final Dialogs dialogs;
private final ObservableValue<Image> screenshot; private final ObservableValue<Image> screenshot;
@Inject @Inject
@@ -51,6 +54,7 @@ public class ChooseExistingVaultController implements FxController {
@AddVaultWizardWindow ObjectProperty<Vault> vault, // @AddVaultWizardWindow ObjectProperty<Vault> vault, //
VaultListManager vaultListManager, // VaultListManager vaultListManager, //
ResourceBundle resourceBundle, // ResourceBundle resourceBundle, //
Dialogs dialogs, //
FxApplicationStyle applicationStyle) { FxApplicationStyle applicationStyle) {
this.window = window; this.window = window;
this.successScene = successScene; this.successScene = successScene;
@@ -59,6 +63,7 @@ public class ChooseExistingVaultController implements FxController {
this.vault = vault; this.vault = vault;
this.vaultListManager = vaultListManager; this.vaultListManager = vaultListManager;
this.resourceBundle = resourceBundle; this.resourceBundle = resourceBundle;
this.dialogs = dialogs;
this.screenshot = applicationStyle.appliedAppThemeProperty().map(this::selectScreenshot); this.screenshot = applicationStyle.appliedAppThemeProperty().map(this::selectScreenshot);
} }
@@ -87,6 +92,9 @@ public class ChooseExistingVaultController implements FxController {
Vault newVault = vaultListManager.add(vaultPath.get()); Vault newVault = vaultListManager.add(vaultPath.get());
vault.set(newVault); vault.set(newVault);
window.setScene(successScene.get()); window.setScene(successScene.get());
} catch (NotAVaultDirectoryException e) {
LOG.warn("Selected folder is not a vault directory: {}", e.getMessage());
dialogs.prepareNotAVaultDirectoryDialog(window, e).build().showAndWait();
} catch (IOException e) { } catch (IOException e) {
LOG.error("Failed to open existing vault.", e); LOG.error("Failed to open existing vault.", e);
appWindows.showErrorWindow(e, window, window.getScene()); appWindows.showErrorWindow(e, window, window.getScene());
@@ -1,6 +1,7 @@
package org.cryptomator.ui.dialogs; package org.cryptomator.ui.dialogs;
import org.cryptomator.common.settings.Settings; import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.vaults.NotAVaultDirectoryException;
import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.DefaultSceneFactory;
import org.cryptomator.ui.common.StageFactory; import org.cryptomator.ui.common.StageFactory;
@@ -139,6 +140,24 @@ public class Dialogs {
.setCancelAction(Stage::close); .setCancelAction(Stage::close);
} }
public SimpleDialog.Builder prepareNotAVaultDirectoryDialog(Stage window, NotAVaultDirectoryException e) {
String descriptionKey = switch (e.notAVaultReason()) {
case MISSING_DATA_DIR -> "addvaultwizard.existing.notAVault.description.missingDataDir";
case DATA_NOT_A_DIRECTORY -> "addvaultwizard.existing.notAVault.description.dataNotADirectory";
case MISSING_VAULT_CONFIG -> "addvaultwizard.existing.notAVault.description.missingVaultConfig";
case VAULT_CONFIG_ACCESS_DENIED -> "addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied";
case UNSUPPORTED_STRUCTURE -> "addvaultwizard.existing.notAVault.description.unsupportedStructure";
};
return createDialogBuilder() //
.setOwner(window) //
.setTitleKey("addvaultwizard.existing.notAVault.title") //
.setMessageKey("addvaultwizard.existing.notAVault.message") //
.setDescriptionKey(descriptionKey, e.path().getFileName() != null ? e.path().getFileName().toString() : e.path().toString()) //
.setIcon(FontAwesome5Icon.EXCLAMATION) //
.setOkButtonKey(BUTTON_KEY_CLOSE) //
.setOkAction(Stage::close);
}
public SimpleDialog.Builder prepareNoDDirectorySelectedDialog(Stage window) { public SimpleDialog.Builder prepareNoDDirectorySelectedDialog(Stage window) {
return createDialogBuilder() // return createDialogBuilder() //
.setOwner(window) // .setOwner(window) //
@@ -1,15 +1,18 @@
package org.cryptomator.ui.fxapp; package org.cryptomator.ui.fxapp;
import org.cryptomator.common.vaults.NotAVaultDirectoryException;
import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.VaultListManager; import org.cryptomator.common.vaults.VaultListManager;
import org.cryptomator.launcher.AppLaunchEvent; import org.cryptomator.launcher.AppLaunchEvent;
import org.cryptomator.ui.common.VaultService; import org.cryptomator.ui.common.VaultService;
import org.cryptomator.ui.dialogs.Dialogs;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.stage.Stage;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Optional; import java.util.Optional;
@@ -29,14 +32,18 @@ class AppLaunchEventHandler {
private final FxApplicationWindows appWindows; private final FxApplicationWindows appWindows;
private final VaultListManager vaultListManager; private final VaultListManager vaultListManager;
private final VaultService vaultService; private final VaultService vaultService;
private final Stage primaryStage;
private final Dialogs dialogs;
@Inject @Inject
public AppLaunchEventHandler(@Named("launchEventQueue") BlockingQueue<AppLaunchEvent> launchEventQueue, ExecutorService executorService, FxApplicationWindows appWindows, VaultListManager vaultListManager, VaultService vaultService) { public AppLaunchEventHandler(@Named("launchEventQueue") BlockingQueue<AppLaunchEvent> launchEventQueue, ExecutorService executorService, FxApplicationWindows appWindows, VaultListManager vaultListManager, VaultService vaultService, @PrimaryStage Stage primaryStage, Dialogs dialogs) {
this.launchEventQueue = launchEventQueue; this.launchEventQueue = launchEventQueue;
this.executorService = executorService; this.executorService = executorService;
this.appWindows = appWindows; this.appWindows = appWindows;
this.vaultListManager = vaultListManager; this.vaultListManager = vaultListManager;
this.vaultService = vaultService; this.vaultService = vaultService;
this.primaryStage = primaryStage;
this.dialogs = dialogs;
} }
public void startHandlingLaunchEvents() { public void startHandlingLaunchEvents() {
@@ -58,31 +65,33 @@ class AppLaunchEventHandler {
private void handleLaunchEvent(AppLaunchEvent event) { private void handleLaunchEvent(AppLaunchEvent event) {
switch (event.type()) { switch (event.type()) {
case REVEAL_APP -> appWindows.showMainWindow(); case REVEAL_APP -> appWindows.showMainWindow();
case OPEN_FILE -> Platform.runLater(() -> { case OPEN_FILE -> event.pathsToOpen().forEach(this::openPotentialVault);
event.pathsToOpen().forEach(this::openPotentialVault);
});
default -> LOG.warn("Unsupported event type: {}", event.type()); default -> LOG.warn("Unsupported event type: {}", event.type());
} }
} }
// TODO deduplicate MainWindowController... // TODO deduplicate MainWindowController...
private void openPotentialVault(Path path) { private void openPotentialVault(Path path) {
assert Platform.isFxApplicationThread(); Path potentialVaultPath = path.getFileName().toString().endsWith(CRYPTOMATOR_FILENAME_EXT) ? path.getParent() : path;
try { Optional<Vault> existing = vaultListManager.get(potentialVaultPath.normalize().toAbsolutePath());
Path potentialVaultPath = path.getFileName().toString().endsWith(CRYPTOMATOR_FILENAME_EXT) ? path.getParent() : path; if (existing.isPresent()) {
final Optional<Vault> v = vaultListManager.get(potentialVaultPath); Platform.runLater(() -> {
if (v.isPresent()) { if (existing.get().isUnlocked()) {
if (v.get().isUnlocked()) { vaultService.reveal(existing.get());
vaultService.reveal(v.get()); } else if (existing.get().isLocked()) {
} else if (v.get().isLocked()) { appWindows.startUnlockWorkflow(existing.get(), null);
appWindows.startUnlockWorkflow(v.get(), null);
} }
} else { });
vaultListManager.add(potentialVaultPath); return;
LOG.debug("Added vault {}", potentialVaultPath); }
} try {
vaultListManager.add(potentialVaultPath);
LOG.debug("Added vault {}", potentialVaultPath);
} catch (NotAVaultDirectoryException e) {
LOG.warn("Cannot add {}: {}", potentialVaultPath, e.getMessage());
Platform.runLater(() -> dialogs.prepareNotAVaultDirectoryDialog(primaryStage, e).build().showAndWait());
} catch (IOException e) { } catch (IOException e) {
LOG.error("Failed to add vault " + path, e); LOG.error("Failed to add vault {}", potentialVaultPath, e);
} }
} }
@@ -4,6 +4,7 @@ import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.recovery.RecoveryActionType; import org.cryptomator.common.recovery.RecoveryActionType;
import org.cryptomator.common.recovery.VaultPreparator; import org.cryptomator.common.recovery.VaultPreparator;
import org.cryptomator.common.settings.Settings; import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.vaults.NotAVaultDirectoryException;
import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.VaultComponent; import org.cryptomator.common.vaults.VaultComponent;
import org.cryptomator.common.vaults.VaultListManager; import org.cryptomator.common.vaults.VaultListManager;
@@ -23,6 +24,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.inject.Inject; import javax.inject.Inject;
import javafx.application.Platform;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding; import javafx.beans.binding.BooleanBinding;
import javafx.beans.property.BooleanProperty; import javafx.beans.property.BooleanProperty;
@@ -55,6 +57,7 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static org.cryptomator.common.Constants.CRYPTOMATOR_FILENAME_EXT; import static org.cryptomator.common.Constants.CRYPTOMATOR_FILENAME_EXT;
@@ -90,6 +93,7 @@ public class VaultListController implements FxController {
private final VaultComponent.Factory vaultComponentFactory; private final VaultComponent.Factory vaultComponentFactory;
private final RecoveryKeyComponent.Factory recoveryKeyWindow; private final RecoveryKeyComponent.Factory recoveryKeyWindow;
private final List<MountService> mountServices; private final List<MountService> mountServices;
private final ExecutorService executor;
public ListView<Vault> vaultList; public ListView<Vault> vaultList;
public StackPane root; public StackPane root;
@@ -113,7 +117,8 @@ public class VaultListController implements FxController {
RecoveryKeyComponent.Factory recoveryKeyWindow, // RecoveryKeyComponent.Factory recoveryKeyWindow, //
VaultComponent.Factory vaultComponentFactory, // VaultComponent.Factory vaultComponentFactory, //
List<MountService> mountServices, // List<MountService> mountServices, //
FxFSEventList fxFSEventList) { FxFSEventList fxFSEventList, //
ExecutorService executor) {
this.mainWindow = mainWindow; this.mainWindow = mainWindow;
this.vaults = vaults; this.vaults = vaults;
this.selectedVault = selectedVault; this.selectedVault = selectedVault;
@@ -127,6 +132,7 @@ public class VaultListController implements FxController {
this.recoveryKeyWindow = recoveryKeyWindow; this.recoveryKeyWindow = recoveryKeyWindow;
this.vaultComponentFactory = vaultComponentFactory; this.vaultComponentFactory = vaultComponentFactory;
this.mountServices = mountServices; this.mountServices = mountServices;
this.executor = executor;
this.emptyVaultList = Bindings.isEmpty(vaults); this.emptyVaultList = Bindings.isEmpty(vaults);
this.unreadEvents = fxFSEventList.unreadEventsProperty(); this.unreadEvents = fxFSEventList.unreadEventsProperty();
@@ -324,15 +330,18 @@ public class VaultListController implements FxController {
} }
private void addVault(Path pathToVault) { private void addVault(Path pathToVault) {
try { Path target = pathToVault.getFileName().toString().endsWith(CRYPTOMATOR_FILENAME_EXT) ? pathToVault.getParent() : pathToVault;
if (pathToVault.getFileName().toString().endsWith(CRYPTOMATOR_FILENAME_EXT)) { executor.execute(() -> {
vaultListManager.add(pathToVault.getParent()); try {
} else { vaultListManager.add(target);
vaultListManager.add(pathToVault); } catch (NotAVaultDirectoryException e) {
LOG.warn("Cannot add {}: {}", target, e.getMessage());
Platform.runLater(() -> dialogs.prepareNotAVaultDirectoryDialog(mainWindow, e).build().showAndWait());
} catch (IOException e) {
LOG.warn("Failed to add vault {}", target, e);
Platform.runLater(() -> appWindows.showErrorWindow(e, mainWindow, null));
} }
} catch (IOException e) { });
LOG.debug("Not a vault: {}", pathToVault);
}
} }
@FXML @FXML
@@ -110,6 +110,13 @@ addvaultwizard.existing.restore=Restore…
addvaultwizard.existing.chooseBtn=Choose… addvaultwizard.existing.chooseBtn=Choose…
addvaultwizard.existing.filePickerTitle=Select Vault File addvaultwizard.existing.filePickerTitle=Select Vault File
addvaultwizard.existing.filePickerMimeDesc=Cryptomator Vault addvaultwizard.existing.filePickerMimeDesc=Cryptomator Vault
addvaultwizard.existing.notAVault.title=Not a Vault
addvaultwizard.existing.notAVault.message=The selected folder is not a Cryptomator vault
addvaultwizard.existing.notAVault.description.missingDataDir=The required "d" subdirectory is missing inside "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=The "d" entry inside "%s" is not a directory.
addvaultwizard.existing.notAVault.description.missingVaultConfig=The required "vault.cryptomator" file is missing inside "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=File "vault.cryptomator" inside "%s" cannot be read due to insufficient access rights.
addvaultwizard.existing.notAVault.description.unsupportedStructure=The directory structure of "%s" is not supported.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Added vault "%s".\nYou need to unlock this vault to access or add contents. Alternatively you can unlock it at any later point in time. addvaultwizard.success.nextStepsInstructions=Added vault "%s".\nYou need to unlock this vault to access or add contents. Alternatively you can unlock it at any later point in time.
addvaultwizard.success.unlockNow=Unlock Now addvaultwizard.success.unlockNow=Unlock Now
@@ -32,6 +32,7 @@
## Success ## Success
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -40,6 +41,7 @@
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -154,4 +156,4 @@
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -154,6 +154,8 @@ unlock.error.title=فشل فتح "%s"
hub.noKeychain.message=غير قادر على الوصول إلى مفتاح الجهاز hub.noKeychain.message=غير قادر على الوصول إلى مفتاح الجهاز
hub.noKeychain.description=من أجل فتح مركز مخازن، مطلوب مفتاح جهاز، يتم تأمينه باستخدام سلسلة مفاتيح. للمضي قدما، قم بتمكين "%s" واختر سلسلة مفاتيح في التفضيلات. hub.noKeychain.description=من أجل فتح مركز مخازن، مطلوب مفتاح جهاز، يتم تأمينه باستخدام سلسلة مفاتيح. للمضي قدما، قم بتمكين "%s" واختر سلسلة مفاتيح في التفضيلات.
hub.noKeychain.openBtn=فتح التفضيلات hub.noKeychain.openBtn=فتح التفضيلات
### Check Host Authenticity
hub.checkHostTrust.trustBtn=ثق
### Waiting ### Waiting
hub.auth.message=جاري الانتظار للمصادقة… hub.auth.message=جاري الانتظار للمصادقة…
hub.auth.description=يجب أن يتم إعادة توجيهك تلقائياً إلى صفحة تسجيل الدخول. hub.auth.description=يجب أن يتم إعادة توجيهك تلقائياً إلى صفحة تسجيل الدخول.
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=هذا الجهاز مسجل
### Unauthorized ### Unauthorized
hub.unauthorized.message=تم رفض الوصول hub.unauthorized.message=تم رفض الوصول
hub.unauthorized.description=غير مسموح لك بفتح هذا المستودع. اتصل بمالك المستودع لطلب الوصول. hub.unauthorized.description=غير مسموح لك بفتح هذا المستودع. اتصل بمالك المستودع لطلب الوصول.
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=مطلوب اتخاذ إجراء hub.requireAccountInit.message=مطلوب اتخاذ إجراء
hub.requireAccountInit.description.0=للمتابعة، يرجى إكمال الخطوات المطلوبة في hub.requireAccountInit.description.0=للمتابعة، يرجى إكمال الخطوات المطلوبة في
@@ -645,4 +648,4 @@ eventView.entry.inUse.showEncrypted=عرض ملَف المشفر
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -151,6 +151,8 @@ unlock.error.title="%s" биге асылманы
hub.noKeychain.message=Йыһаз асҡысына инеү рөхсәте юҡ hub.noKeychain.message=Йыһаз асҡысына инеү рөхсәте юҡ
hub.noKeychain.description=Хаб һаҡлағыстарын асыу өсөн йыһаз асҡысы кәрәк, ул иһә асҡыс сылбырында һаҡлана. Артабан “%s” мөмкинлеге бирегеҙ һәм көйләүҙәрҙә асҡыс сылбырын һайлағыҙ. hub.noKeychain.description=Хаб һаҡлағыстарын асыу өсөн йыһаз асҡысы кәрәк, ул иһә асҡыс сылбырында һаҡлана. Артабан “%s” мөмкинлеге бирегеҙ һәм көйләүҙәрҙә асҡыс сылбырын һайлағыҙ.
hub.noKeychain.openBtn=Көйләүҙәрҙе ас hub.noKeychain.openBtn=Көйләүҙәрҙе ас
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Ышан
### Waiting ### Waiting
hub.auth.message=Аутентиклау көтөлә… hub.auth.message=Аутентиклау көтөлә…
hub.auth.description=Автоматик рәүештә инеү битенә йүнәлтелергә тейешһегеҙ. hub.auth.description=Автоматик рәүештә инеү битенә йүнәлтелергә тейешһегеҙ.
@@ -170,6 +172,7 @@ hub.registerSuccess.unlockBtn=Биген ас
### Archived ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=Инеү кире ҡағылды hub.unauthorized.message=Инеү кире ҡағылды
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Эш-хәрәкәт кәрәкле hub.requireAccountInit.message=Эш-хәрәкәт кәрәкле
hub.requireAccountInit.description.0=Дауам итер өсөн, кәрәкле аҙымдар тамамланырға тейеш урын: hub.requireAccountInit.description.0=Дауам итер өсөн, кәрәкле аҙымдар тамамланырға тейеш урын:
@@ -555,4 +558,4 @@ dokanySupportEnd.preferencesBtn=Көйләүҙәрҙе ас
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -145,6 +145,7 @@ unlock.error.customPath.description.inUse=Дыскавая літара або
hub.noKeychain.message=Няма доступу да ключа прылады hub.noKeychain.message=Няма доступу да ключа прылады
hub.noKeychain.description=Каб разамкнуць скарбніцы Hub, патрэбны ключ прылады, які захаваны ў звязку ключоў. Каб працягнуць, уключы "%s" ды абяры звязак ключоў у наладах. hub.noKeychain.description=Каб разамкнуць скарбніцы Hub, патрэбны ключ прылады, які захаваны ў звязку ключоў. Каб працягнуць, уключы "%s" ды абяры звязак ключоў у наладах.
hub.noKeychain.openBtn=Адчыніць налады hub.noKeychain.openBtn=Адчыніць налады
### Check Host Authenticity
### Waiting ### Waiting
hub.auth.message=Чаканне спраўджання… hub.auth.message=Чаканне спраўджання…
hub.auth.description=Ты мусіш аўтаматычна перанакіравацца на старонку ўваходу. hub.auth.description=Ты мусіш аўтаматычна перанакіравацца на старонку ўваходу.
@@ -162,6 +163,7 @@ hub.registerSuccess.unlockBtn=Адамкнуць
### Archived ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=Адмова ў доступе hub.unauthorized.message=Адмова ў доступе
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
hub.invalidLicense.message=Несапраўдная ліцэнзія Hub hub.invalidLicense.message=Несапраўдная ліцэнзія Hub
@@ -532,4 +534,4 @@ dokanySupportEnd.preferencesBtn=Адчыніць налады
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -158,6 +158,7 @@ unlock.error.title=Неуспешно отключване на „%s“
hub.noKeychain.message=Няма достъп до ключа на устройството hub.noKeychain.message=Няма достъп до ключа на устройството
hub.noKeychain.description=За да отключите хранилищата в Hub е необходим ключ за устройството, който се защитава с помощта на ключодържател. За да продължите, разрешете „%s“ и изберете ключодържателя в настройките. hub.noKeychain.description=За да отключите хранилищата в Hub е необходим ключ за устройството, който се защитава с помощта на ключодържател. За да продължите, разрешете „%s“ и изберете ключодържателя в настройките.
hub.noKeychain.openBtn=Към настройките hub.noKeychain.openBtn=Към настройките
### Check Host Authenticity
### Waiting ### Waiting
hub.auth.message=Изчакване на удостоверяване… hub.auth.message=Изчакване на удостоверяване…
hub.auth.description=Автоматично ще бъдете пренасочени към страницата за вход. hub.auth.description=Автоматично ще бъдете пренасочени към страницата за вход.
@@ -177,6 +178,7 @@ hub.registerSuccess.unlockBtn=Отключване
### Archived ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=Отказан достъп hub.unauthorized.message=Отказан достъп
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Необходимо е действие hub.requireAccountInit.message=Необходимо е действие
hub.requireAccountInit.description.0=За да продължите завършете необходимите стъпки в hub.requireAccountInit.description.0=За да продължите завършете необходимите стъпки в
@@ -563,4 +565,4 @@ dokanySupportEnd.preferencesBtn=Към настройките
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -92,6 +92,7 @@ unlock.unlockBtn=আনলক করুন
## Success ## Success
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -101,6 +102,7 @@ hub.registerSuccess.unlockBtn=আনলক করুন
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -221,4 +223,4 @@ vaultOptions.mount.mountPoint.directoryPickerButton=নির্বাচন ক
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -104,6 +104,8 @@ unlock.success.rememberChoice=Zapamtite izbor, ne pokazujte ovo ponovo
unlock.success.revealBtn=Otkrij pogon unlock.success.revealBtn=Otkrij pogon
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Povjerenje
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -113,6 +115,7 @@ hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -356,4 +359,4 @@ quit.lockAndQuitBtn=Zaključaj i zatvori
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -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.message=No es pot accedir a la clau del dispositiu
hub.noKeychain.description=Per poder desblocar caixes fortes del Hub es requereix la clau d'un dispositiu, que s'emmagatzema de forma segura en un clauer. Per continuar, habiliti "%s" i seleccioni un clauer en les Preferències. hub.noKeychain.description=Per poder desblocar caixes fortes del Hub es requereix la clau d'un dispositiu, que s'emmagatzema de forma segura en un clauer. Per continuar, habiliti "%s" i seleccioni un clauer en les Preferències.
hub.noKeychain.openBtn=Obrir les Preferències hub.noKeychain.openBtn=Obrir les Preferències
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Confia-hi
### Waiting ### Waiting
hub.auth.message=Sestà esperant lautenticació… hub.auth.message=Sestà esperant lautenticació…
hub.auth.description=Hauríeu de ser redirigits a la pàgina d'accés. 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 ### Unauthorized
hub.unauthorized.message=Accés denegat 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Acció necessària hub.requireAccountInit.message=Acció necessària
hub.requireAccountInit.description.0=Per a continuar, si us plau, seguiu els passos necessaris en el vostre hub.requireAccountInit.description.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 # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -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.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.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 hub.noKeychain.openBtn=Otevřít předvolby
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Důvěřovat
### Waiting ### Waiting
hub.auth.message=Čekání na ověření… 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. 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 ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=Přístup odepřen hub.unauthorized.message=Přístup odepřen
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Požadována akce hub.requireAccountInit.message=Požadována akce
hub.requireAccountInit.description.0=Chcete-li pokračovat, vyplňte prosím požadované kroky ve vašem hub.requireAccountInit.description.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 # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+18 -1
View File
@@ -109,6 +109,13 @@ addvaultwizard.existing.restore=Gendan…
addvaultwizard.existing.chooseBtn=Vælg… addvaultwizard.existing.chooseBtn=Vælg…
addvaultwizard.existing.filePickerTitle=Vælg boks-fil addvaultwizard.existing.filePickerTitle=Vælg boks-fil
addvaultwizard.existing.filePickerMimeDesc=Cryptomator boks addvaultwizard.existing.filePickerMimeDesc=Cryptomator boks
addvaultwizard.existing.notAVault.title=Ikke en boks
addvaultwizard.existing.notAVault.message=Den valgte mappe skal være en gyldig Cryptomator boks
addvaultwizard.existing.notAVault.description.missingDataDir=Den krævede "d" undermappe mangler inde i "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=Indgangen "d" inde i "%s" er ikke en mappe.
addvaultwizard.existing.notAVault.description.missingVaultConfig=Den påkrævede "vault.cryptomator"-fil mangler inde i "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=Filen "vault.cryptomator" inde i "%s" kan ikke læses på grund af utilstrækkelige adgangsrettigheder.
addvaultwizard.existing.notAVault.description.unsupportedStructure=Mappestrukturen for "%s" understøttes ikke.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Tilføjede boks "%s".\nDu skal låse op for denne boks for at tilgå indholdet. Alternativt kan du låse den op på et senere tidspunkt. addvaultwizard.success.nextStepsInstructions=Tilføjede boks "%s".\nDu skal låse op for denne boks for at tilgå indholdet. Alternativt kan du låse den op på et senere tidspunkt.
addvaultwizard.success.unlockNow=Lås op nu addvaultwizard.success.unlockNow=Lås op nu
@@ -161,6 +168,12 @@ unlock.error.title=Oplåsning af "%s" mislykkedes
hub.noKeychain.message=Kan ikke tilgå enhedsnøgle hub.noKeychain.message=Kan ikke tilgå enhedsnøgle
hub.noKeychain.description=En enhedsnøgle er påkrævet for at låse Hub bokse op. Enhedsnøglen er sikret i en nøglering. For at fortsætte, aktivér “%s” og vælg en nøglering i indstillingerne. hub.noKeychain.description=En enhedsnøgle er påkrævet for at låse Hub bokse op. Enhedsnøglen er sikret i en nøglering. For at fortsætte, aktivér “%s” og vælg en nøglering i indstillingerne.
hub.noKeychain.openBtn=Åbn Indstillinger 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 ### Waiting
hub.auth.message=Afventer godkendelse… hub.auth.message=Afventer godkendelse…
hub.auth.description=Du burde automatisk blive omdirigeret til login-siden. hub.auth.description=Du burde automatisk blive omdirigeret til login-siden.
@@ -192,6 +205,9 @@ hub.archived.description=Denne boks er blevet arkiveret og er ikke længere tilg
### Unauthorized ### Unauthorized
hub.unauthorized.message=Adgang nægtet 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Handling påkrævet hub.requireAccountInit.message=Handling påkrævet
hub.requireAccountInit.description.0=For at fortsætte, skal du fuldføre de nødvendige trin i din hub.requireAccountInit.description.0=For at fortsætte, skal du fuldføre de nødvendige trin i din
@@ -305,6 +321,7 @@ preferences.general.debugDirectory=Vis logfiler
preferences.general.autoStart=Start Cryptomator automatisk ved opstart preferences.general.autoStart=Start Cryptomator automatisk ved opstart
preferences.general.keychainBackend=Gem adgangskoder med preferences.general.keychainBackend=Gem adgangskoder med
preferences.general.quickAccessService=Tilføj oplåste bokse til området hurtig adgang preferences.general.quickAccessService=Tilføj oplåste bokse til området hurtig adgang
preferences.general.resetTrustedHosts=Nulstil betroede værter
## Interface ## Interface
preferences.interface=Brugerflade preferences.interface=Brugerflade
preferences.interface.theme=Udseende preferences.interface.theme=Udseende
@@ -716,4 +733,4 @@ eventView.entry.inUse.ignoreLock=Ignorér anvendelsesstatus
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=Filen er i brug på en anden enhed 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.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
@@ -104,6 +104,7 @@ addvaultwizard.existing.restore=Wiederherstellen…
addvaultwizard.existing.chooseBtn=Durchsuchen … addvaultwizard.existing.chooseBtn=Durchsuchen …
addvaultwizard.existing.filePickerTitle=Tresordatei auswählen addvaultwizard.existing.filePickerTitle=Tresordatei auswählen
addvaultwizard.existing.filePickerMimeDesc=Cryptomator-Tresor addvaultwizard.existing.filePickerMimeDesc=Cryptomator-Tresor
addvaultwizard.existing.notAVault.description.unsupportedStructure=Die Verzeichnisstruktur von "%s" wird nicht unterstützt.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Tresor „%s“ wurde hinzugefügt.\nUm auf Inhalte zuzugreifen oder welche hinzuzufügen, musst du den Tresor entsperren. Du kannst ihn aber auch zu jedem späteren Zeitpunkt entsperren. addvaultwizard.success.nextStepsInstructions=Tresor „%s“ wurde hinzugefügt.\nUm auf Inhalte zuzugreifen oder welche hinzuzufügen, musst du den Tresor entsperren. Du kannst ihn aber auch zu jedem späteren Zeitpunkt entsperren.
addvaultwizard.success.unlockNow=Jetzt entsperren addvaultwizard.success.unlockNow=Jetzt entsperren
@@ -156,6 +157,8 @@ unlock.error.title=„%s“ konnte nicht entsperrt werden
hub.noKeychain.message=Zugriff auf Geräteschlüssel nicht möglich hub.noKeychain.message=Zugriff auf Geräteschlüssel nicht möglich
hub.noKeychain.description=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.description=Zum Entsperren von Hub-Tresoren wird ein Geräteschlüssel benötigt, der in einem Schlüsselbund gesichert ist. Um fortzufahren, aktiviere „%s“ und wähle in den Einstellungen einen Schlüsselbund.
hub.noKeychain.openBtn=Einstellungen öffnen hub.noKeychain.openBtn=Einstellungen öffnen
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Vertrauen
### Waiting ### Waiting
hub.auth.message=Warten auf Authentifizierung … hub.auth.message=Warten auf Authentifizierung …
hub.auth.description=Du solltest automatisch zur Anmeldeseite weitergeleitet werden. hub.auth.description=Du solltest automatisch zur Anmeldeseite weitergeleitet werden.
@@ -187,6 +190,7 @@ hub.archived.description=Dieser Tresor wurde archiviert, daher ist ein Zugriff d
### Unauthorized ### Unauthorized
hub.unauthorized.message=Zugriff verweigert 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Aktion erforderlich hub.requireAccountInit.message=Aktion erforderlich
hub.requireAccountInit.description.0=Um fortzufahren, führe bitte die erforderlichen Schritte in deinem hub.requireAccountInit.description.0=Um fortzufahren, führe bitte die erforderlichen Schritte in deinem
@@ -298,6 +302,7 @@ preferences.general.debugDirectory=Protokolldateien anzeigen
preferences.general.autoStart=Cryptomator beim Systemstart starten preferences.general.autoStart=Cryptomator beim Systemstart starten
preferences.general.keychainBackend=Passwörter speichern mit preferences.general.keychainBackend=Passwörter speichern mit
preferences.general.quickAccessService=Entsperrte Tresore zum Schnellzugriff hinzufügen preferences.general.quickAccessService=Entsperrte Tresore zum Schnellzugriff hinzufügen
preferences.general.resetTrustedHosts=Vertrauenswürdige Hosts zurücksetzen
## Interface ## Interface
preferences.interface=Benutzeroberfläche preferences.interface=Benutzeroberfläche
preferences.interface.theme=Erscheinungsbild preferences.interface.theme=Erscheinungsbild
@@ -701,4 +706,4 @@ eventView.entry.inUse.copyUserAndDevice=Benutzer- und Gerätenamen der Sperre ko
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.action=Verwendungsstatus ignorieren notification.inUse.action=Verwendungsstatus ignorieren
@@ -154,6 +154,8 @@ unlock.error.title=Ξεκλείδωμα "%s" απέτυχε
hub.noKeychain.message=Δεν είναι δυνατή η πρόσβαση στο κλειδί της συσκευής hub.noKeychain.message=Δεν είναι δυνατή η πρόσβαση στο κλειδί της συσκευής
hub.noKeychain.description=Για να ξεκλειδώσετε τις κρύπτες Hub, απαιτείται ένα κλειδί συσκευής, το οποίο ασφαλίζεται με χρήση μπρελόκ. Για να συνεχίσετε, ενεργοποιήστε το "%s" και επιλέξτε ένα keychain στις προτιμήσεις. hub.noKeychain.description=Για να ξεκλειδώσετε τις κρύπτες Hub, απαιτείται ένα κλειδί συσκευής, το οποίο ασφαλίζεται με χρήση μπρελόκ. Για να συνεχίσετε, ενεργοποιήστε το "%s" και επιλέξτε ένα keychain στις προτιμήσεις.
hub.noKeychain.openBtn=Άνοιγμα Προτιμήσεων hub.noKeychain.openBtn=Άνοιγμα Προτιμήσεων
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Εμπιστευτείτε
### Waiting ### Waiting
hub.auth.message=Αναμονή για επαλήθευση… hub.auth.message=Αναμονή για επαλήθευση…
hub.auth.description=Θα πρέπει να ανακατευθυνθείτε αυτόματα στη σελίδα σύνδεσης. hub.auth.description=Θα πρέπει να ανακατευθυνθείτε αυτόματα στη σελίδα σύνδεσης.
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=Αυτή η συσκευή ε
### Unauthorized ### Unauthorized
hub.unauthorized.message=Δεν επιτρέπεται η πρόσβαση hub.unauthorized.message=Δεν επιτρέπεται η πρόσβαση
hub.unauthorized.description=Δεν είστε εξουσιοδοτημένοι να ανοίξετε αυτή την κρύπτη. Επικοινωνήστε με τον ιδιοκτήτη τς κρύπτης για να ζητήσετε πρόσβαση. hub.unauthorized.description=Δεν είστε εξουσιοδοτημένοι να ανοίξετε αυτή την κρύπτη. Επικοινωνήστε με τον ιδιοκτήτη τς κρύπτης για να ζητήσετε πρόσβαση.
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Απαιτείται ενέργεια hub.requireAccountInit.message=Απαιτείται ενέργεια
hub.requireAccountInit.description.0=Για να συνεχίσετε, παρακαλούμε ολοκληρώστε τα βήματα που απαιτούνται στο δικό σας hub.requireAccountInit.description.0=Για να συνεχίσετε, παρακαλούμε ολοκληρώστε τα βήματα που απαιτούνται στο δικό σας
@@ -645,4 +648,4 @@ eventView.entry.inUse.showEncrypted=Εμφάνιση κρυπτογραφημέ
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+30 -1
View File
@@ -18,6 +18,11 @@ generic.button.print=Imprimir
generic.button.remove=Eliminar generic.button.remove=Eliminar
## Vault state ## Vault state
vault.state.locked=Bloqueada
vault.state.unlocked=Desbloqueada
vault.state.missing=Faltante
vault.state.migrationNeeded=Migración obligatoria
vault.state.processing=Procesando
vault.state.error=Error vault.state.error=Error
# Error # Error
@@ -104,6 +109,13 @@ addvaultwizard.existing.restore=…
addvaultwizard.existing.chooseBtn=Elegir… addvaultwizard.existing.chooseBtn=Elegir…
addvaultwizard.existing.filePickerTitle=Seleccionar archivo de bóveda addvaultwizard.existing.filePickerTitle=Seleccionar archivo de bóveda
addvaultwizard.existing.filePickerMimeDesc=Bóveda de Cryptomator addvaultwizard.existing.filePickerMimeDesc=Bóveda de Cryptomator
addvaultwizard.existing.notAVault.title=No es una bóveda
addvaultwizard.existing.notAVault.message=La carpeta seleccionada no es una bóveda de Cryptomator
addvaultwizard.existing.notAVault.description.missingDataDir=Falta el subdirectorio "d" necesario dentro de "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=La entrada "d" dentro de "%s" no es un directorio.
addvaultwizard.existing.notAVault.description.missingVaultConfig=Falta el archivo "vault.cryptomator" necesario dentro de "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=El archivo "vault.cryptomator" dentro de "%s" no se puede leer debido a la falta de permisos de acceso.
addvaultwizard.existing.notAVault.description.unsupportedStructure=La estructura de directorios de "%s" no está soportada.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Bóveda "%s" añadida.\nSe necesita desbloquear esta bóveda para acceder o añadir contenido. Alternativamente se \n puede desbloquear en otro momento. addvaultwizard.success.nextStepsInstructions=Bóveda "%s" añadida.\nSe necesita desbloquear esta bóveda para acceder o añadir contenido. Alternativamente se \n puede desbloquear en otro momento.
addvaultwizard.success.unlockNow=Desbloquear ahora addvaultwizard.success.unlockNow=Desbloquear ahora
@@ -156,6 +168,12 @@ unlock.error.title=Error al desbloquear "%s"
hub.noKeychain.message=No se puede acceder a la clave del dispositivo 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.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 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 ### Waiting
hub.auth.message=Esperando la autenticación… 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. hub.auth.description=Debería ser redirigido automáticamente a la página de inicio de sesión.
@@ -182,9 +200,14 @@ hub.registerFailed.message=El registro del dispositivo ha fallado
hub.registerFailed.description.generic=Ha ocurrido un error al intentar registrarse. Para más detalles, consulte el registro de la aplicación. hub.registerFailed.description.generic=Ha ocurrido un error al intentar registrarse. Para más detalles, consulte el registro de la aplicación.
hub.registerFailed.description.deviceAlreadyExists=Este dispositivo ya se ha registrado para otro usuario. Intente cambiar la cuenta de usuario o utilice un dispositivo diferente. hub.registerFailed.description.deviceAlreadyExists=Este dispositivo ya se ha registrado para otro usuario. Intente cambiar la cuenta de usuario o utilice un dispositivo diferente.
### Archived ### Archived
hub.archived.message=Bóveda archivada
hub.archived.description=Esta bóveda ha sido archivada y ya no es accesible. Póngase en contacto con el propietario de la bóveda.
### Unauthorized ### Unauthorized
hub.unauthorized.message=Acceso denegado 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Acción requerida hub.requireAccountInit.message=Acción requerida
hub.requireAccountInit.description.0=Para continuar, por favor complete los pasos necesarios en su hub.requireAccountInit.description.0=Para continuar, por favor complete los pasos necesarios en su
@@ -298,6 +321,7 @@ preferences.general.debugDirectory=Revelar archivos de registro
preferences.general.autoStart=Cargar Cryptomator al iniciar el sistema preferences.general.autoStart=Cargar Cryptomator al iniciar el sistema
preferences.general.keychainBackend=Guardar contraseñas con preferences.general.keychainBackend=Guardar contraseñas con
preferences.general.quickAccessService=Añadir bóvedas desbloqueadas al área de acceso rápido preferences.general.quickAccessService=Añadir bóvedas desbloqueadas al área de acceso rápido
preferences.general.resetTrustedHosts=Restablecer hosts de confianza
## Interface ## Interface
preferences.interface=Interfaz preferences.interface=Interfaz
preferences.interface.theme=Apariencia preferences.interface.theme=Apariencia
@@ -403,6 +427,7 @@ stats.access.total=Accesos totales: %d
# Main Window # Main Window
## Vault List ## Vault List
main.vaultlist=Bóvedas main.vaultlist=Bóvedas
main.vaultlist.listEntry=Bóveda %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Haga clic aquí para añadir una bóveda main.vaultlist.emptyList.onboardingInstruction=Haga clic aquí para añadir una bóveda
main.vaultlist.contextMenu.remove=Eliminar… main.vaultlist.contextMenu.remove=Eliminar…
main.vaultlist.contextMenu.lock=Bloquear main.vaultlist.contextMenu.lock=Bloquear
@@ -420,9 +445,11 @@ main.vaultlist.showPreferencesButton.tooltip=Mostrar preferencias
##Notification ##Notification
main.notification.updateAvailable=Existen actualizaciones disponibles. main.notification.updateAvailable=Existen actualizaciones disponibles.
main.notification.support=Soporte de Cryptomator. main.notification.support=Soporte de Cryptomator.
main.notification.closeButton.tooltip=Cerrar barra de información
## Vault Detail ## Vault Detail
### Welcome ### Welcome
main.vaultDetail.welcomeOnboarding=Gracias por elegir Cryptomator para proteger sus archivos. En caso de necesitar ayuda, revise nuestras guías: main.vaultDetail.welcomeOnboarding=Gracias por elegir Cryptomator para proteger sus archivos. En caso de necesitar ayuda, revise nuestras guías:
main.vaultDetail.storageLocation=Ubicación de almacenamiento en bóveda
### Locked ### Locked
main.vaultDetail.lockedStatus=BLOQUEADA main.vaultDetail.lockedStatus=BLOQUEADA
main.vaultDetail.unlockBtn=Desbloquear… main.vaultDetail.unlockBtn=Desbloquear…
@@ -511,6 +538,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Olvidar contraseña guardada
vaultOptions.masterkey.recoveryKeyExplanation=Una clave de recuperación es el único medio para restaurar el acceso a una bóveda si pierde su contraseña. vaultOptions.masterkey.recoveryKeyExplanation=Una clave de recuperación es el único medio para restaurar el acceso a una bóveda si pierde su contraseña.
vaultOptions.masterkey.showRecoveryKeyBtn=Mostrar clave de recuperación vaultOptions.masterkey.showRecoveryKeyBtn=Mostrar clave de recuperación
vaultOptions.masterkey.recoverPasswordBtn=Restablecer contraseña vaultOptions.masterkey.recoverPasswordBtn=Restablecer contraseña
vaultOptions.masterkey.missingMasterkeyFile=Estas opciones sólo están disponibles si el archivo masterkey está presente en el directorio de la bóveda.
## Hub ## Hub
vaultOptions.hub=Recuperación vaultOptions.hub=Recuperación
vaultOptions.hub.convertInfo=Puede utilizar la clave de recuperación para convertir esta bóveda de Hub en una bóveda con contraseña en una emergencia. vaultOptions.hub.convertInfo=Puede utilizar la clave de recuperación para convertir esta bóveda de Hub en una bóveda con contraseña en una emergencia.
@@ -697,6 +725,7 @@ eventView.entry.brokenFileNode.copyDecrypted=Copiar ruta descifrada
eventView.entry.inUse.message=Fichero en uso eventView.entry.inUse.message=Fichero en uso
eventView.entry.inUse.showDecrypted=Mostrar archivo descifrado eventView.entry.inUse.showDecrypted=Mostrar archivo descifrado
eventView.entry.inUse.showEncrypted=Mostrar archivo cifrado eventView.entry.inUse.showEncrypted=Mostrar archivo cifrado
eventView.entry.inUse.copyUserAndDevice=Copiar nombre de usuario y dispositivo de bloqueo
eventView.entry.inUse.ignoreLock=Ignorar el estado de uso eventView.entry.inUse.ignoreLock=Ignorar el estado de uso
@@ -704,4 +733,4 @@ eventView.entry.inUse.ignoreLock=Ignorar el estado de uso
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=El archivo está en uso en otro dispositivo 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.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
@@ -114,6 +114,7 @@ unlock.success.revealBtn=نمایش درایو
## Failure ## Failure
## Hub ## Hub
hub.noKeychain.openBtn=باز کردن تنظیمات hub.noKeychain.openBtn=باز کردن تنظیمات
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -124,6 +125,7 @@ hub.registerSuccess.unlockBtn=بازکردن قفل
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -256,4 +258,4 @@ dokanySupportEnd.preferencesBtn=باز کردن تنظیمات
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -156,6 +156,7 @@ unlock.error.title="%s" avaaminen epäonnistui
hub.noKeychain.message=Laitteen avainta ei löytynyt 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.description=Hub-holvien purkamiseksi tarvitaan laiteavain joka on suojattu avainrenkaalla. Jatkaaksesi, kytke “%s” päälle ja valitse avainrengas asetuksista.
hub.noKeychain.openBtn=Avaa asetukset hub.noKeychain.openBtn=Avaa asetukset
### Check Host Authenticity
### Waiting ### Waiting
hub.auth.message=Odotetaan todennusta… hub.auth.message=Odotetaan todennusta…
hub.auth.description=Pitäisi ohjata sinut automaattisesti uudelleen kirjautumissivulle. 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 ### Unauthorized
hub.unauthorized.message=Pääsy estetty 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ä. hub.unauthorized.description=Sinulla ei ole oikeutta avata tätä holvia. Ota yhteyttä holvin omistajaan pyytääksesi pääsyä.
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Toimia vaaditaan hub.requireAccountInit.message=Toimia vaaditaan
hub.requireAccountInit.description.0=Jatkaaksesi, ole hyvä ja suorita tarvittavat toimenpiteet hub.requireAccountInit.description.0=Jatkaaksesi, ole hyvä ja suorita tarvittavat toimenpiteet
@@ -698,4 +700,4 @@ eventView.entry.inUse.showEncrypted=Näytä salattu tiedosto
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -154,6 +154,8 @@ unlock.error.title=Hindi mabuksan ang "%s"
hub.noKeychain.message=Hindi ma-access ang key ng device 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.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 hub.noKeychain.openBtn=Buksan ang Mga Kagustuhan
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Magtiwala
### Waiting ### Waiting
hub.auth.message=Naghihintay para sa pagpapatunay… hub.auth.message=Naghihintay para sa pagpapatunay…
hub.auth.description=Dapat kang awtomatikong mai-redirect sa pahina ng pag-login. 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 ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=Walang pahintulot hub.unauthorized.message=Walang pahintulot
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Kinakailangan ang pagkilos hub.requireAccountInit.message=Kinakailangan ang pagkilos
hub.requireAccountInit.description.0=Upang magpatuloy, mangyaring kumpletuhin ang mga hakbang na kinakailangan sa iyong 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 # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+22 -5
View File
@@ -109,6 +109,13 @@ addvaultwizard.existing.restore=Restaurer…
addvaultwizard.existing.chooseBtn=Choisir… addvaultwizard.existing.chooseBtn=Choisir…
addvaultwizard.existing.filePickerTitle=Sélectionnez le fichier correspondant au volume chiffré addvaultwizard.existing.filePickerTitle=Sélectionnez le fichier correspondant au volume chiffré
addvaultwizard.existing.filePickerMimeDesc=Coffre-fort Cryptomator addvaultwizard.existing.filePickerMimeDesc=Coffre-fort Cryptomator
addvaultwizard.existing.notAVault.title=Pas un coffre
addvaultwizard.existing.notAVault.message=Le dossier sélectionné nest pas un coffre Cryptomator
addvaultwizard.existing.notAVault.description.missingDataDir=Le sous-répertoire « d » requis est manquant dans «%s».
addvaultwizard.existing.notAVault.description.dataNotADirectory=L'entrée « d » dans « %s » n'est pas un répertoire.
addvaultwizard.existing.notAVault.description.missingVaultConfig=Le fichier « vault.cryptomator » requis est manquant dans « %s ».
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=Le fichier « vault.cryptomator » dans « %s » ne peut pas être lu en raison de droits daccès insuffisants.
addvaultwizard.existing.notAVault.description.unsupportedStructure=La structure de répertoire de « %s » n'est pas prise en charge.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Coffre “%s” ajouté.\nIl faudra déverrouiller ce coffre afin dy accéder ou dy ajouter du contenu. Cette action peut être réalisée ultérieurement. addvaultwizard.success.nextStepsInstructions=Coffre “%s” ajouté.\nIl faudra déverrouiller ce coffre afin dy accéder ou dy ajouter du contenu. Cette action peut être réalisée ultérieurement.
addvaultwizard.success.unlockNow=Déverrouiller addvaultwizard.success.unlockNow=Déverrouiller
@@ -161,6 +168,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.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.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 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 ### Waiting
hub.auth.message=Authentification en cours… hub.auth.message=Authentification en cours…
hub.auth.description=Vous devriez automatiquement être redirigé vers la page de connexion. hub.auth.description=Vous devriez automatiquement être redirigé vers la page de connexion.
@@ -192,6 +205,9 @@ hub.archived.description=Ce coffre a été archivé et n'est plus accessible. Ve
### Unauthorized ### Unauthorized
hub.unauthorized.message=Accès refusé 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Action requise hub.requireAccountInit.message=Action requise
hub.requireAccountInit.description.0=Pour continuer, veuillez compléter les étapes requises hub.requireAccountInit.description.0=Pour continuer, veuillez compléter les étapes requises
@@ -300,11 +316,12 @@ preferences.title=Préférences
preferences.general=Général preferences.general=Général
preferences.general.startHidden=Démarrer Cryptomator en mode caché preferences.general.startHidden=Démarrer Cryptomator en mode caché
preferences.general.autoCloseVaults=Verrouiller les coffres sans confirmation lors de la fermeture de l'application preferences.general.autoCloseVaults=Verrouiller les coffres sans confirmation lors de la fermeture de l'application
preferences.general.debugLogging=Activer les logs debug preferences.general.debugLogging=Activer les logs de débogage
preferences.general.debugDirectory=Afficher le journal preferences.general.debugDirectory=Afficher les logs
preferences.general.autoStart=Lancer Cryptomator au démarrage du système preferences.general.autoStart=Lancer Cryptomator au démarrage du système
preferences.general.keychainBackend=Stocker les mots de passe avec preferences.general.keychainBackend=Stocker les mots de passe avec
preferences.general.quickAccessService=Ajouter les coffres déverrouillés à la zone d'accès rapide 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 ## Interface
preferences.interface=Interface preferences.interface=Interface
preferences.interface.theme=Apparence preferences.interface.theme=Apparence
@@ -369,7 +386,7 @@ removeCert.description=Les fonctionnalités principales de Cryptomator ne sont p
#<-- Add entries for donations and code/translation/documentation contribution --> #<-- Add entries for donations and code/translation/documentation contribution -->
## About ## About
preferences.about=A propos preferences.about=À propos
preferences.about.thirdPartyLicenses=Licences tierces preferences.about.thirdPartyLicenses=Licences tierces
# Vault Statistics # Vault Statistics
@@ -428,7 +445,7 @@ main.vaultlist.showPreferencesButton.tooltip=Afficher les préférences
##Notification ##Notification
main.notification.updateAvailable=Mise à jour disponible. main.notification.updateAvailable=Mise à jour disponible.
main.notification.support=Soutenir Cryptomator. main.notification.support=Soutenir Cryptomator.
main.notification.closeButton.tooltip="Fermer la barre d'information" main.notification.closeButton.tooltip=Fermer la barre d'information
## Vault Detail ## Vault Detail
### Welcome ### Welcome
main.vaultDetail.welcomeOnboarding=Merci d'avoir choisi Cryptomator pour protéger vos fichiers. Si vous avez besoin d'aide, consultez nos guides de démarrage : main.vaultDetail.welcomeOnboarding=Merci d'avoir choisi Cryptomator pour protéger vos fichiers. Si vous avez besoin d'aide, consultez nos guides de démarrage :
@@ -716,4 +733,4 @@ eventView.entry.inUse.ignoreLock=Ignorer le statut dutilisation
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=Le fichier est utilisé sur un autre appareil 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.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
@@ -46,6 +46,7 @@ error.message=Produciuse un erro
## Success ## Success
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -54,6 +55,7 @@ error.message=Produciuse un erro
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -169,4 +171,4 @@ lock.forced.retryBtn=Tentar de novo
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -150,6 +150,8 @@ unlock.error.customPath.description.notEmptyDir=הנתיב המותאם "%s" א
hub.noKeychain.message=לא ניתן לגשת למפתח המכשיר hub.noKeychain.message=לא ניתן לגשת למפתח המכשיר
hub.noKeychain.description=כדאי לשחרר כספות האב נדרש מפתח מכשיר שיאובטח בצרור מפתחות. כדאי להמשיך, אפשר ״%s״ ובחר את צרור המפתחות בהעדפות. hub.noKeychain.description=כדאי לשחרר כספות האב נדרש מפתח מכשיר שיאובטח בצרור מפתחות. כדאי להמשיך, אפשר ״%s״ ובחר את צרור המפתחות בהעדפות.
hub.noKeychain.openBtn=פתח העדפות hub.noKeychain.openBtn=פתח העדפות
### Check Host Authenticity
hub.checkHostTrust.trustBtn=סמוך
### Waiting ### Waiting
hub.auth.message=ממתין לאימות… hub.auth.message=ממתין לאימות…
hub.auth.description=אתה אמור להיות מופנה אוטומטית למסך ההזדהות. hub.auth.description=אתה אמור להיות מופנה אוטומטית למסך ההזדהות.
@@ -166,6 +168,7 @@ hub.registerSuccess.unlockBtn=בטל נעילה
### Archived ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=הגישה נדחתה hub.unauthorized.message=הגישה נדחתה
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
hub.invalidLicense.message=רישיון האב לא תקף hub.invalidLicense.message=רישיון האב לא תקף
@@ -531,4 +534,4 @@ dokanySupportEnd.preferencesBtn=פתח העדפות
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -142,6 +142,8 @@ unlock.error.title="%s" तिजोरी खोलना विफल रह
## Hub ## Hub
hub.noKeychain.message=उपकरण के कुंजी तक पहुंचने में असमर्थ hub.noKeychain.message=उपकरण के कुंजी तक पहुंचने में असमर्थ
hub.noKeychain.openBtn=प्राथमिकताएँ खोलें hub.noKeychain.openBtn=प्राथमिकताएँ खोलें
### Check Host Authenticity
hub.checkHostTrust.trustBtn=भरोसा करे
### Waiting ### Waiting
hub.auth.message=प्रमाणन के लिए इंतज़ार कर रहे... hub.auth.message=प्रमाणन के लिए इंतज़ार कर रहे...
hub.auth.description=आपको स्वचालित रूप से लॉगिन पृष्ठ पर पुनः निर्देशित किया जाना चाहिए। hub.auth.description=आपको स्वचालित रूप से लॉगिन पृष्ठ पर पुनः निर्देशित किया जाना चाहिए।
@@ -158,6 +160,7 @@ hub.registerSuccess.unlockBtn=अनलॉक करें
### Archived ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=प्रवेश अस्वीकृत hub.unauthorized.message=प्रवेश अस्वीकृत
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=कार्रवाई आवश्यक है hub.requireAccountInit.message=कार्रवाई आवश्यक है
hub.requireAccountInit.description.0=आगे बढ़ने के लिए, कृपया अपने आवश्यक चरणों को पूरा करें hub.requireAccountInit.description.0=आगे बढ़ने के लिए, कृपया अपने आवश्यक चरणों को पूरा करें
@@ -354,4 +357,4 @@ dokanySupportEnd.preferencesBtn=प्राथमिकताएँ खोल
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -116,6 +116,8 @@ unlock.success.rememberChoice=Zapamti izbor, ne prikazuj ovo više
unlock.success.revealBtn=Otkrij pogon unlock.success.revealBtn=Otkrij pogon
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Vjeruj
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -125,6 +127,7 @@ hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -421,4 +424,4 @@ quit.lockAndQuitBtn=Zaključaj i napusti
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+234 -114
View File
@@ -18,11 +18,16 @@ generic.button.print=Nyomtatás
generic.button.remove=Eltávolítás generic.button.remove=Eltávolítás
## Vault state ## Vault state
vault.state.locked=Zárolva
vault.state.unlocked=Feloldva
vault.state.missing=Hiányzó
vault.state.migrationNeeded=Migráció szükséges
vault.state.processing=Feldolgozás
vault.state.error=Hiba vault.state.error=Hiba
# Error # Error
error.message=Hiba: %s error.message=Hiba: %s
error.description=Upsz! A Cryptomator nem számított rá, hogy ez megtörténik. Keressen meglévő megoldást erre a hibára. Vagy ha még nem jelentették, bátran tegye ezt meg. error.description=A Cryptomator nem számított rá, hogy ez megtörténik. Keressen meglévő megoldást erre a hibára. Vagy ha még nem jelentették, bátran tegye ezt meg.
error.hyperlink.lookup=Hiba okának keresése error.hyperlink.lookup=Hiba okának keresése
error.hyperlink.report=Hiba jelentése error.hyperlink.report=Hiba jelentése
error.technicalDetails=Részletek: error.technicalDetails=Részletek:
@@ -33,7 +38,7 @@ error.dismiss=Elvet
error.lookUpSolution=Megoldás keresése error.lookUpSolution=Megoldás keresése
# Defaults # Defaults
defaults.vault.vaultName=Széf defaults.vault.vaultName=Titkosított tároló
# Tray Menu # Tray Menu
traymenu.showMainWindow=Megmutatás traymenu.showMainWindow=Megmutatás
@@ -45,30 +50,30 @@ traymenu.vault.lock=Zárolás
traymenu.vault.reveal=Megmutatás traymenu.vault.reveal=Megmutatás
# Add Vault Wizard # Add Vault Wizard
addvaultwizard.title=Széf hozzáadása addvaultwizard.title=Titkosított tároló hozzáadása
## New ## New
addvaultwizard.new.title=Széf hozzáadása addvaultwizard.new.title=Titkosított tároló hozzáadása
### Name ### Name
addvaultwizard.new.nameInstruction=Válasszon egy nevet az új széf számára addvaultwizard.new.nameInstruction=Válasszon egy nevet a tároló számára
addvaultwizard.new.namePrompt=A széf neve addvaultwizard.new.namePrompt=Titkosított tároló neve
### Location ### Location
addvaultwizard.new.locationInstruction=Hova mentse a Cryptomator a széf titkosított fájljait? addvaultwizard.new.locationInstruction=Hova mentse a tároló titkosított fájljait?
addvaultwizard.new.locationLoading=Helyi fájlrendszer ellenőrzése alapértelmezett felhő tárolási könyvtárakra… addvaultwizard.new.locationLoading=Helyi fájlrendszer ellenőrzése alapértelmezett felhő tárolási könyvtárakra…
addvaultwizard.new.locationLabel=Tárolási hely addvaultwizard.new.locationLabel=Tárolási hely
addvaultwizard.new.locationPrompt= addvaultwizard.new.locationPrompt=
addvaultwizard.new.directoryPickerLabel=Egyedi hely addvaultwizard.new.directoryPickerLabel=Egyedi hely
addvaultwizard.new.directoryPickerButton=Választás… addvaultwizard.new.directoryPickerButton=Választás…
addvaultwizard.new.directoryPickerTitle=Könyvtár kiválasztása addvaultwizard.new.directoryPickerTitle=Könyvtár kiválasztása
addvaultwizard.new.fileAlreadyExists=Már létezik fájl/könyvtár ezzel a trezornévvel addvaultwizard.new.fileAlreadyExists=Már létezik fájl/könyvtár ezzel a tárolónévvel
addvaultwizard.new.locationDoesNotExist=A megadott elérési úton lévő könyvtár nem létezik, vagy nem érhető el addvaultwizard.new.locationDoesNotExist=A megadott elérési úton lévő könyvtár nem létezik, vagy nem érhető el
addvaultwizard.new.locationIsNotWritable=Nincs írási hozzáférés a megadott elérési úthoz addvaultwizard.new.locationIsNotWritable=Nincs írási hozzáférés a megadott elérési úthoz
addvaultwizard.new.locationIsOk=Megfelelő hely a trezornak addvaultwizard.new.locationIsOk=Megfelelő hely a titkosított tárolónak
addvaultwizard.new.invalidName=Érvénytelen vault név addvaultwizard.new.invalidName=Érvénytelen tárolónév
addvaultwizard.new.validName=Érvényes vault név addvaultwizard.new.validName=Érvényes tárolónév
addvaultwizard.new.validCharacters.message=A vault neve a következő karaktereket tartalmazhatja: addvaultwizard.new.validCharacters.message=A titkosított tároló neve a következő karaktereket tartalmazhatja:
addvaultwizard.new.validCharacters.chars=Szókarakterek (pl. a, ж vagy 수) addvaultwizard.new.validCharacters.chars=Szókarakterek (pl. a, ж vagy 수)
addvaultwizard.new.validCharacters.numbers=Számok addvaultwizard.new.validCharacters.numbers=Számok
addvaultwizard.new.validCharacters.dashes=Kötőjel (%s) vagy alulvonás (%s) addvaultwizard.new.validCharacters.dashes=Kötőjel (%s) vagy alvonás (%s)
### Expert Settings ### Expert Settings
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=Haladó beállítások engedélyezése addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=Haladó beállítások engedélyezése
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Írjon be egy értéket 36 és 220 között (alapértelmezett: 220) addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Írjon be egy értéket 36 és 220 között (alapértelmezett: 220)
@@ -76,41 +81,49 @@ addvaultwizard.new.expertSettings.shorteningThreshold.tooltip=További informác
addvaultwizard.new.expertSettings.shorteningThreshold.title=A kódolt fájlnevek maximális hosszúsága addvaultwizard.new.expertSettings.shorteningThreshold.title=A kódolt fájlnevek maximális hosszúsága
addvaultwizard.new.expertSettings.shorteningThreshold.valid=Érvényes addvaultwizard.new.expertSettings.shorteningThreshold.valid=Érvényes
### Password ### Password
addvaultwizard.new.createVaultBtn=Új széf létrehozása addvaultwizard.new.createVaultBtn=Új titkosított tároló létrehozása
addvaultwizard.new.generateRecoveryKeyChoice=Nem fog tudni hozzáférni az adataihoz a jelszó nélkül. Akar egy visszaállítási kulcsot arra az esetre, ha elveszíti a jelszavát? addvaultwizard.new.generateRecoveryKeyChoice=Nem fog tudni hozzáférni az adataihoz a jelszó nélkül. Akar egy visszaállítási kulcsot arra az esetre, ha elveszíti a jelszavát?
addvaultwizard.new.generateRecoveryKeyChoice.yes=Igen kérem, jobb félni, mint megijedni. addvaultwizard.new.generateRecoveryKeyChoice.yes=Igen kérem, jobb félni, mint megijedni
addvaultwizard.new.generateRecoveryKeyChoice.no=Nem köszönöm, nem fogom elveszíteni a jelszavam. addvaultwizard.new.generateRecoveryKeyChoice.no=Nem köszönöm, nem fogom elveszíteni a jelszavam
### Information ### Information
addvault.new.readme.storageLocation.fileName=FONTOS.rtf addvault.new.readme.storageLocation.fileName=FONTOS.rtf
addvault.new.readme.storageLocation.1=⚠️ SZÉF FÁJLOK ⚠️ addvault.new.readme.storageLocation.1=⚠️ TITKOSÍTOTT FÁJLOK ⚠️
addvault.new.readme.storageLocation.2=Ez a széfjének a tárolási helye. addvault.new.readme.storageLocation.2=Ez a titkosított tárolójának helye.
addvault.new.readme.storageLocation.3=NE addvault.new.readme.storageLocation.3=NE
addvault.new.readme.storageLocation.4=• ne módosítson semmilyen fájlt ebbe a könyvtárba addvault.new.readme.storageLocation.4=• ne módosítson semmilyen fájlt ebben a könyvtárba
addvault.new.readme.storageLocation.5=• ne tegyen titkosítani való fájlokat ebbe a könyvtárba addvault.new.readme.storageLocation.5=• ne tegyen titkosítani való fájlokat ebbe a könyvtárba.
addvault.new.readme.storageLocation.6=Ha fájlokat akr titkosítani és a széf tartalmát akarja szerkeszteni akkor tegye a következőt: addvault.new.readme.storageLocation.6=Ha fájlokat akar titkosítani és a tároló tartalmát akarja szerkeszteni akkor tegye a következőt:
addvault.new.readme.storageLocation.7=1. Adja hozzá a széfet a Cryptomator-hoz. addvault.new.readme.storageLocation.7=1. Adja hozzá a tárolót a Cryptomator felületén.
addvault.new.readme.storageLocation.8=2. Nyissa meg a széfet a Cryptomator-ban. addvault.new.readme.storageLocation.8=2. Nyissa meg a tárolót a Cryptomator felületén.
addvault.new.readme.storageLocation.9=3. Nyissa meg a hozzáférési helyet a "Megjelenítés" gombra való kattintással. addvault.new.readme.storageLocation.9=3. Nyissa meg a hozzáférési helyet a "Megjelenítés" gombra való kattintással.
addvault.new.readme.storageLocation.10=Ha segítségre van szüksége, akkor látogasson el a dokumentáció oldalára: %s addvault.new.readme.storageLocation.10=Ha segítségre van szüksége, akkor látogasson el a dokumentáció oldalára: %s
addvault.new.readme.accessLocation.fileName=ÜDVÖZÖLJÜK.rtf addvault.new.readme.accessLocation.fileName=ÜDVÖZÖLJÜK.rtf
addvault.new.readme.accessLocation.1=🔐️ TITKOSÍTOTT KÖTET 🔐️ addvault.new.readme.accessLocation.1=🔐️ TITKOSÍTOTT KÖTET 🔐️
addvault.new.readme.accessLocation.2=Ez a széf hozzáférési helye. addvault.new.readme.accessLocation.2=Ez a tároló hozzáférési helye.
addvault.new.readme.accessLocation.3=Bármilyen, a kötethez hozzáadott fájl titkosításra kerül a Cryptomator által. Úgy dolgozhat vele, mint minden más meghajtóval/mappával. Ez az egyetlen dekódolt tartalmi nézet. A fájlai folyamatosan titkosítva maradnak a merevlemezén. addvault.new.readme.accessLocation.3=Bármilyen, a kötethez hozzáadott fájl titkosításra kerül a Cryptomator által. Úgy dolgozhat vele, mint minden más meghajtóval/mappával. Ez az egyetlen dekódolt tartalmi nézet. A fájljai folyamatosan titkosítva maradnak a merevlemezén.
addvault.new.readme.accessLocation.4=Bátran eltávolíthatja ezt a fájlt. addvault.new.readme.accessLocation.4=Bátran eltávolíthatja ezt a fájlt.
## Existing ## Existing
addvaultwizard.existing.title=Meglévő széf hozzáadása addvaultwizard.existing.title=Meglévő tároló hozzáadása
addvaultwizard.existing.instruction=Válassza ki a "vault.cryptomatotor" fájlt a meglévő tárolóhoz. Ha csak egy "masterkey.cryptomatotor" nevű fájl létezik, válassza azt. addvaultwizard.existing.instruction=Válassza ki a "vault.cryptomator" fájlt a meglévő tárolóban. Ha csak egy "masterkey.cryptomator" nevű fájl létezik, válassza azt.
addvaultwizard.existing.restore=Visszaállítás…
addvaultwizard.existing.chooseBtn=Kiválaszt… addvaultwizard.existing.chooseBtn=Kiválaszt…
addvaultwizard.existing.filePickerTitle=Trezor fájl kiválasztása addvaultwizard.existing.filePickerTitle=Titkosított tároló fájl kiválasztása
addvaultwizard.existing.filePickerMimeDesc=Cryptomator széf addvaultwizard.existing.filePickerMimeDesc=Cryptomator tároló
addvaultwizard.existing.notAVault.title=Nem titkosított tároló
addvaultwizard.existing.notAVault.message=A kiválasztott könyvtár nem Cryptomator titkosított tároló
addvaultwizard.existing.notAVault.description.missingDataDir=A következő mappában hiányzik a szükséges "d" almappa: "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=A következő mappában található "d" bejegyzés nem könyvtár: "%s".
addvaultwizard.existing.notAVault.description.missingVaultConfig=A szükséges "vault.cryptomator" fájl hiányzik a következő mappából: "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=A "%s" mappában található "vault.cryptomator" fájl nem olvasható el, mert nincs megfelelő hozzáférési jogosultság.
addvaultwizard.existing.notAVault.description.unsupportedStructure=A következő mappa könyvtárstruktúrája nem támogatott: "%s".
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Széf létrehozva "%s".\nA tartalom eléréséhez, vagy hozzáadásához fel kell oldania a széfet. Alternatív megoldásként később bármikor feloldhatja. addvaultwizard.success.nextStepsInstructions=Titkosított tároló létrehozva "%s".\nA tartalom eléréséhez, vagy hozzáadásához fel kell oldania a tárolót. Alternatív megoldásként később is bármikor feloldhatja.
addvaultwizard.success.unlockNow=Azonnali feloldás addvaultwizard.success.unlockNow=Azonnali feloldás
# Remove Vault # Remove Vault
removeVault.title=Széf eltávolitása removeVault.title="%s" tároló eltávolítása
removeVault.message=Vault eltávolitása? removeVault.message=Titkosított tároló eltávolítása?
removeVault.description=Ez kizárolag a Cryptomator-ból távolitja el ezt a széfet. Később hozzáadhatja újra. A titkosított fájlokat nem törli a merevlemezről. removeVault.description=Ez kizárólag a Cryptomator listájából távolítja el a tárolót. Később hozzáadhatja újra. A titkosított fájlokat nem törli a merevlemezről.
# Change Password # Change Password
changepassword.title=Jelszó megváltoztatása changepassword.title=Jelszó megváltoztatása
@@ -120,7 +133,7 @@ changepassword.finalConfirmation=Megértettem, hogy nem fogok hozzáférni az ad
# Forget Password # Forget Password
forgetPassword.title=Jelszó elfelejtése forgetPassword.title=Jelszó elfelejtése
forgetPassword.message=Elfelejtette az elmentett jelszót? forgetPassword.message=Elfelejtette az elmentett jelszót?
forgetPassword.description=Eltávolítja a széf mentett jelszavát a rendszere kulcstartójából. forgetPassword.description=Eltávolítja a tároló mentett jelszavát a rendszere kulcstartójából.
forgetPassword.confirmBtn=Jelszó elfelejtése forgetPassword.confirmBtn=Jelszó elfelejtése
# Unlock # Unlock
@@ -130,30 +143,37 @@ unlock.savePassword=Jelszó megjegyzése
unlock.unlockBtn=Feloldás unlock.unlockBtn=Feloldás
## Select ## Select
unlock.chooseMasterkey.message=Mesterkulcs fájl nem található unlock.chooseMasterkey.message=Mesterkulcs fájl nem található
unlock.chooseMasterkey.description=Nem található a tároló kulcsfájlja a várt helyen. Kérjük válassza ki a kulcsfájlt manuálisan. unlock.chooseMasterkey.description=Nem található kulcsfájl ehhez a titkosított tárolóhoz: "%s". Kérjük válassza ki a kulcsfájlt manuálisan.
unlock.chooseMasterkey.restoreInstead=Inkább mesterkulcs fájl helyreállítása
unlock.chooseMasterkey.filePickerTitle=Mesterkulcs fájl kiválasztása unlock.chooseMasterkey.filePickerTitle=Mesterkulcs fájl kiválasztása
unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator Mesterkulcs unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator Mesterkulcs
## Success ## Success
unlock.success.message=Sikeres feloldás unlock.success.message=Sikeres feloldás
unlock.success.description="%s" sikreresen feloldásra került! Mostmár hozzáférhet a virtuális trezorhoz. unlock.success.description=Mostantól elérhető a csatolási pontján keresztül a következő tároló tartalma: "%s".
unlock.success.rememberChoice=Jegyezze meg a választást és ne mutassa többet unlock.success.rememberChoice=Jegyezze meg a választást és ne mutassa többet
unlock.success.revealBtn=Széf megjelenítése unlock.success.revealBtn=Széf megjelenítése
## Failure ## Failure
unlock.error.customPath.message=Nem lehet csatolni a széfet az egyéni útvonalhoz unlock.error.customPath.message=Nem lehet csatolni a tárolót az egyéni útvonalhoz
unlock.error.customPath.description.notSupported=Ha szeretné továbbra is az egyéni útvonalat használni, kérem, menjen a beállításokba és válasszon egy kötet típust, amely támogatja azt. Máskülönben, menjen a széf opciókhoz és válasszon egy támogatott csatoláspontot. unlock.error.customPath.description.notSupported=Ha szeretné továbbra is az egyéni útvonalat használni, kérem, menjen a beállításokba és válasszon egy kötet típust, amely támogatja azt. Máskülönben, menjen a tároló beállításaihoz és válasszon egy támogatott csatoláspontot.
unlock.error.customPath.description.notExists=Az egyéni csatolás útvonal nem létezik. Hozza létre a helyi fájlrendszerében vagy változtassa meg a széf opciókban. unlock.error.customPath.description.notExists=Az egyéni csatolás útvonal nem létezik. Hozza létre a helyi fájlrendszerében vagy változtassa meg a tároló beállításaiban.
unlock.error.customPath.description.inUse=A meghajtó betűjele vagy a csatolási útvonal: "%s" már foglalt. unlock.error.customPath.description.inUse=A meghajtó betűjele vagy a csatolási útvonal: "%s" már foglalt.
unlock.error.customPath.description.hideawayNotDir=A feloldáshoz használt, "%3$s" nevű ideiglenes, rejtett fájlt nem lehet eltávolítani. Kérjük, ellenőrizze a fájlt, majd törölje manuálisan. unlock.error.customPath.description.hideawayNotDir=A feloldáshoz használt, "%3$s" nevű ideiglenes, rejtett fájlt nem lehet eltávolítani. Kérjük, ellenőrizze a fájlt, majd törölje manuálisan.
unlock.error.customPath.description.couldNotBeCleaned=A széfet nem lehetett a "%s" elérési útvonalra csatlakoztatni. Kérjük, próbálja meg újra, vagy válasszon másik elérési útvonalat. unlock.error.customPath.description.couldNotBeCleaned=A tárolót nem lehetett a "%s" elérési útvonalra csatlakoztatni. Kérjük, próbálja meg újra, vagy válasszon másik elérési útvonalat.
unlock.error.customPath.description.notEmptyDir=A megadott "%s" elérési útvonal nem egy üres mappa. Kérjük, válasszon egy üres mappát, és próbálja meg újra. unlock.error.customPath.description.notEmptyDir=A megadott "%s" elérési útvonal nem egy üres mappa. Kérjük, válasszon egy üres mappát, és próbálja meg újra.
unlock.error.customPath.description.generic=Egyéni csatolási útvonalat választott ehhez a széfhez, de használatakor ez a hibaüzenet érkezett: %2$s unlock.error.customPath.description.generic=Egyéni csatolási útvonalat választott ehhez a tárolóhoz, de használatakor ez a hibaüzenet érkezett: %2$s
unlock.error.restartRequired.message=Nem lehet feloldani a széfet unlock.error.restartRequired.message=Nem lehet feloldani a titkosított tárolót
unlock.error.restartRequired.description=Módosítsa a kötet típusát a széf beállításaiban, vagy indítsa újra a Cryptomator-t. unlock.error.restartRequired.description=Módosítsa a kötet típusát a tároló beállításaiban, vagy indítsa újra a Cryptomator-t.
unlock.error.title=A(z) „%s” feloldása sikertelen unlock.error.title=A(z) „%s” feloldása sikertelen
## Hub ## Hub
hub.noKeychain.message=Nem lehet az eszközkulcshoz hozzáférni 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.description=Hogy feloldja a Hub-tárolókat, 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 hub.noKeychain.openBtn=Beállítások megnyitása
### Check Host Authenticity
hub.checkHostTrust.message.check=Konfiguráció ellenőrzése…
hub.checkHostTrust.message.ask=Megbízik ebben a gépben?
hub.checkHostTrust.message.ask.plural=Megbízik ezekben a gépben?
hub.checkHostTrust.trustBtn=Megbízható
hub.checkHostTrust.denyBtn=Elutasít
### Waiting ### Waiting
hub.auth.message=Várakozás a hitelesítésre… hub.auth.message=Várakozás a hitelesítésre…
hub.auth.description=Automatikusan átirányítjuk a bejelentkezési oldalra. hub.auth.description=Automatikusan átirányítjuk a bejelentkezési oldalra.
@@ -172,17 +192,22 @@ hub.register.legacy.occupiedMsg=Név már használatban van
hub.register.legacy.description=Ez az első Hub hozzáférés erről az eszközről. Kérem, regisztrálja. hub.register.legacy.description=Ez az első Hub hozzáférés erről az eszközről. Kérem, regisztrálja.
### Registration Success ### Registration Success
hub.registerSuccess.message=Az eszköz regisztrálva hub.registerSuccess.message=Az eszköz regisztrálva
hub.registerSuccess.description=Az eszköze sikeresen regisztrálva. Most már folytathatja a széf feloldását. hub.registerSuccess.description=Az eszköze sikeresen regisztrálva. Most már folytathatja a titkosított tároló feloldását.
hub.registerSuccess.unlockBtn=Feloldás hub.registerSuccess.unlockBtn=Feloldás
hub.registerSuccess.legacy.description=A széfhez való hozzáféréshez az eszközének a széf tulajdonosától további engedélyt kell kapnia. hub.registerSuccess.legacy.description=A titkosított tárolóhoz való hozzáféréshez az eszközének a tároló tulajdonosától további engedélyt kell kapnia.
### Registration Failed ### Registration Failed
hub.registerFailed.message=Az eszköz regisztrációja sikertelen hub.registerFailed.message=Az eszköz regisztrációja sikertelen
hub.registerFailed.description.generic=Hiba történt a regisztrációs folyamat során. További részletekért nézze meg az alkalmazás naplóját. hub.registerFailed.description.generic=Hiba történt a regisztrációs folyamat során. További részletekért nézze meg az alkalmazás naplóját.
hub.registerFailed.description.deviceAlreadyExists=Ez az eszköz már egy másik felhasználóhoz van regisztrálva. Próbáljon meg felhasználói fiókot váltani, vagy használjon egy másik eszközt. hub.registerFailed.description.deviceAlreadyExists=Ez az eszköz már egy másik felhasználóhoz van regisztrálva. Próbáljon meg felhasználói fiókot váltani, vagy használjon egy másik eszközt.
### Archived ### Archived
hub.archived.message=Titkosított tároló archiválva
hub.archived.description=Ez a tároló archivált és már nem érhető el. Kérjük, vegye fel a kapcsolatot a tárhely tulajdonosával.
### Unauthorized ### Unauthorized
hub.unauthorized.message=Hozzáférés megtagadva 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. hub.unauthorized.description=Nincs hozzáférésed a titkosított tároló megnyitásához. Vedd fel a kapcsolatot a tároló tulajdonosával és kérj hozzáférést.
### Untrusted Host
hub.untrustedHost.message=A kiszolgáló nem megbízható
hub.untrustedHost.description=A Hubhoz való csatlakozás biztonsági okokból blokkolva lett. Ha úgy gondolja, hogy a Hub-szerver biztonságos, lépjen kapcsolatba a Hub rendszergazdájával, vagy próbálja meg újra.
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Beavatkozás szükséges 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 hub.requireAccountInit.description.0=A folytatáshoz kérlek töltsd ki a szükséges lépéseket a te
@@ -199,49 +224,49 @@ lock.forced.description=A „%s” zárolását függőben lévő műveletek vag
lock.forced.retryBtn=Újra lock.forced.retryBtn=Újra
lock.forced.forceBtn=Lezárás kényszerítése lock.forced.forceBtn=Lezárás kényszerítése
## Failure ## Failure
lock.fail.message=Zárolás sikertelen. lock.fail.message=Zárolás sikertelen
lock.fail.description=A "%s" tárolót nem lehetett zárolni. Győződjön meg arról, hogy a nem mentett munkát máshová menti, és a fontos olvasási/írási műveletek befejeződtek. A trezor bezárásához szakítsa meg a Cryptomator folyamatot. lock.fail.description=A "%s" tárolót nem lehetett zárolni. Győződjön meg arról, hogy a nem mentett munkát máshová menti, és a fontos olvasási/írási műveletek befejeződtek. A tároló bezárásához szakítsa meg a Cryptomator folyamatot.
# Migration # Migration
migration.title=Széf frissítése migration.title=Titkosított tároló frissítése
## Start ## Start
migration.start.header=Széf frissítése migration.start.header=Titkosított tároló frissítése
migration.start.text=Hogy megnyissa a "%s" nevű széfét a Cryptomator ezen új verziójában, a széfet frissíteni kell egy újabb formátumra. Mielőtt ezt megteszi, az alábbiakat érdemes figyelembe vennie: migration.start.text=Hogy megnyissa a "%s" nevű titkosított tárolót a Cryptomator ezen új verziójában, a tárolót frissíteni kell egy újabb formátumra. Mielőtt ezt megteszi, az alábbiakat érdemes figyelembe vennie:
migration.start.remarkUndone=Ezt a módosítást nem lehet visszafordítani. migration.start.remarkUndone=Ezt a módosítást nem lehet visszafordítani.
migration.start.remarkVersions=A Cryptomator régebbi verziói nem fogják tudni megnyitni a frissített széfet. migration.start.remarkVersions=A Cryptomator régebbi verziói nem fogják tudni megnyitni a frissített tárolót.
migration.start.remarkCanRun=Meg kell győződnie arról, hogy minden eszköz, amelyről eléri ezt a széfet képes futtatni a Cryptomator ezen verzióját. migration.start.remarkCanRun=Meg kell győződnie arról, hogy minden eszköz, amelyről eléri ezt a titkosított tárolót, képes futtatni a Cryptomator ezen verzióját.
migration.start.remarkSynced=Meg kell győződnie arról, hogy a széfe teljesen szinkronizálva van ezen és az összes többi eszközön a frissítés előtt. migration.start.remarkSynced=Meg kell győződnie arról, hogy a tároló teljesen szinkronizálva van ezen és az összes többi eszközön a frissítés előtt.
migration.start.confirm=Elolvastam és megértettem a fenti információkat migration.start.confirm=Elolvastam és megértettem a fenti információkat
## Run ## Run
migration.run.enterPassword=Írja be a jelszót a következőhöz Enter the password for "%s" migration.run.enterPassword=Írja be a jelszót a következőhöz Enter the password for "%s"
migration.run.startMigrationBtn=Széf frissítése migration.run.startMigrationBtn=Tároló frissítése
migration.run.progressHint=Ez eltarthat egy darabig… migration.run.progressHint=Ez eltarthat egy darabig…
## Success ## Success
migration.success.nextStepsInstructions=A "%s" sikeresen migrálva. \nMost már feloldhatja a széfet. migration.success.nextStepsInstructions=A "%s" sikeresen migrálva. \nMost már feloldhatja a titkosított tárolót.
migration.success.unlockNow=Azonnali feloldás migration.success.unlockNow=Azonnali feloldás
## Missing file system capabilities ## Missing file system capabilities
migration.error.missingFileSystemCapabilities.title=Nem támogatott fájlrendszer migration.error.missingFileSystemCapabilities.title=Nem támogatott fájlrendszer
migration.error.missingFileSystemCapabilities.description=A migráció nem kezdődött el, mert a széf nem megfelelő fájlrendszeren található. migration.error.missingFileSystemCapabilities.description=A migráció nem kezdődött el, mert a tároló nem megfelelő fájlrendszeren található.
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=A fájlrendszer nem támogatja a hosszú fájlneveket. migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=A fájlrendszer nem támogatja a hosszú fájlneveket.
migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=A fájlrendszer nem támogatja a hosszú útvonalakat. migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=A fájlrendszer nem támogatja a hosszú útvonalakat.
migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=A fájlrendszer nem teszi lehetővé az olvasást. migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=A fájlrendszer nem teszi lehetővé az olvasást.
migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=A fájlrendszer nem teszi lehetővé az írást. migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=A fájlrendszer nem teszi lehetővé az írást.
## Impossible ## Impossible
migration.impossible.heading=A széf frissítése sikertelen migration.impossible.heading=A titkosított tároló frissítése sikertelen
migration.impossible.reason=A széfet nem lehet automatikusan frissíteni, mert a tárolási helye vagy a hozzáférési pontja nem kompatibilis. migration.impossible.reason=A tárolót nem lehet automatikusan frissíteni, mert a tárolási helye vagy a hozzáférési pontja nem kompatibilis.
migration.impossible.moreInfo=A széf továbbra is megnyitható marad egy régebbi verzióval. A széf kézi frissítésével kapcsolatos utasításokért keresse fel a következő címet: migration.impossible.moreInfo=A tároló továbbra is megnyitható marad egy régebbi verzióval. A titkosított tároló kézi frissítésével kapcsolatos utasításokért keresse fel a következő címet
# Health Check # Health Check
## Start ## Start
health.title="%s" állapotellenőrzése health.title="%s" állapotellenőrzése
health.intro.header=Állapotfelmérés health.intro.header=Állapotfelmérés
health.intro.text=Az állapotfelmérés olyan ellenőrzéscsomag, amely felderíti és esetlegesen kijavítja a trezor belső szerkezetében fellépő problémákat. Kérjük, ne feledje: health.intro.text=Az állapotfelmérés olyan ellenőrzéscsomag, amely felderíti és esetlegesen kijavítja a titkosított tároló belső szerkezetében fellépő problémákat. Kérjük, ne feledje:
health.intro.remarkSync=Győződjön meg arról, hogy minden eszköz teljesen szinkronizálva van, ez megoldja a legtöbb problémát. health.intro.remarkSync=Győződjön meg arról, hogy minden eszköz teljesen szinkronizálva van, ez megoldja a legtöbb problémát.
health.intro.remarkFix=Nem minden probléma javítható. health.intro.remarkFix=Nem minden probléma javítható.
health.intro.remarkBackup=Ha az adatok sérültek, csak a biztonsági mentés segíthet. health.intro.remarkBackup=Ha az adatok sérültek, csak a biztonsági mentés segíthet.
health.intro.affirmation=Elolvastam és megértettem a fenti információkat health.intro.affirmation=Elolvastam és megértettem a fenti információkat
## Start Failure ## Start Failure
health.fail.header=Hiba a Trezor konfiguráció betöltésekor health.fail.header=Hiba a tároló konfigurációjának betöltésekor
health.fail.ioError=Hiba történt a konfigurációs fájl elérése és olvasása közben. health.fail.ioError=Hiba történt a konfigurációs fájl elérése és olvasása közben.
health.fail.parseError=Hiba történt a tároló konfigurációjának elemzése közben. health.fail.parseError=Hiba történt a tároló konfigurációjának elemzése közben.
health.fail.moreInfo=További infó health.fail.moreInfo=További infó
@@ -260,6 +285,8 @@ health.check.detail.checkFinishedAndFound=Az ellenőrzés véget ért. Kérem el
health.check.detail.checkFailed=Az ellenőrzés egy hiba miatt megszakadt. health.check.detail.checkFailed=Az ellenőrzés egy hiba miatt megszakadt.
health.check.detail.checkCancelled=Az ellenőrzés meg lett szakítva. health.check.detail.checkCancelled=Az ellenőrzés meg lett szakítva.
health.check.detail.listFilters.label=Szűrő health.check.detail.listFilters.label=Szűrő
health.check.detail.filterSeverity=Szűrés súlyosság szerint
health.check.detail.filterFixState=Szűrés állapot szerint
health.check.detail.fixAllSpecificBtn=Az összes ilyen javítása health.check.detail.fixAllSpecificBtn=Az összes ilyen javítása
health.check.exportBtn=Jelentés exportálása health.check.exportBtn=Jelentés exportálása
## Result view ## Result view
@@ -268,10 +295,10 @@ health.result.severityFilter.good=Rendben
health.result.severityFilter.info=Infó health.result.severityFilter.info=Infó
health.result.severityFilter.warn=Figyelmeztetés health.result.severityFilter.warn=Figyelmeztetés
health.result.severityFilter.crit=Kritikus health.result.severityFilter.crit=Kritikus
health.result.severityTip.good=Súlyosság: Jó\nNormális séf struktúra. health.result.severityTip.good=Súlyosság: Jó\nNormális tároló struktúra.
health.result.severityTip.info=Súlyosság: Info\nA széf struktúrája ép, javítás ajánlott. health.result.severityTip.info=Súlyosság: Infó\nA tároló struktúrája ép, javítás ajánlott.
health.result.severityTip.warn=Súlyosság: Figyelmeztetés\nA széf struktúrája sérült, javítás erősen ajánlott. health.result.severityTip.warn=Súlyosság: Figyelmeztetés\nA tároló struktúrája sérült, javítás erősen ajánlott.
health.result.severityTip.crit=Súlyosság: Kritikus\nA széf struktúrája sérült, adatvesztés áll fönt. health.result.severityTip.crit=Súlyosság: Kritikus\nA tároló struktúrája sérült, adatvesztés veszélye áll fenn.
health.result.fixStateFilter.all=Javítás státusz - Mind health.result.fixStateFilter.all=Javítás státusz - Mind
health.result.fixStateFilter.fixable=Javítható health.result.fixStateFilter.fixable=Javítható
health.result.fixStateFilter.notFixable=Nem javítható health.result.fixStateFilter.notFixable=Nem javítható
@@ -288,12 +315,13 @@ preferences.title=Beállítások
## General ## General
preferences.general=Általános preferences.general=Általános
preferences.general.startHidden=Az ablak elrejtése a Cryptomator indítása után preferences.general.startHidden=Az ablak elrejtése a Cryptomator indítása után
preferences.general.autoCloseVaults=Széfek lezárása megerősítés nélkül az alkalmazás bezárásakor preferences.general.autoCloseVaults=Titkosított tárolók lezárása megerősítés nélkül az alkalmazás bezárásakor
preferences.general.debugLogging=Hibakeresési naplózás engedélyezése preferences.general.debugLogging=Hibakeresési naplózás engedélyezése
preferences.general.debugDirectory=Naplófájlok megjelenítése preferences.general.debugDirectory=Naplófájlok megjelenítése
preferences.general.autoStart=Cryptomator indítása a rendszerrel együtt preferences.general.autoStart=Cryptomator indítása a rendszerrel együtt
preferences.general.keychainBackend=Itt tárolja a jelszavakat preferences.general.keychainBackend=Itt tárolja a jelszavakat
preferences.general.quickAccessService=Adja a feloldott széfeket a gyors elérési területhez preferences.general.quickAccessService=A feloldott tárolókat a Gyors elérési területhez adja
preferences.general.resetTrustedHosts=A megbízható kiszolgálók visszaállítása
## Interface ## Interface
preferences.interface=Kezelőfelület preferences.interface=Kezelőfelület
preferences.interface.theme=Megjelenés preferences.interface.theme=Megjelenés
@@ -307,7 +335,7 @@ preferences.interface.interfaceOrientation=Felhasználói felület tájolása
preferences.interface.interfaceOrientation.ltr=Balról jobbra preferences.interface.interfaceOrientation.ltr=Balról jobbra
preferences.interface.interfaceOrientation.rtl=Jobbról balra preferences.interface.interfaceOrientation.rtl=Jobbról balra
preferences.interface.showTrayIcon=Tálca ikon megjelenítése (újraindítás szükséges) preferences.interface.showTrayIcon=Tálca ikon megjelenítése (újraindítás szükséges)
preferences.interface.compactMode=Kompakt széflista engedélyezése preferences.interface.compactMode=Kompakt tárolólista engedélyezése
## Volume ## Volume
preferences.volume=Virtuális meghajtó preferences.volume=Virtuális meghajtó
preferences.volume.type=Alapértelmezett kötet típus preferences.volume.type=Alapértelmezett kötet típus
@@ -332,8 +360,13 @@ preferences.updates.lastUpdateCheck.never=soha
preferences.updates.lastUpdateCheck.recently=mostanában preferences.updates.lastUpdateCheck.recently=mostanában
preferences.updates.lastUpdateCheck.daysAgo=%s nappal ezelőtt preferences.updates.lastUpdateCheck.daysAgo=%s nappal ezelőtt
preferences.updates.lastUpdateCheck.hoursAgo=%s órával ezelőtt preferences.updates.lastUpdateCheck.hoursAgo=%s órával ezelőtt
preferences.updates.prohibitedDueToUnlockedVaults.1=Kérem
preferences.updates.prohibitedDueToUnlockedVaults.2=zárolja tárolóit
preferences.updates.prohibitedDueToUnlockedVaults.3=a frissítés telepítéséhez.
preferences.updates.checkFailed=A frissítések keresése sikertelen. Kérem, ellenőrizze az internetkapcsolatát, vagy próbálja meg később újra. preferences.updates.checkFailed=A frissítések keresése sikertelen. Kérem, ellenőrizze az internetkapcsolatát, vagy próbálja meg később újra.
preferences.updates.updateFailed=A frissítés nem sikerült. Kérjük, telepítse a frissítést manuálisan.
preferences.updates.upToDate=A Cryptomator naprakész. preferences.updates.upToDate=A Cryptomator naprakész.
preferences.updates.visitDownloadPage=Látogasson el a letöltési oldalra
## Contribution ## Contribution
preferences.contribute=Támogasson bennünket preferences.contribute=Támogasson bennünket
@@ -344,15 +377,17 @@ preferences.contribute.promptText=Ide illessze be támogatói igazolása kódjá
preferences.contribute.thankYou=Köszönjük, hogy támogatja a Cryptomator nyílt forráskódú fejlesztését! preferences.contribute.thankYou=Köszönjük, hogy támogatja a Cryptomator nyílt forráskódú fejlesztését!
preferences.contribute.donate=Támogatás preferences.contribute.donate=Támogatás
preferences.contribute.sponsor=Szponzor preferences.contribute.sponsor=Szponzor
preferences.contribute.removeCert.tooltip=Tanúsítvány eltávolítása
### Remove License Key Dialog ### Remove License Key Dialog
removeCert.title=Tanúsítvány eltávolítása removeCert.title=Tanúsítvány eltávolítása
removeCert.message=Eltávolítja a támogatói tanúsítványt? removeCert.message=Eltávolítja a támogatói tanúsítványt?
removeCert.description=A Cryptomator alapvető funkcióit ez nem érinti. Sem a széfekhez való hozzáférés nem korlátozott, sem a biztonsági szint nem csökken. removeCert.description=A Cryptomator alapvető funkcióit ez nem érinti. Sem a titkosított tárolókhoz való hozzáférés nem korlátozott, sem a biztonsági szint nem csökken.
#<-- Add entries for donations and code/translation/documentation contribution --> #<-- Add entries for donations and code/translation/documentation contribution -->
## About ## About
preferences.about=Rólunk preferences.about=Rólunk
preferences.about.thirdPartyLicenses=Harmadik felek által kiadott licencek
# Vault Statistics # Vault Statistics
stats.title=Statisztika ehhez %s stats.title=Statisztika ehhez %s
@@ -392,32 +427,40 @@ stats.access.total=Összes hozzáférés: %d
# Main Window # Main Window
## Vault List ## Vault List
main.vaultlist=Széfek main.vaultlist=Széfek
main.vaultlist.emptyList.onboardingInstruction=Kattintson ide egy széf hozzáadásához main.vaultlist.listEntry=Titkosított tároló %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Kattintson ide egy titkosított tároló hozzáadásához
main.vaultlist.contextMenu.remove=Eltávolítás… main.vaultlist.contextMenu.remove=Eltávolítás…
main.vaultlist.contextMenu.lock=Zárolás main.vaultlist.contextMenu.lock=Zárolás
main.vaultlist.contextMenu.unlock=Feloldás… main.vaultlist.contextMenu.unlock=Feloldás…
main.vaultlist.contextMenu.unlockNow=Azonnali feloldás main.vaultlist.contextMenu.unlockNow=Azonnali feloldás
main.vaultlist.contextMenu.vaultoptions=Széf beállítások main.vaultlist.contextMenu.vaultoptions=Titkosított tároló beállításai
main.vaultlist.contextMenu.reveal=Széf megjelenítése main.vaultlist.contextMenu.reveal=Tároló megjelenítése
main.vaultlist.contextMenu.share=Megosztás… main.vaultlist.contextMenu.share=Megosztás…
main.vaultlist.addVaultBtn.menuItemNew=Új titkosított tároló létrehozása…
main.vaultlist.addVaultBtn.menuItemExisting=Titkosított tároló megnyitása…
main.vaultlist.addVaultBtn.menuItemRecover=Titkosított tároló visszaállítása…
main.vaultlist.addVaultButton.tooltip=Széf hozzáadása main.vaultlist.addVaultButton.tooltip=Széf hozzáadása
main.vaultlist.showEventsButton.tooltip=Eseménynapló megnyitása
main.vaultlist.showPreferencesButton.tooltip=Beállítások megnyitása
##Notification ##Notification
main.notification.updateAvailable=Frissítés elérhető. main.notification.updateAvailable=Frissítés elérhető.
main.notification.support=Cryptomator támogatása. main.notification.support=Cryptomator támogatása.
main.notification.closeButton.tooltip=Az információs sáv bezárása
## Vault Detail ## Vault Detail
### Welcome ### Welcome
main.vaultDetail.welcomeOnboarding=Köszönjük, hogy a Cryptomator programot választotta a fájlai védelmére. Ha segítségre van szüksége, akkor olvassa el a kezdő útmutatónk lépéseit: main.vaultDetail.welcomeOnboarding=Köszönjük, hogy a Cryptomator programot választotta a fájljai védelmére. Ha segítségre van szüksége, akkor olvassa el a kezdő útmutatónk lépéseit:
main.vaultDetail.storageLocation=Titkosított tároló helye
### Locked ### Locked
main.vaultDetail.lockedStatus=ZÁROLVA main.vaultDetail.lockedStatus=ZÁROLVA
main.vaultDetail.unlockBtn=Feloldás… main.vaultDetail.unlockBtn=Feloldás…
main.vaultDetail.unlockNowBtn=Azonnali feloldás main.vaultDetail.unlockNowBtn=Azonnali feloldás
main.vaultDetail.optionsBtn=Széf beállítások main.vaultDetail.optionsBtn=Titkosított tároló beállításai
main.vaultDetail.passwordSavedInKeychain=Jelszó mentve main.vaultDetail.passwordSavedInKeychain=Jelszó mentve
main.vaultDetail.share=Megosztás… main.vaultDetail.share=Megosztás…
### Unlocked ### Unlocked
main.vaultDetail.unlockedStatus=FELOLDVA main.vaultDetail.unlockedStatus=FELOLDVA
main.vaultDetail.accessLocation=A széf tartalma itt érhető el: main.vaultDetail.accessLocation=A tároló tartalma itt érhető el:
main.vaultDetail.revealBtn=Széf megjelenítése main.vaultDetail.revealBtn=Tároló megjelenítése
main.vaultDetail.copyUri=URI másolása main.vaultDetail.copyUri=URI másolása
main.vaultDetail.lockBtn=Zárolás main.vaultDetail.lockBtn=Zárolás
main.vaultDetail.bytesPerSecondRead=Olvasás: main.vaultDetail.bytesPerSecondRead=Olvasás:
@@ -425,21 +468,26 @@ main.vaultDetail.bytesPerSecondWritten=Írás:
main.vaultDetail.throughput.idle=tétlen main.vaultDetail.throughput.idle=tétlen
main.vaultDetail.throughput.kbps=%.1f KiB/s main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Széf statisztika main.vaultDetail.stats=Tároló statisztika
main.vaultDetail.locateEncryptedFileBtn=Titkosított fájl megkeresése main.vaultDetail.locateEncryptedFileBtn=Titkosított fájl megkeresése
main.vaultDetail.locateEncryptedFileBtn.tooltip=Válasszon a széfből egy fájlt a titkosított megfelelőjének megkereséséhez main.vaultDetail.locateEncryptedFileBtn.tooltip=Válasszon a tárolóból egy fájlt a titkosított megfelelőjének megkereséséhez
main.vaultDetail.encryptedPathsCopied=Az útvonal a vágólapra került! main.vaultDetail.encryptedPathsCopied=Az útvonal a vágólapra került!
main.vaultDetail.locateEncrypted.filePickerTitle=Fájl kiválasztása a tárolóból
main.vaultDetail.decryptName.buttonLabel=Fájlnevek visszafejtése
main.vaultDetail.decryptName.tooltip=Válasszon ki egy fájlt a titkosított tárolóból, hogy visszafejtse a nevét
### Missing ### Missing
main.vaultDetail.missing.info=A Cryptomator nem talált széfet ezen az útvonalon. main.vaultDetail.missing.info=A Cryptomator nem talált titkosított tárolót ezen az útvonalon.
main.vaultDetail.missing.recheck=Ellenőrizze újra main.vaultDetail.missing.recheck=Ellenőrizze újra
main.vaultDetail.missing.remove=A széf eltávolítása a listából… main.vaultDetail.missing.remove=A tároló eltávolítása a listából…
main.vaultDetail.missing.changeLocation=A széf helyének megváltoztatása… main.vaultDetail.missing.changeLocation=A titkosított tároló helyének megváltoztatása…
### Missing Vault Config ### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=A tároló konfigurációja hiányzik.
main.vaultDetail.missingVaultConfig.restore=Tároló konfiguráció helyreállítása
### Needs Migration ### Needs Migration
main.vaultDetail.migrateButton=Széf frissítése main.vaultDetail.migrateButton=Tároló frissítése
main.vaultDetail.migratePrompt=A széfet új formátumra kell frissíteni, mielőtt hozzáférhet main.vaultDetail.migratePrompt=A titkosított tárolót új formátumra kell frissíteni, mielőtt hozzáférhet
### Error ### Error
main.vaultDetail.error.info=Hiba történt a széf merevlemezről való betöltése során. main.vaultDetail.error.info=Hiba történt a titkosított tároló merevlemezről való betöltése során.
main.vaultDetail.error.reload=Újratöltés main.vaultDetail.error.reload=Újratöltés
main.vaultDetail.error.windowTitle=Hiba az adatok betöltése közben main.vaultDetail.error.windowTitle=Hiba az adatok betöltése közben
@@ -448,7 +496,7 @@ wrongFileAlert.title=Hogyan lehet fájlokat titkosítani
wrongFileAlert.message=Próbálta ezeket a fájlokat titkosítani? wrongFileAlert.message=Próbálta ezeket a fájlokat titkosítani?
wrongFileAlert.description=Erre a célra a Cryptomator egy kötetet biztosít a rendszer fájlkezelőjében. wrongFileAlert.description=Erre a célra a Cryptomator egy kötetet biztosít a rendszer fájlkezelőjében.
wrongFileAlert.instruction.0=Hogy titkosítsa a fájlokat kövesse a következő lépéseket: wrongFileAlert.instruction.0=Hogy titkosítsa a fájlokat kövesse a következő lépéseket:
wrongFileAlert.instruction.1=1. Oldja fel a széfet. wrongFileAlert.instruction.1=1. Oldja fel a titkosított tárolót.
wrongFileAlert.instruction.2=2. Kattintson a "Megjelenítés" gombra, hogy megnyissa a kötetet a fájlkezelőjében. wrongFileAlert.instruction.2=2. Kattintson a "Megjelenítés" gombra, hogy megnyissa a kötetet a fájlkezelőjében.
wrongFileAlert.instruction.3=3. Adjon hozzá fájlokat a kötethez. wrongFileAlert.instruction.3=3. Adjon hozzá fájlokat a kötethez.
wrongFileAlert.link=További segítségért látogasson el ide wrongFileAlert.link=További segítségért látogasson el ide
@@ -456,10 +504,11 @@ wrongFileAlert.link=További segítségért látogasson el ide
# Vault Options # Vault Options
## General ## General
vaultOptions.general=Általános vaultOptions.general=Általános
vaultOptions.general.vaultName=A széf neve vaultOptions.general.vaultName=A tároló neve
vaultOptions.general.autoLock.lockAfterTimePart1=Lezárás, ha tétlen vaultOptions.general.autoLock.lockAfterTimePart1=Lezárás, ha tétlen
vaultOptions.general.autoLock.lockAfterTimePart2=perc vaultOptions.general.autoLock.lockAfterTimePart2=perc
vaultOptions.general.unlockAfterStartup=A széf feloldása a Cryptomator indításakor vaultOptions.general.autoLock.accessibleText=Zárolási időkorlát percben
vaultOptions.general.unlockAfterStartup=A titkosított tároló feloldása a Cryptomator indításakor
vaultOptions.general.actionAfterUnlock=Sikeres feloldás után vaultOptions.general.actionAfterUnlock=Sikeres feloldás után
vaultOptions.general.actionAfterUnlock.ignore=Ne tegyen semmit vaultOptions.general.actionAfterUnlock.ignore=Ne tegyen semmit
vaultOptions.general.actionAfterUnlock.reveal=Jelenítse meg a kötetet vaultOptions.general.actionAfterUnlock.reveal=Jelenítse meg a kötetet
@@ -486,19 +535,21 @@ vaultOptions.mount.volume.type=Kötet típus
vaultOptions.masterkey=Jelszó vaultOptions.masterkey=Jelszó
vaultOptions.masterkey.changePasswordBtn=Jelszó megváltoztatása vaultOptions.masterkey.changePasswordBtn=Jelszó megváltoztatása
vaultOptions.masterkey.forgetSavedPasswordBtn=Mentett jelszó törlése vaultOptions.masterkey.forgetSavedPasswordBtn=Mentett jelszó törlése
vaultOptions.masterkey.recoveryKeyExplanation=A helyreállítási kulcs az egyetlen módja annak, hogy visszaállítsa a széfhez való hozzáférést, ha elveíti a jelszavát. vaultOptions.masterkey.recoveryKeyExplanation=A helyreállítási kulcs az egyetlen módja annak, hogy visszaállítsa a tárolóhoz való hozzáférést, ha elveszíti a jelszavát.
vaultOptions.masterkey.showRecoveryKeyBtn=Visszaállítási kulcs megjelenítése vaultOptions.masterkey.showRecoveryKeyBtn=Visszaállítási kulcs megjelenítése
vaultOptions.masterkey.recoverPasswordBtn=Jelszó visszaállítása vaultOptions.masterkey.recoverPasswordBtn=Jelszó visszaállítása
vaultOptions.masterkey.missingMasterkeyFile=Ezek az beállítások csak akkor érhetők el, ha a masterkey fájl megtalálható a tároló könyvtárában.
## Hub ## Hub
vaultOptions.hub=Helyreállítás vaultOptions.hub=Helyreállítás
vaultOptions.hub.convertInfo=Ezen visszaállítási kulcs segítségével átváltoztathatja ezt a Hub széfet egy jelszó-alapú széffé vészhelyzet esetén. vaultOptions.hub.convertInfo=Ezen visszaállítási kulcs segítségével átváltoztathatja ezt a Hub-tárolót egy jelszó-alapú titkosított tárolóvá vészhelyzet esetén.
vaultOptions.hub.convertBtn=Jelszó-alapú széffé alakítás vaultOptions.hub.convertBtn=Jelszó-alapú tárolóvá alakítás
# Recovery Key # Recovery Key
## Display Recovery Key ## Display Recovery Key
recoveryKey.display.title=Visszaállítási kulcs mutatása recoveryKey.display.title=Visszaállítási kulcs mutatása
recoveryKey.create.message=Jelszó szükséges recoveryKey.create.message=Jelszó szükséges
recoveryKey.create.description=Írja be a jelszavát a "%s" visszaállítási kulcsának megjelenítéséhez: recoveryKey.create.description=Írja be a jelszavát a "%s" visszaállítási kulcsának megjelenítéséhez:
recoveryKey.recover.description=Adja meg a jelszót a "%s" tárolóhoz, hogy helyreállítsa a tároló konfigurációját.
recoveryKey.display.description=A következő helyreállítási kulcs használható a "%s" hozzáférésének visszaállítására: recoveryKey.display.description=A következő helyreállítási kulcs használható a "%s" hozzáférésének visszaállítására:
recoveryKey.display.StorageHints=Tartsa nagyon biztonságos helyen. pl.:\n •Tárolja egy jelszókezelővel\n •Mentse el egy USB meghajtóra\n •Nyomtassa egy papírra recoveryKey.display.StorageHints=Tartsa nagyon biztonságos helyen. pl.:\n •Tárolja egy jelszókezelővel\n •Mentse el egy USB meghajtóra\n •Nyomtassa egy papírra
## Reset Password ## Reset Password
@@ -506,41 +557,71 @@ recoveryKey.display.StorageHints=Tartsa nagyon biztonságos helyen. pl.:\n •T
recoveryKey.recover.title=Jelszó visszaállítása recoveryKey.recover.title=Jelszó visszaállítása
recoveryKey.recover.prompt=Írja be a visszaállítási kulcsot a következőhöz "%s": recoveryKey.recover.prompt=Írja be a visszaállítási kulcsot a következőhöz "%s":
recoveryKey.recover.correctKey=Ez a visszaállítási kulcs érvényes recoveryKey.recover.correctKey=Ez a visszaállítási kulcs érvényes
recoveryKey.recover.wrongKey=Ez a visszaállítási kulcs egy másik széfhez tartozik recoveryKey.recover.wrongKey=Ez a visszaállítási kulcs egy másik titkosított tárolóhóz tartozik
recoveryKey.recover.invalidKey=Ez a visszaállítási kulcs nem érvényes recoveryKey.recover.invalidKey=Ez a visszaállítási kulcs nem érvényes
recoveryKey.printout.heading=Cryptomator visszaállítási kulcs\n"%s"\n recoveryKey.printout.heading=Cryptomator visszaállítási kulcs\n"%s"\n
### Reset Password ### Reset Password
recoveryKey.recover.resetBtn=Visszaállítás recoveryKey.recover.resetBtn=Visszaállítás
recoveryKey.recover.recoverBtn=Helyreállítás
### Recovery Key Password Reset Success ### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=A jelszó alaphelyzetbe állítása sikeresen megtörtént recoveryKey.recover.resetSuccess.message=A jelszó alaphelyzetbe állítása sikeresen megtörtént
recoveryKey.recover.resetSuccess.description=Feloldhatja a széfet az új jelszóval. recoveryKey.recover.resetSuccess.description=Feloldhatja a titkosított tárolót az új jelszóval.
### Recovery Key Vault Config Reset Success ### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Tároló konfiguráció helyreállítva
recoveryKey.recover.resetMasterkeyFileSuccess.message=A mesterkulcsfájl helyreállítva
recoveryKey.recover.resetMasterkeyFileSuccess.description=Mostantól a jelszavával oldhatja fel a titkosított tárolót.
# Recover Vault Config File and/or Masterkey # Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog ##Add Existing Vault without recovery - Dialog
recover.existing.title=Titkosított tároló hozzáadva
recover.existing.message=A tároló sikeresen hozzáadva
recover.existing.description=A "%s" titkosított tároló hozzáadásra került a tárolók listájára. Helyreállítási műveletre nem volt szükség.
##Vault Already Exists - Dialog ##Vault Already Exists - Dialog
recover.alreadyExists.title=A titkosított tároló már létezik
recover.alreadyExists.message=Ez a tároló már hozzá lett adva
recover.alreadyExists.description="%s" nevű titkosított tároló már hozzá volt adva a tárolók listájához, ezért nem került újból hozzáadásra.
##Invalid Selection - Dialog ##Invalid Selection - Dialog
recover.invalidSelection.title=Érvénytelen kiválasztás
recover.invalidSelection.message=A kiválasztott elem nem titkosított tároló
recover.invalidSelection.description=A kiválasztott mappának érvényes Cryptomator tárolónak kell lennie.
## Contact Hub Vault Owner - Dialog ## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Hub széf contactHubVaultOwner.title=Hub széf
contactHubVaultOwner.message=Ezt a titkosító tárolót a Cryptomator Hub segítségével hozták létre
contactHubVaultOwner.description=Kérjük, vegye fel a kapcsolatot a tároló tulajdonosával a hiányzó fájl helyreállítása érdekében. A tároló-sablont a Cryptomator Hubról töltheti le.
##Dialog Title ##Dialog Title
recover.recoverVaultConfig.title=Titkosított tároló konfiguráció helyreállítása
recover.recoverMasterkey.title=Mesterkulcsfájl helyreállítása
## OnBoarding ## OnBoarding
recover.onBoarding.chooseMethod=Válasszon helyreállítási módszer:
recover.onBoarding.useRecoveryKey=Helyreállítási kulcs használata
recover.onBoarding.usePassword=Jelszó használata
recover.onBoarding.intro=Ellenőrizze a következőket:
recover.onBoarding.pleaseConfirm=Továbblépés előtt ellenőrizze a következőket:
recover.onBoarding.otherwisePleaseConfirm=Egyébként erősítse meg:
recover.onBoarding.allMissing.intro=Ha ezt a titkosított tárolót a Cryptomator Hub kezeli, akkor a könyvtár tulajdonosának kell helyreállítania az Ön számára.
recover.onBoarding.intro.ensure=Minden fájl teljes mértékben szinkronizálva van.
recover.onBoarding.affirmation=Elolvastam és megértettem ezeket a követelményeket
###Vault Config Missing ###Vault Config Missing
recover.onBoarding.intro.recoveryKey=Birtokában van a tároló helyreállítási kulcsa és tudja milyen haladó beállításokat használtak.
recover.onBoarding.intro.password=Birtokában van a tároló jelszava és tudja milyen haladó beállításokat használtak.
###Masterkey Missing ###Masterkey Missing
recover.onBoarding.intro.masterkey.recoveryKey=Birtokában van a tároló helyreállítási kulcsa.
## Expert Settings ## Expert Settings
recover.expertSettings.shorteningThreshold.title=Ennek az értéknek meg kell egyeznie a helyreállítás előtt használt értékkel, hogy biztosítva legyen a korábban titkosított adatokkal való kompatibilitás.
# Convert Vault # Convert Vault
convertVault.title=Széf átalakítása convertVault.title=Titkosított tároló átalakítása
convertVault.convert.convertBtn.before=Átalakítás convertVault.convert.convertBtn.before=Átalakítás
convertVault.convert.convertBtn.processing=Átalakítás… convertVault.convert.convertBtn.processing=Átalakítás…
convertVault.success.message=Sikeres átalakítás convertVault.success.message=Sikeres átalakítás
convertVault.hubToPassword.success.description=Feloldhatja a széfet a kiválasztott jelszóval Hub hozzáférés nélkül. convertVault.hubToPassword.success.description=Feloldhatja a titkosított tárolót a kiválasztott jelszóval Hub hozzáférés nélkül.
# New Password # New Password
newPassword.promptText=Adjon meg egy új jelszót newPassword.promptText=Adjon meg egy új jelszót
@@ -556,13 +637,13 @@ passwordStrength.messageLabel.4=Nagyon erős
# Quit # Quit
quit.title=Alkalmazás bezárása quit.title=Alkalmazás bezárása
quit.message=Vannak feloldott széfek quit.message=Vannak feloldott titkosított tárolók
quit.description=Kérem, erősítse meg a kilépési szándékát. A Cryptomator lezárja az összes feloldott széfet az adatvesztés elkerülése érdekében. quit.description=Kérem, erősítse meg a kilépési szándékát. A Cryptomator lezárja az összes feloldott titkosított tárolót az adatvesztés elkerülése érdekében.
quit.lockAndQuitBtn=Zárolás és kilépés quit.lockAndQuitBtn=Zárolás és kilépés
# Forced Quit # Forced Quit
quit.forced.message=Egyes széfeket nem lehetett lezárni quit.forced.message=Egyes tárolókat nem lehetett lezárni
quit.forced.description=A széfek zárolását függőbben lévő műveletek vagy megnyitott fájlok blokkolták. Kényszerítheti a maradék széfek zárolását, de az I/O megszakítása nem mentett adatok elvesztéséhez vezethet. quit.forced.description=A titkosított tárolók zárolását függőbben lévő műveletek vagy megnyitott fájlok blokkolták. Kényszerítheti a maradék tárolók zárolását, de az I/O megszakítása nem mentett adatok elvesztéséhez vezethet.
quit.forced.forceAndQuitBtn=Kényszerítés és Kilépés quit.forced.forceAndQuitBtn=Kényszerítés és Kilépés
# Update Reminder # Update Reminder
@@ -580,37 +661,76 @@ dokanySupportEnd.description=A Cryptomator nem támogatja tovább a Dokany köte
dokanySupportEnd.preferencesBtn=Beállítások megnyitása dokanySupportEnd.preferencesBtn=Beállítások megnyitása
#Retry If Readonly #Retry If Readonly
retryIfReadonly.title=Korlátozott Széf Hozzáférés retryIfReadonly.title=Korlátozott tároló hozzáférés
retryIfReadonly.message=Nincs írási jogod a széf könyvtárához retryIfReadonly.message=Nincs írási jogod a tároló könyvtárához
retryIfReadonly.description=A Cryptomator nem tud a széf könyvtárába írni. Átrakhatod a széfet írásvédettre és megpróbálhatod újra. Ezt az opciót kikapcsolhatod a széf beállításaiban. retryIfReadonly.description=A Cryptomator nem tud a tároló könyvtárába írni. Átrakhatod a tárolót írásvédettre és megpróbálhatod újra. Ezt az opciót kikapcsolhatod a titkosított tároló beállításaiban.
retryIfReadonly.retry=Változtatás és Újrapróbálás retryIfReadonly.retry=Változtatás és Újrapróbálás
# Share Vault # Share Vault
shareVault.title=Széf megosztása shareVault.title=Titkosított tároló megosztása
shareVault.message=Szeretné megosztani a széfét másokkal? shareVault.message=Szeretné megosztani a titkosított tárolóját másokkal?
shareVault.description=Mindig legyen óvatos, amikor másokkal osztja meg a széfét. Röviden, kövesse az alábbi lépéseket: shareVault.description=Mindig legyen óvatos, amikor másokkal osztja meg a tárolóit. Röviden, kövesse az alábbi lépéseket:
shareVault.instruction.1=Ossza meg a titkosított széf mappájának hozzáférését felhőalapú tárolón keresztül. shareVault.instruction.1=1. Ossza meg a titkosított tároló mappájának hozzáférését felhőalapú tárolón keresztül.
shareVault.instruction.2=2. Ossza meg a széf jelszavát biztonságos módon. shareVault.instruction.2=2. Ossza meg a titkosított tároló jelszavát biztonságos módon.
shareVault.remarkBestPractices=További információkért tekintse meg a legjobb gyakorlatokra vonatkozó javaslatokat a dokumentációnkban. shareVault.remarkBestPractices=További információkért tekintse meg a legjobb gyakorlatokra vonatkozó javaslatokat a dokumentációnkban.
shareVault.docsTooltip=Nyissa meg a dokumentációt, hogy többet megtudjon a széfek megosztásáról. shareVault.docsTooltip=Nyissa meg a dokumentációt, hogy többet megtudjon a titkosított tárolók megosztásáról.
shareVault.hubAd.description=A biztonságos mód csapatokban való munkavégzéshez shareVault.hubAd.description=A biztonságos mód csapatokban való munkavégzéshez
shareVault.hubAd.keyManagement=Nullaismeretű (Zero-knowledge) kulcskezelés shareVault.hubAd.keyManagement=• Zero-knowledge kulcskezelés
shareVault.hubAd.authentication=• Erős hitelesítés shareVault.hubAd.authentication=• Erős hitelesítés
shareVault.hubAd.encryption=• Végponttól végpontig terjedő titkosítás shareVault.hubAd.encryption=• Végponttól végpontig terjedő titkosítás
shareVault.visitHub=Látogassa meg a Cryptomator Hubot shareVault.visitHub=Látogassa meg a Cryptomator Hubot
shareVault.hub.message=Hogyan osszon meg egy Hub széfet shareVault.hub.message=Hogyan osszon meg egy Hub-tárolót
shareVault.hub.description=Ahhoz, hogy megossza a széf tartalmát egy másik csapattaggal, két lépést kell végrehajtania: shareVault.hub.description=Ahhoz, hogy megossza a tároló tartalmát egy másik csapattaggal, két lépést kell végrehajtania:
shareVault.hub.instruction.1=Ossza meg a titkosított széf mappájának hozzáférését felhőalapú tárolón keresztül. shareVault.hub.instruction.1=Ossza meg a titkosított széf mappájának hozzáférését felhőalapú tárolón keresztül.
shareVault.hub.instruction.2=2. Adjon hozzáférést a csapattagnak a Cryptomator Hubban. shareVault.hub.instruction.2=2. Adjon hozzáférést a csapattagnak a Cryptomator Hubban.
shareVault.hub.openHub=Nyissa meg a Cryptomator Hubot shareVault.hub.openHub=Nyissa meg a Cryptomator Hubot
# Decrypt File Names # Decrypt File Names
decryptNames.title=Fájlnevek visszafejtése
decryptNames.filePicker.title=Titkosított fájl kiválasztása
decryptNames.filePicker.extensionDescription=Cryptomator titkosított fájl
decryptNames.copyTable.tooltip=Táblázat másolása
decryptNames.clearTable.tooltip=Táblázat törlése
decryptNames.column.encrypted=Titkosított
decryptNames.column.decrypted=Visszafejtett
decryptNames.copyHint=A cella tartalmának másolása a következővel: %s
decryptNames.dropZone.message=Húzza ide a fájlokat, vagy kattintson a kiválasztáshoz
decryptNames.dropZone.error.vaultInternalFiles=A titkosított tároló belső fájljai nem visszafejthető névvel lettek kiválasztva
decryptNames.dropZone.error.foreignFiles=A kiválasztott fájlok nem a "%s" titkosított tárolóhoz tartoznak
decryptNames.dropZone.error.noDirIdBackup=A kiválasztott könyvtár nem tartalmaz dird.c9r fájlt
decryptNames.dropZone.error.generic=A fájlnevek visszafejtése nem sikerült
# Event View # Event View
eventView.title=Események
eventView.filter.allVaults=Mind
eventView.clearListButton.tooltip=Lista törlése
eventView.filterVaults=Szűrés tároló szerint
eventView.cell.actionsButton.tooltip=Eseményműveletek
## event list entries ## event list entries
eventView.entry.vaultLocked.description="%s" megnyitása a részletekért
eventView.entry.conflictResolved.message=Megoldott ütközések
eventView.entry.conflictResolved.showDecrypted=Titkosított fájlok megjelenítése
eventView.entry.conflict.message=Ütközés feloldása sikertelen
eventView.entry.conflict.showDecrypted=A visszafejtett, eredeti fájl megjelenítése
eventView.entry.conflict.showEncrypted=Az ütköző, titkosított fájl megjelenítése
eventView.entry.decryptionFailed.message=A visszafejtés sikertelen
eventView.entry.decryptionFailed.showEncrypted=Titkosított fájl megjelenítése
eventView.entry.brokenDirFile.message=Törött könyvtárhivatkozás
eventView.entry.brokenDirFile.showEncrypted=Törött, titkosított hivatkozás megjelenítése
eventView.entry.brokenFileNode.message=Meghibásodott fájlrendszer-csomópont
eventView.entry.brokenFileNode.showEncrypted=Meghibásodott, titkosított csomópont megjelenítése
eventView.entry.brokenFileNode.copyDecrypted=A visszafejtett elérési út másolása
eventView.entry.inUse.message=A fájl használatban van
eventView.entry.inUse.showDecrypted=Titkosított fájlok megjelenítése
eventView.entry.inUse.showEncrypted=Titkosított fájl megjelenítése
eventView.entry.inUse.copyUserAndDevice=A zároló felhasználó és eszköznév másolása
eventView.entry.inUse.ignoreLock=Használati állapot figyelmen kívül hagyása
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=A fájlt egy másik eszközön használják
notification.inUse.description=A fájlt %s használja ezen a rendszeren: %s. Kérje meg, hogy zárja be a fájlt, és várja meg a szinkronizálás befejezését. Az állapot figyelmen kívül hagyásával most is megnyithatja, de ez ütközéseket okozhat, vagy felülírhatja az újabb módosításokat.
notification.inUse.action=Használati állapot figyelmen kívül hagyása
@@ -154,6 +154,8 @@ unlock.error.title=Gagal membuka kunci "%s"
hub.noKeychain.message=Tidak dapat mengakses perangkat kunci 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.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 hub.noKeychain.openBtn=Buka Preferensi
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Percayai
### Waiting ### Waiting
hub.auth.message=Menunggu otentikasi… hub.auth.message=Menunggu otentikasi…
hub.auth.description=Anda secara otomatis akan diarahkan ke halaman login. hub.auth.description=Anda secara otomatis akan diarahkan ke halaman login.
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=Perangkat ini sudah terdaftar
### Unauthorized ### Unauthorized
hub.unauthorized.message=Akses ditolak hub.unauthorized.message=Akses ditolak
hub.unauthorized.description=Anda tidak punya otorisasi untuk membuka brankas ini. Hubungi pemilik brankas untuk meminta akses. hub.unauthorized.description=Anda tidak punya otorisasi untuk membuka brankas ini. Hubungi pemilik brankas untuk meminta akses.
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Tindakan diperlukan hub.requireAccountInit.message=Tindakan diperlukan
hub.requireAccountInit.description.0=Untuk melanjutkan, silakan lengkapi langkah-langkah yang diperlukan dalam hub.requireAccountInit.description.0=Untuk melanjutkan, silakan lengkapi langkah-langkah yang diperlukan dalam
@@ -614,4 +617,4 @@ eventView.filter.allVaults=Semua
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+18 -1
View File
@@ -109,6 +109,13 @@ addvaultwizard.existing.restore=Ripristina…
addvaultwizard.existing.chooseBtn=Scegli… addvaultwizard.existing.chooseBtn=Scegli…
addvaultwizard.existing.filePickerTitle=Seleziona file cassaforte addvaultwizard.existing.filePickerTitle=Seleziona file cassaforte
addvaultwizard.existing.filePickerMimeDesc=Cassaforte di Cryptomator addvaultwizard.existing.filePickerMimeDesc=Cassaforte di Cryptomator
addvaultwizard.existing.notAVault.title=Non è una cassaforte
addvaultwizard.existing.notAVault.message=La cartella selezionata non è una cassaforte Cryptomator
addvaultwizard.existing.notAVault.description.missingDataDir=Manca la necessaria sottodirectory "d" all'interno di "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=La voce "d" all'interno di "%s" non è una directory.
addvaultwizard.existing.notAVault.description.missingVaultConfig=Manca il file necessario "vault.cryptomator" all'interno di "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=Il file "vault.cryptomator" che si trova dentro "%s" non può essere letto a causa di diritti di accesso insufficienti.
addvaultwizard.existing.notAVault.description.unsupportedStructure=La struttura della directory di "%s" non è supportata.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Cassaforte "%s" aggiunta.\nDevi sbloccare questa cassaforte per accedere o aggiungere contenuti. Altrimenti, puoi sbloccarla in qualsiasi momento successivo. addvaultwizard.success.nextStepsInstructions=Cassaforte "%s" aggiunta.\nDevi sbloccare questa cassaforte per accedere o aggiungere contenuti. Altrimenti, puoi sbloccarla in qualsiasi momento successivo.
addvaultwizard.success.unlockNow=Sblocca Ora addvaultwizard.success.unlockNow=Sblocca Ora
@@ -161,6 +168,12 @@ unlock.error.title=Sblocco "%s" non riuscito
hub.noKeychain.message=Impossibile accedere alla chiave del dispositivo hub.noKeychain.message=Impossibile accedere alla chiave del dispositivo
hub.noKeychain.description=Per sbloccare le casseforti Hub, è necessaria una chiave del dispositivo, che è protetta tramite un portachiavi. Per procedere, abilita "%s" e seleziona un portachiavi nelle preferenze. hub.noKeychain.description=Per sbloccare le casseforti Hub, è necessaria una chiave del dispositivo, che è protetta tramite un portachiavi. Per procedere, abilita "%s" e seleziona un portachiavi nelle preferenze.
hub.noKeychain.openBtn=Apri 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 ### Waiting
hub.auth.message=In attesa di autenticazione… hub.auth.message=In attesa di autenticazione…
hub.auth.description=Dovresti essere reindirizzato automaticamente alla pagina di login. hub.auth.description=Dovresti essere reindirizzato automaticamente alla pagina di login.
@@ -192,6 +205,9 @@ hub.archived.description=Questa cassaforte è stata archiviata e non è più acc
### Unauthorized ### Unauthorized
hub.unauthorized.message=Accesso negato hub.unauthorized.message=Accesso negato
hub.unauthorized.description=Non sei autorizzato ad aprire questa cassaforte. Chiedi l'accesso al proprietario. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Azione richiesta hub.requireAccountInit.message=Azione richiesta
hub.requireAccountInit.description.0=Per procedere, completa i passaggi richiesti nel tuo hub.requireAccountInit.description.0=Per procedere, completa i passaggi richiesti nel tuo
@@ -305,6 +321,7 @@ preferences.general.debugDirectory=Rivela i file di registro
preferences.general.autoStart=Avvia Cryptomator all'avvio del sistema preferences.general.autoStart=Avvia Cryptomator all'avvio del sistema
preferences.general.keychainBackend=Memorizza le password con preferences.general.keychainBackend=Memorizza le password con
preferences.general.quickAccessService=Aggiungi cassaforte sbloccata all'area di accesso rapido preferences.general.quickAccessService=Aggiungi cassaforte sbloccata all'area di accesso rapido
preferences.general.resetTrustedHosts=Azzera gli host affidabili
## Interface ## Interface
preferences.interface=Interfaccia preferences.interface=Interfaccia
preferences.interface.theme=Aspetto preferences.interface.theme=Aspetto
@@ -716,4 +733,4 @@ eventView.entry.inUse.ignoreLock=Ignora lo stato di utilizzo
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=Il file è in uso su un altro dispositivo 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.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
@@ -154,6 +154,8 @@ unlock.error.title=ロック解除 "%s" に失敗しました。
hub.noKeychain.message=デバイス キーにアクセスできません hub.noKeychain.message=デバイス キーにアクセスできません
hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。 hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。
hub.noKeychain.openBtn=環境設定を開く hub.noKeychain.openBtn=環境設定を開く
### Check Host Authenticity
hub.checkHostTrust.trustBtn=信頼する
### Waiting ### Waiting
hub.auth.message=認証を待機中… hub.auth.message=認証を待機中…
hub.auth.description=ログイン ページに自動的にリダイレクトされます。 hub.auth.description=ログイン ページに自動的にリダイレクトされます。
@@ -183,6 +185,7 @@ hub.registerFailed.description.deviceAlreadyExists=このデバイスは既に
### Unauthorized ### Unauthorized
hub.unauthorized.message=アクセスが拒否されました hub.unauthorized.message=アクセスが拒否されました
hub.unauthorized.description=この金庫を開く権限がありません。金庫の所有者からアクセス許可を貰って下さい。 hub.unauthorized.description=この金庫を開く権限がありません。金庫の所有者からアクセス許可を貰って下さい。
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=アクションが必要です hub.requireAccountInit.message=アクションが必要です
hub.requireAccountInit.description.0=続行するには以下のサイトで必要な手順を完了してください hub.requireAccountInit.description.0=続行するには以下のサイトで必要な手順を完了してください
@@ -632,4 +635,4 @@ eventView.entry.inUse.copyUserAndDevice=ロックしているユーザーとデ
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+21 -4
View File
@@ -109,6 +109,13 @@ addvaultwizard.existing.restore=복구…
addvaultwizard.existing.chooseBtn=선택… addvaultwizard.existing.chooseBtn=선택…
addvaultwizard.existing.filePickerTitle=Vault 파일 선택 addvaultwizard.existing.filePickerTitle=Vault 파일 선택
addvaultwizard.existing.filePickerMimeDesc=Cryptomator Vault addvaultwizard.existing.filePickerMimeDesc=Cryptomator Vault
addvaultwizard.existing.notAVault.title=Vault가 아님
addvaultwizard.existing.notAVault.message=선택한 폴더는 Cryptomator Vault가 아닙니다
addvaultwizard.existing.notAVault.description.missingDataDir="%s" 내부에 필수 "d" 하위 디렉터리가 누락되었습니다.
addvaultwizard.existing.notAVault.description.dataNotADirectory="%s" 내부의 "d" 항목은 디렉터리가 아닙니다.
addvaultwizard.existing.notAVault.description.missingVaultConfig="%s" 내부에 필수 "vault.cryptomator" 파일이 누락되었습니다.
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=접근 권한이 부족하여 "%s" 내부의 "vault.cryptomator" 파일을 읽을 수 없습니다.
addvaultwizard.existing.notAVault.description.unsupportedStructure="%s"의 디렉터리 구조는 지원되지 않습니다.
## Success ## Success
addvaultwizard.success.nextStepsInstructions="%s" Vault가 추가되었습니다.\n이 Vault를 접근하거나 컨텐츠를 추가하려면 잠금 해제가 필요합니다. 그렇지만 언제든지 잠금 해제가 가능합니다. addvaultwizard.success.nextStepsInstructions="%s" Vault가 추가되었습니다.\n이 Vault를 접근하거나 컨텐츠를 추가하려면 잠금 해제가 필요합니다. 그렇지만 언제든지 잠금 해제가 가능합니다.
addvaultwizard.success.unlockNow=지금 잠금 해제 addvaultwizard.success.unlockNow=지금 잠금 해제
@@ -161,6 +168,12 @@ unlock.error.title="%s" 잠금 해제 실패
hub.noKeychain.message=기기 키에 액세스할 수 없습니다 hub.noKeychain.message=기기 키에 액세스할 수 없습니다
hub.noKeychain.description=Hub Vaults를 잠금 해제하려면 키체인을 사용하여 보호되는 기기 키가 필요합니다. 계속하려면 "%s"을(를) 활성화하고 기본 설정에서 키체인을 선택하십시오. hub.noKeychain.description=Hub Vaults를 잠금 해제하려면 키체인을 사용하여 보호되는 기기 키가 필요합니다. 계속하려면 "%s"을(를) 활성화하고 기본 설정에서 키체인을 선택하십시오.
hub.noKeychain.openBtn=설정 열기 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 ### Waiting
hub.auth.message=인증 대기 중… hub.auth.message=인증 대기 중…
hub.auth.description=자동으로 로그인 페이지로 리다이렉트 될 것입니다. hub.auth.description=자동으로 로그인 페이지로 리다이렉트 될 것입니다.
@@ -192,6 +205,9 @@ hub.archived.description=이 Vault는 아카이브되어 더 이상 접근할
### Unauthorized ### Unauthorized
hub.unauthorized.message=액세스 거부됨 hub.unauthorized.message=액세스 거부됨
hub.unauthorized.description=해당 Vault에 접근하도록 허가되지 않았습니다. Vault의 소유자에게 권한을 요청하세요. hub.unauthorized.description=해당 Vault에 접근하도록 허가되지 않았습니다. Vault의 소유자에게 권한을 요청하세요.
### Untrusted Host
hub.untrustedHost.message=호스트를 신뢰할 수 없음
hub.untrustedHost.description=보안상의 이유로 Hub 연결이 차단되었습니다. Hub 호스트가 안전하다고 판단되시면 Hub 관리자에게 문의하거나 다시 시도해 주세요.
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=조치가 필요함 hub.requireAccountInit.message=조치가 필요함
hub.requireAccountInit.description.0=진행하려면 필요한 조치를 완료하십시오: hub.requireAccountInit.description.0=진행하려면 필요한 조치를 완료하십시오:
@@ -199,7 +215,7 @@ hub.requireAccountInit.description.1=Hub 사용자 프로필
hub.requireAccountInit.description.2=. hub.requireAccountInit.description.2=.
### License Exceeded ### License Exceeded
hub.invalidLicense.message=Hub 라이선스가 잘못되었습니다. hub.invalidLicense.message=Hub 라이선스가 잘못되었습니다.
hub.invalidLicense.description=Cryptomator Hub 인스턴스에 잘못된 라이선스가 있습니다. 라이선스를 업그레이드하거나 갱신하려면 허브 관리자에게 알리십시오. hub.invalidLicense.description=Cryptomator Hub 인스턴스에 잘못된 라이선스가 있습니다. 라이선스를 업그레이드하거나 갱신하려면 Hub 관리자에게 알리십시오.
# Lock # Lock
## Force ## Force
@@ -305,6 +321,7 @@ preferences.general.debugDirectory=로그 파일 표시
preferences.general.autoStart=시스템 시작 시 Cryptomator 실행 preferences.general.autoStart=시스템 시작 시 Cryptomator 실행
preferences.general.keychainBackend=다음 경로에 비밀번호 저장 preferences.general.keychainBackend=다음 경로에 비밀번호 저장
preferences.general.quickAccessService=열린 Vault를 빠른 접근 위치에 추가하기 preferences.general.quickAccessService=열린 Vault를 빠른 접근 위치에 추가하기
preferences.general.resetTrustedHosts=신뢰하는 호스트 목록 초기화
## Interface ## Interface
preferences.interface=인터페이스 preferences.interface=인터페이스
preferences.interface.theme=테마 preferences.interface.theme=테마
@@ -581,7 +598,7 @@ recover.recoverMasterkey.title=마스터키 복구하기
## OnBoarding ## OnBoarding
recover.onBoarding.chooseMethod=복구 방법을 선택하세요: recover.onBoarding.chooseMethod=복구 방법을 선택하세요:
recover.onBoarding.useRecoveryKey=복구키 사용하기 recover.onBoarding.useRecoveryKey=복구 키 사용하기
recover.onBoarding.usePassword=비밀번호 사용하기 recover.onBoarding.usePassword=비밀번호 사용하기
recover.onBoarding.intro=아래 사항을 정확히 읽고 확인하세요: recover.onBoarding.intro=아래 사항을 정확히 읽고 확인하세요:
recover.onBoarding.pleaseConfirm=진행하기 전, 다음 사항을 확인해 주십시오: recover.onBoarding.pleaseConfirm=진행하기 전, 다음 사항을 확인해 주십시오:
@@ -700,7 +717,7 @@ eventView.entry.conflict.showDecrypted=복호화된 원본 파일 보기
eventView.entry.conflict.showEncrypted=충돌하는 암호화된 파일 보기 eventView.entry.conflict.showEncrypted=충돌하는 암호화된 파일 보기
eventView.entry.decryptionFailed.message=복호화 실패 eventView.entry.decryptionFailed.message=복호화 실패
eventView.entry.decryptionFailed.showEncrypted=암호화된 파일 보기 eventView.entry.decryptionFailed.showEncrypted=암호화된 파일 보기
eventView.entry.brokenDirFile.message=망가진 디렉터리 링크 eventView.entry.brokenDirFile.message=잘못된 디렉터리 링크
eventView.entry.brokenDirFile.showEncrypted=망가진 암호화된 링크 보기 eventView.entry.brokenDirFile.showEncrypted=망가진 암호화된 링크 보기
eventView.entry.brokenFileNode.message=망가진 파일 시스템 노드 eventView.entry.brokenFileNode.message=망가진 파일 시스템 노드
eventView.entry.brokenFileNode.showEncrypted=망가진 암호화된 노드 보기 eventView.entry.brokenFileNode.showEncrypted=망가진 암호화된 노드 보기
@@ -716,4 +733,4 @@ eventView.entry.inUse.ignoreLock=사용 여부 상태 무시
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=다른 기기에서 파일 사용 중 notification.inUse.message=다른 기기에서 파일 사용 중
notification.inUse.description=해당 파일은 %s이(가) %s의 컴퓨터에서 열어 놓은 상태입니다. 파일을 닫고 동기화가 완료될 때까지 기다리도록 요청하세요. 상태를 무시하고 지금 파일을 열 수도 있지만, 이렇게 하면 충돌이 발생하거나 최신 변경 사항이 덮어쓰여질 수 있습니다. notification.inUse.description=해당 파일은 %s이(가) %s의 컴퓨터에서 열어 놓은 상태입니다. 파일을 닫고 동기화가 완료될 때까지 기다리도록 요청하세요. 상태를 무시하고 지금 파일을 열 수도 있지만, 이렇게 하면 충돌이 발생하거나 최신 변경 사항이 덮어쓰여질 수 있습니다.
notification.inUse.action=사용 여부 상태 무시 notification.inUse.action=사용 여부 상태 무시
@@ -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
@@ -161,6 +161,10 @@ unlock.error.title="%s" atslēgšana neizdevās
hub.noKeychain.message=Nebija iespējams piekļūt ierīces atslēgai 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.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 hub.noKeychain.openBtn=Atvērt iestatījumus
### Check Host Authenticity
hub.checkHostTrust.message.check=Pārbauda konfigurāciju…
hub.checkHostTrust.trustBtn=Uzticēties
hub.checkHostTrust.denyBtn=Noraidīt
### Waiting ### Waiting
hub.auth.message=Gaida autentificēšanu… hub.auth.message=Gaida autentificēšanu…
hub.auth.description=Vajadzētu notikt automātiskai pārvirzīšanai uz pieteikšanās lapu. hub.auth.description=Vajadzētu notikt automātiskai pārvirzīšanai uz pieteikšanās lapu.
@@ -192,6 +196,7 @@ hub.archived.description=Glabātava tika arhivēta un vairs nav pieejama. Lūgum
### Unauthorized ### Unauthorized
hub.unauthorized.message=Piekļuve atteikta 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Nepieciešama darbība hub.requireAccountInit.message=Nepieciešama darbība
hub.requireAccountInit.description.0=Lai turpinātu, lūgums pabeigt nepieciešamos soļus savā hub.requireAccountInit.description.0=Lai turpinātu, lūgums pabeigt nepieciešamos soļus savā
@@ -715,4 +720,4 @@ eventView.entry.inUse.ignoreLock=Neņemt vēra izmantošanas stāvokli
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=Datne tiek izmantota citā ierīcē 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.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
@@ -77,6 +77,7 @@ unlock.unlockBtn=Отклучи
## Success ## Success
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -86,6 +87,7 @@ hub.registerSuccess.unlockBtn=Отклучи
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -206,4 +208,4 @@ vaultOptions.mount.mountPoint.directoryPickerButton=Избор…
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -32,6 +32,7 @@
## Success ## Success
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -40,6 +41,7 @@
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -154,4 +156,4 @@
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -159,6 +159,8 @@ unlock.error.title=Lås opp "%s" mislyktes
hub.noKeychain.message=Får ikke tilgang til enhetsnøkkel 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.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 hub.noKeychain.openBtn=Åpne innstillinger
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Stol på
### Waiting ### Waiting
hub.auth.message=Venter på autentisering… hub.auth.message=Venter på autentisering…
hub.auth.description=Du burde bli automatisk videresendt til innloggingssiden. 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 hub.archived.message=Hvelvet er arkivert
### Unauthorized ### Unauthorized
hub.unauthorized.message=Ingen tilgang hub.unauthorized.message=Ingen tilgang
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Påkrevd handling hub.requireAccountInit.message=Påkrevd handling
hub.requireAccountInit.description.0=For å fortsette, fullfør trinnene som kreves i din hub.requireAccountInit.description.0=For å fortsette, fullfør trinnene som kreves i din
@@ -613,4 +616,4 @@ shareVault.hub.openHub=Åpne Cryptomator hub
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+18 -1
View File
@@ -109,6 +109,13 @@ addvaultwizard.existing.restore=Herstel…
addvaultwizard.existing.chooseBtn=Kies… addvaultwizard.existing.chooseBtn=Kies…
addvaultwizard.existing.filePickerTitle=Kies kluisbestand addvaultwizard.existing.filePickerTitle=Kies kluisbestand
addvaultwizard.existing.filePickerMimeDesc=Cryptomator kluis addvaultwizard.existing.filePickerMimeDesc=Cryptomator kluis
addvaultwizard.existing.notAVault.title=Geen kluis
addvaultwizard.existing.notAVault.message=De geselecteerde map is geen Cryptomatorkluis
addvaultwizard.existing.notAVault.description.missingDataDir=De vereiste "d" submap ontbreekt binnen "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=De "d" invoer binnen "%s" is geen map.
addvaultwizard.existing.notAVault.description.missingVaultConfig=Het vereiste "vault.cryptomator" bestand ontbreekt in "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=Bestand "vault.cryptomator" binnen "%s" kan niet worden gelezen omdat er onvoldoende toegangsrechten zijn.
addvaultwizard.existing.notAVault.description.unsupportedStructure=De mapstructuur van "%s" wordt niet ondersteund.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Toegevoegde kluis "%s".\nOntgrendel deze kluis om toegang te krijgen tot of om inhoud toe te voegen. Optioneel kunt u deze op elk later tijdstip ontgrendelen. addvaultwizard.success.nextStepsInstructions=Toegevoegde kluis "%s".\nOntgrendel deze kluis om toegang te krijgen tot of om inhoud toe te voegen. Optioneel kunt u deze op elk later tijdstip ontgrendelen.
addvaultwizard.success.unlockNow=Nu Ontgrendelen addvaultwizard.success.unlockNow=Nu Ontgrendelen
@@ -161,6 +168,12 @@ unlock.error.title=Ontgrendelen "%s" mislukt
hub.noKeychain.message=Geen toegang tot de apparaatsleutel 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.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 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 ### Waiting
hub.auth.message=Wachten op authenticatie… hub.auth.message=Wachten op authenticatie…
hub.auth.description=U zal automatisch worden doorgestuurd naar de inlogpagina. hub.auth.description=U zal automatisch worden doorgestuurd naar de inlogpagina.
@@ -192,6 +205,9 @@ hub.archived.description=Deze kluis is gearchiveerd en is niet meer toegankelijk
### Unauthorized ### Unauthorized
hub.unauthorized.message=Toegang geweigerd 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Actie vereist hub.requireAccountInit.message=Actie vereist
hub.requireAccountInit.description.0=Om verder te gaan, gelieve de stappen te voltooien in uw hub.requireAccountInit.description.0=Om verder te gaan, gelieve de stappen te voltooien in uw
@@ -305,6 +321,7 @@ preferences.general.debugDirectory=Logboekbestanden bekijken
preferences.general.autoStart=Start Cryptomator als het systeem opstart preferences.general.autoStart=Start Cryptomator als het systeem opstart
preferences.general.keychainBackend=Bewaar wachtwoorden met preferences.general.keychainBackend=Bewaar wachtwoorden met
preferences.general.quickAccessService=Voeg ontgrendelde kluizen toe aan snelle toegang preferences.general.quickAccessService=Voeg ontgrendelde kluizen toe aan snelle toegang
preferences.general.resetTrustedHosts=Vertrouwde hosts vrijgegeven
## Interface ## Interface
preferences.interface=Uiterlijk preferences.interface=Uiterlijk
preferences.interface.theme=Uiterlijk preferences.interface.theme=Uiterlijk
@@ -716,4 +733,4 @@ eventView.entry.inUse.ignoreLock=Gebruiksstatus negeren
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=Bestand is op een ander apparaat in gebruik 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.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
@@ -95,6 +95,7 @@ unlock.success.rememberChoice=Hugs valet - ikkje vis dette igjen
unlock.success.revealBtn=Gjer eininga synleg unlock.success.revealBtn=Gjer eininga synleg
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -104,6 +105,7 @@ hub.registerSuccess.unlockBtn=Låse opp
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -315,4 +317,4 @@ quit.lockAndQuitBtn=Lås og avslutt
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -32,6 +32,7 @@
## Success ## Success
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -40,6 +41,7 @@
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -154,4 +156,4 @@
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -138,6 +138,8 @@ unlock.error.restartRequired.message=ਵਾਲਟ ਨੂੰ ਅਣ-ਲਾਕ ਕ
unlock.error.title="%s" ਨੂੰ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ unlock.error.title="%s" ਨੂੰ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ
## Hub ## Hub
hub.noKeychain.openBtn=ਪਸੰਦਾਂ ਨੂੰ ਖੋਲ੍ਹੋ hub.noKeychain.openBtn=ਪਸੰਦਾਂ ਨੂੰ ਖੋਲ੍ਹੋ
### Check Host Authenticity
hub.checkHostTrust.trustBtn=ਭਰੋਸਾ ਕਰੋ
### Waiting ### Waiting
hub.auth.message=ਪਰਮਾਣਕਿਤਾ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… hub.auth.message=ਪਰਮਾਣਕਿਤਾ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…
hub.auth.description=ਤੁਹਾਨੂੰ ਆਪਣੇ-ਆਪ ਲਾਗਇਨ ਸਫ਼ੇ ਲਈ ਰੀ-ਡਿਰੈਕਟ ਕੀਤਾ ਜਾਵੇਗਾ। hub.auth.description=ਤੁਹਾਨੂੰ ਆਪਣੇ-ਆਪ ਲਾਗਇਨ ਸਫ਼ੇ ਲਈ ਰੀ-ਡਿਰੈਕਟ ਕੀਤਾ ਜਾਵੇਗਾ।
@@ -157,6 +159,7 @@ hub.registerFailed.message=ਡਿਵਾਈਸ ਰਜਿਸਟਰ ਕਰਨਾ
### Archived ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=ਪਹੁੰਚ ਤੋਂ ਇਨਾਕਰ hub.unauthorized.message=ਪਹੁੰਚ ਤੋਂ ਇਨਾਕਰ
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=ਕਾਰਵਾਈ ਦੀ ਲੋੜ ਹੈ hub.requireAccountInit.message=ਕਾਰਵਾਈ ਦੀ ਲੋੜ ਹੈ
hub.requireAccountInit.description.1=ਹੱਬ ਵਰਤੋਂਕਾਰ ਪਰੋਫਾਇਲ hub.requireAccountInit.description.1=ਹੱਬ ਵਰਤੋਂਕਾਰ ਪਰੋਫਾਇਲ
@@ -583,4 +586,4 @@ eventView.entry.inUse.showEncrypted=ਇੰਕ੍ਰਿਪਟ ਕੀਤੀ ਫ਼ਾ
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -161,6 +161,8 @@ unlock.error.title=Błąd odblokowywania "%s"
hub.noKeychain.message=Brak dostępu do klucza urządzenia hub.noKeychain.message=Brak dostępu do klucza urządzenia
hub.noKeychain.description=Aby odblokować sejfy na Hubie, wymagany jest klucz urządzenia zabezpieczony za pomocą pęku kluczy. Aby kontynuować, włącz "%s" i wybierz Pęk kluczy w ustawieniach. hub.noKeychain.description=Aby odblokować sejfy na Hubie, wymagany jest klucz urządzenia zabezpieczony za pomocą pęku kluczy. Aby kontynuować, włącz "%s" i wybierz Pęk kluczy w ustawieniach.
hub.noKeychain.openBtn=Otwórz ustawienia hub.noKeychain.openBtn=Otwórz ustawienia
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Zaufany
### Waiting ### Waiting
hub.auth.message=Oczekiwanie na autoryzację… hub.auth.message=Oczekiwanie na autoryzację…
hub.auth.description=Przekierowanie na stronę logowania nastąpi automatycznie. 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 ### Unauthorized
hub.unauthorized.message=Brak dostępu 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Wymagane działanie hub.requireAccountInit.message=Wymagane działanie
hub.requireAccountInit.description.0=Aby kontynuować, wykonaj wymagane kroki w Twoim 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 # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+18 -1
View File
@@ -109,6 +109,13 @@ addvaultwizard.existing.restore=Restaurar…
addvaultwizard.existing.chooseBtn=Escolher… addvaultwizard.existing.chooseBtn=Escolher…
addvaultwizard.existing.filePickerTitle=Selecionar o ficheiro do cofre addvaultwizard.existing.filePickerTitle=Selecionar o ficheiro do cofre
addvaultwizard.existing.filePickerMimeDesc=Cofre Cryptomator addvaultwizard.existing.filePickerMimeDesc=Cofre Cryptomator
addvaultwizard.existing.notAVault.title=Não é um cofre
addvaultwizard.existing.notAVault.message=A pasta selecionada não é um cofre do Cryptomator
addvaultwizard.existing.notAVault.description.missingDataDir=O subdiretório "d" obrigatório está em falta dentro de "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=A entrada "d" dentro de "%s" não é um directório.
addvaultwizard.existing.notAVault.description.missingVaultConfig=O ficheiro "vault.cryptomator" necessário está em falta dentro de "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=O ficheiro "vault.cryptomator" dentro de "%s" não pode ser lido devido a direitos de acesso insuficientes.
addvaultwizard.existing.notAVault.description.unsupportedStructure=A estrutura de diretórios "%s" não é suportada.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Adicionado cofre "%s".\nPrecisa de desbloquear este cofre para aceder ou adicionar conteúdo. Como alternativa, pode desbloquear a qualquer momento mais tarde. addvaultwizard.success.nextStepsInstructions=Adicionado cofre "%s".\nPrecisa de desbloquear este cofre para aceder ou adicionar conteúdo. Como alternativa, pode desbloquear a qualquer momento mais tarde.
addvaultwizard.success.unlockNow=Desbloquear agora addvaultwizard.success.unlockNow=Desbloquear agora
@@ -161,6 +168,12 @@ unlock.error.title=Desbloqueio "%s" falhou
hub.noKeychain.message=Não foi possível aceder à chave do dispositivo hub.noKeychain.message=Não foi possível aceder à chave do dispositivo
hub.noKeychain.description=Para desbloquear os cofres do Hub, é necessária uma chave do dispositivo, que é protegida usando um porta-chaves. Para continuar, ative “%s” e selecione um porta-chaves nas preferências. hub.noKeychain.description=Para desbloquear os cofres do Hub, é necessária uma chave do dispositivo, que é protegida usando um porta-chaves. Para continuar, ative “%s” e selecione um porta-chaves nas preferências.
hub.noKeychain.openBtn=Abrir 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 ### Waiting
hub.auth.message=A aguardar autenticação… hub.auth.message=A aguardar autenticação…
hub.auth.description=Vai ser redirecionado automaticamente para a página de início de sessão. hub.auth.description=Vai ser redirecionado automaticamente para a página de início de sessão.
@@ -192,6 +205,9 @@ hub.archived.description=Este cofre foi arquivado e não está mais acessível.
### Unauthorized ### Unauthorized
hub.unauthorized.message=Acesso negado 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Ação requerida hub.requireAccountInit.message=Ação requerida
hub.requireAccountInit.description.0=Para continuar, conclua as etapas necessárias no seu hub.requireAccountInit.description.0=Para continuar, conclua as etapas necessárias no seu
@@ -305,6 +321,7 @@ preferences.general.debugDirectory=Mostrar ficheiros de registo
preferences.general.autoStart=Iniciar o Cryptomator no início do sistema preferences.general.autoStart=Iniciar o Cryptomator no início do sistema
preferences.general.keychainBackend=Guardar palavras-passe com preferences.general.keychainBackend=Guardar palavras-passe com
preferences.general.quickAccessService=Adicionar cofres desbloqueados à área de acesso rápido preferences.general.quickAccessService=Adicionar cofres desbloqueados à área de acesso rápido
preferences.general.resetTrustedHosts=Redefinir hosts fidedignos
## Interface ## Interface
preferences.interface=Interface preferences.interface=Interface
preferences.interface.theme=Aspecto e Ambiente preferences.interface.theme=Aspecto e Ambiente
@@ -716,4 +733,4 @@ eventView.entry.inUse.ignoreLock=Ignorar estado de utilização
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=O ficheiro está em utilização noutro dispositivo 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.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
@@ -109,6 +109,13 @@ addvaultwizard.existing.restore=Restaurar…
addvaultwizard.existing.chooseBtn=Escolher… addvaultwizard.existing.chooseBtn=Escolher…
addvaultwizard.existing.filePickerTitle=Selecionar arquivo do cofre addvaultwizard.existing.filePickerTitle=Selecionar arquivo do cofre
addvaultwizard.existing.filePickerMimeDesc=Cofre Cryptomator addvaultwizard.existing.filePickerMimeDesc=Cofre Cryptomator
addvaultwizard.existing.notAVault.title=Não é um cofre
addvaultwizard.existing.notAVault.message=A pasta selecionada não é um cofre do Cryptomator
addvaultwizard.existing.notAVault.description.missingDataDir=O subdiretório "d" obrigatório está ausente em "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=A entrada "d" em "%s" não é um diretório.
addvaultwizard.existing.notAVault.description.missingVaultConfig=O arquivo "vault.cryptomator" obrigatório está ausente em "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=O arquivo "vault.cryptomator" em "%s" não pode ser lido devido à limitação de direitos de acesso.
addvaultwizard.existing.notAVault.description.unsupportedStructure=A estrutura de diretório de "%s" não é suportada.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Cofre "%s" adicionado.\nVocê precisa desbloqueá-lo para acessar ou adicionar conteúdo. O desbloqueio dele pode ser feito a qualquer momento. addvaultwizard.success.nextStepsInstructions=Cofre "%s" adicionado.\nVocê precisa desbloqueá-lo para acessar ou adicionar conteúdo. O desbloqueio dele pode ser feito a qualquer momento.
addvaultwizard.success.unlockNow=Desbloquear agora addvaultwizard.success.unlockNow=Desbloquear agora
@@ -161,6 +168,12 @@ unlock.error.title=Falha ao desbloquear "%s"
hub.noKeychain.message=Não foi possível acessar a chave do dispositivo 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.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 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 ### Waiting
hub.auth.message=Aguardando autenticação… hub.auth.message=Aguardando autenticação…
hub.auth.description=Você será redirecionado automaticamente para a página de login. hub.auth.description=Você será redirecionado automaticamente para a página de login.
@@ -188,10 +201,13 @@ hub.registerFailed.description.generic=Ocorreu um erro no processo de registro.
hub.registerFailed.description.deviceAlreadyExists=Este dispositivo já está registrado para um usuário diferente. Tente alterar a conta de usuário ou use outro dispositivo. hub.registerFailed.description.deviceAlreadyExists=Este dispositivo já está registrado para um usuário diferente. Tente alterar a conta de usuário ou use outro dispositivo.
### Archived ### Archived
hub.archived.message=Cofre arquivado hub.archived.message=Cofre arquivado
hub.archived.description=Este cofre foi arquivo e está inacessível. Contate o proprietário dele. hub.archived.description=Este cofre foi arquivado e está inacessível. Contate o proprietário dele.
### Unauthorized ### Unauthorized
hub.unauthorized.message=Acesso negado 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Ação necessária hub.requireAccountInit.message=Ação necessária
hub.requireAccountInit.description.0=Para prosseguir, complete as etapas obrigatórias no seu hub.requireAccountInit.description.0=Para prosseguir, complete as etapas obrigatórias no seu
@@ -305,6 +321,7 @@ preferences.general.debugDirectory=Mostrar arquivos de registro
preferences.general.autoStart=Iniciar o Cryptomator com o sistema preferences.general.autoStart=Iniciar o Cryptomator com o sistema
preferences.general.keychainBackend=Armazenar senhas com preferences.general.keychainBackend=Armazenar senhas com
preferences.general.quickAccessService=Adicione cofres desbloqueados à área de acesso rápido preferences.general.quickAccessService=Adicione cofres desbloqueados à área de acesso rápido
preferences.general.resetTrustedHosts=Redefinir hosts confiáveis
## Interface ## Interface
preferences.interface=Interface preferences.interface=Interface
preferences.interface.theme=Aparência preferences.interface.theme=Aparência
@@ -716,4 +733,4 @@ eventView.entry.inUse.ignoreLock=Ignorar status de uso
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=O arquivo está sendo usado em outro dispositivo 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.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
@@ -142,10 +142,10 @@ unlock.success.revealBtn=Dezvăluie partiția
unlock.error.customPath.message=Nu se poate monta seiful în locația alesă unlock.error.customPath.message=Nu se poate monta seiful în locația alesă
unlock.error.customPath.description.notSupported=Dacă doriți să continuați să utilizați locația aleasă, vă rugăm să mergeți la preferințe și să selectați o unitate de stocare suportată. În caz contrar, mergeți la opțiunile seifului și alegeți o locație de montare suportată. unlock.error.customPath.description.notSupported=Dacă doriți să continuați să utilizați locația aleasă, vă rugăm să mergeți la preferințe și să selectați o unitate de stocare suportată. În caz contrar, mergeți la opțiunile seifului și alegeți o locație de montare suportată.
unlock.error.customPath.description.notExists=Locația de montare aleasă nu există. Creați-o în sistemul de fișiere local sau schimbați-o din opțiunile seifului. unlock.error.customPath.description.notExists=Locația de montare aleasă nu există. Creați-o în sistemul de fișiere local sau schimbați-o din opțiunile seifului.
unlock.error.customPath.description.inUse=Litera de unitate sau locația de montare personalizată ''%s'' este deja folosită. unlock.error.customPath.description.inUse=Litera de unitate sau locația de montare personalizată '%s' este deja folosită.
unlock.error.customPath.description.hideawayNotDir=Fișierul ascuns, temporar "%3$s" folosit pentru deblocare nu a putut fi șters. Vă rugăm să verificați fișierul și să îl ștergeți manual. unlock.error.customPath.description.hideawayNotDir=Fișierul ascuns, temporar "%3$s" folosit pentru deblocare nu a putut fi șters. Vă rugăm să verificați fișierul și să îl ștergeți manual.
unlock.error.customPath.description.couldNotBeCleaned=Seiful dvs. nu a putut fi montat în locația ''%s''. Vă rugăm încercați din nou sau alegeți o altă locație. unlock.error.customPath.description.couldNotBeCleaned=Seiful dvs. nu a putut fi montat în locația '%s'. Vă rugăm încercați din nou sau alegeți o altă locație.
unlock.error.customPath.description.notEmptyDir=Locația personalizată ''%s'' nu este un dosar gol. Vă rugăm alegeți un dosar gol și încercați din nou. unlock.error.customPath.description.notEmptyDir=Locația personalizată '%s' nu este un dosar gol. Vă rugăm alegeți un dosar gol și încercați din nou.
unlock.error.customPath.description.generic=Ați selectat o locație de montare personalizată pentru acest seif, dar utilizarea acesteia a eșuat cu mesajul: %2$s unlock.error.customPath.description.generic=Ați selectat o locație de montare personalizată pentru acest seif, dar utilizarea acesteia a eșuat cu mesajul: %2$s
unlock.error.restartRequired.message=Seiful nu a fost putut deschis unlock.error.restartRequired.message=Seiful nu a fost putut deschis
unlock.error.restartRequired.description=Schimbați tipul de volum din opțiunile de seif sau reporniți Cryptomator. unlock.error.restartRequired.description=Schimbați tipul de volum din opțiunile de seif sau reporniți Cryptomator.
@@ -154,6 +154,8 @@ unlock.error.title=Deblocarea "%s" a eșuat
hub.noKeychain.message=Cheia dispozitivului nu a putut fi accesată hub.noKeychain.message=Cheia dispozitivului nu a putut fi accesată
hub.noKeychain.description=Pentru a debloca seifele de tip Hub, este necesară o cheie a dispozitivului, care este securizată prin intermediul unui keychain. Pentru a continua, activați „%s” și selectați un keychain în preferințe. hub.noKeychain.description=Pentru a debloca seifele de tip Hub, este necesară o cheie a dispozitivului, care este securizată prin intermediul unui keychain. Pentru a continua, activați „%s” și selectați un keychain în preferințe.
hub.noKeychain.openBtn=Deschideţi preferinţele hub.noKeychain.openBtn=Deschideţi preferinţele
### Check Host Authenticity
hub.checkHostTrust.trustBtn=De încredere
### Waiting ### Waiting
hub.auth.message=Se așteaptă autentificarea… hub.auth.message=Se așteaptă autentificarea…
hub.auth.description=Ar trebui să fiți redirecționat automat către pagina de autentificare. 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 ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=Acces respins hub.unauthorized.message=Acces respins
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Acțiune necesară hub.requireAccountInit.message=Acțiune necesară
hub.requireAccountInit.description.0=Pentru a continua, vă rugăm să finalizaţi paşii necesari în 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 # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+18 -1
View File
@@ -109,6 +109,13 @@ addvaultwizard.existing.restore=Восстановить…
addvaultwizard.existing.chooseBtn=Выбрать… addvaultwizard.existing.chooseBtn=Выбрать…
addvaultwizard.existing.filePickerTitle=Выберите файл хранилища addvaultwizard.existing.filePickerTitle=Выберите файл хранилища
addvaultwizard.existing.filePickerMimeDesc=Хранилище Cryptomator addvaultwizard.existing.filePickerMimeDesc=Хранилище Cryptomator
addvaultwizard.existing.notAVault.title=Не хранилище
addvaultwizard.existing.notAVault.message=Выбранная папка - не хранилище Cryptomator
addvaultwizard.existing.notAVault.description.missingDataDir=Необходимая подпапка "d" отсутствует внутри "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=Элемент "d" внутри "%s" - не папка.
addvaultwizard.existing.notAVault.description.missingVaultConfig=Необходимый файл "vault.cryptomator" отсутствует внутри "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=Невозможно прочитать файл "vault.cryptomator" внутри "%s" - недостаточно прав доступа.
addvaultwizard.existing.notAVault.description.unsupportedStructure=Структура папок "%s" не поддерживается.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Добавлено хранилище "%s".\nДля добавления данных или доступа к содержимому нужно разблокировать хранилище. Его можно разблокировать и позже. addvaultwizard.success.nextStepsInstructions=Добавлено хранилище "%s".\nДля добавления данных или доступа к содержимому нужно разблокировать хранилище. Его можно разблокировать и позже.
addvaultwizard.success.unlockNow=Разблокировать addvaultwizard.success.unlockNow=Разблокировать
@@ -161,6 +168,12 @@ unlock.error.title=Не удалось разблокировать "%s"
hub.noKeychain.message=Нет доступа к ключу устройства hub.noKeychain.message=Нет доступа к ключу устройства
hub.noKeychain.description=Для разблокировки хаб-хранилища необходим ключ устройства, который защищён с помощью связки ключей. Чтобы продолжить, включите "%s" и выберите связку ключей в настройках. hub.noKeychain.description=Для разблокировки хаб-хранилища необходим ключ устройства, который защищён с помощью связки ключей. Чтобы продолжить, включите "%s" и выберите связку ключей в настройках.
hub.noKeychain.openBtn=Открыть настройки 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 ### Waiting
hub.auth.message=Ожидание аутентификации… hub.auth.message=Ожидание аутентификации…
hub.auth.description=Вы должны быть автоматически перенаправлены на страницу входа. hub.auth.description=Вы должны быть автоматически перенаправлены на страницу входа.
@@ -192,6 +205,9 @@ hub.archived.description=Это хранилище было заархивиро
### Unauthorized ### Unauthorized
hub.unauthorized.message=Нет доступа hub.unauthorized.message=Нет доступа
hub.unauthorized.description=Вы не авторизованы для открытия этого хранилища. Свяжитесь с владельцем хранилища, чтобы запросить доступ. hub.unauthorized.description=Вы не авторизованы для открытия этого хранилища. Свяжитесь с владельцем хранилища, чтобы запросить доступ.
### Untrusted Host
hub.untrustedHost.message=Хост не доверенный
hub.untrustedHost.description=Подключение к хабу заблокировано из соображений безопасности. Если вы считаете, что хост безопасен, обратитесь к администратору хаба или повторите попытку.
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=Требуется действие hub.requireAccountInit.message=Требуется действие
hub.requireAccountInit.description.0=Для продолжения выполните необходимые шаги в hub.requireAccountInit.description.0=Для продолжения выполните необходимые шаги в
@@ -305,6 +321,7 @@ preferences.general.debugDirectory=Показать файлы журнала
preferences.general.autoStart=Запускать Cryptomator при старте системы preferences.general.autoStart=Запускать Cryptomator при старте системы
preferences.general.keychainBackend=Хранение паролей preferences.general.keychainBackend=Хранение паролей
preferences.general.quickAccessService=Добавлять открытые хранилища в область быстрого доступа preferences.general.quickAccessService=Добавлять открытые хранилища в область быстрого доступа
preferences.general.resetTrustedHosts=Сбросить доверенные хосты
## Interface ## Interface
preferences.interface=Интерфейс preferences.interface=Интерфейс
preferences.interface.theme=Тема preferences.interface.theme=Тема
@@ -716,4 +733,4 @@ eventView.entry.inUse.ignoreLock=Игнорировать статус испо
## FileIsInUse Notification ## FileIsInUse Notification
notification.inUse.message=Файл используется на другом устройстве notification.inUse.message=Файл используется на другом устройстве
notification.inUse.description=Файл открыт %s на %s. Попросите закрыть файл и завершить синхронизацию. Вы можете проигнорировать статус и открыть его, но есть риск конфликтов или перезаписи новых изменений. notification.inUse.description=Файл открыт %s на %s. Попросите закрыть файл и завершить синхронизацию. Вы можете проигнорировать статус и открыть его, но есть риск конфликтов или перезаписи новых изменений.
notification.inUse.action=Игнорировать статус использования notification.inUse.action=Игнорировать статус использования
@@ -14,6 +14,7 @@ generic.button.next=ඊළඟ
generic.button.print=මුද්‍රණය කරන්න generic.button.print=මුද්‍රණය කරන්න
## Vault state ## Vault state
vault.state.error=දෝෂය
# Error # Error
error.message=දෝෂය: %s error.message=දෝෂය: %s
@@ -48,15 +49,18 @@ unlock.unlockBtn=අගුළුහරින්න
## Success ## Success
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
hub.register.registerBtn=ලියාපදිංචි වන්න
### Register Device Legacy ### Register Device Legacy
### Registration Success ### Registration Success
hub.registerSuccess.unlockBtn=අගුළුහරින්න hub.registerSuccess.unlockBtn=අගුළුහරින්න
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -171,4 +175,4 @@ hub.registerSuccess.unlockBtn=අගුළුහරින්න
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
+17 -1
View File
@@ -109,6 +109,13 @@ addvaultwizard.existing.restore=Obnoviť…
addvaultwizard.existing.chooseBtn=Vybrať… addvaultwizard.existing.chooseBtn=Vybrať…
addvaultwizard.existing.filePickerTitle=Zvoľte súbor trezora addvaultwizard.existing.filePickerTitle=Zvoľte súbor trezora
addvaultwizard.existing.filePickerMimeDesc=Trezor Cryptomátora addvaultwizard.existing.filePickerMimeDesc=Trezor Cryptomátora
addvaultwizard.existing.notAVault.title=Bez peňaženky
addvaultwizard.existing.notAVault.message=Zvolený adresár nie je peňaženka Cryptomator-a
addvaultwizard.existing.notAVault.description.missingDataDir=Požadovaný "d" podadresár chýba v "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=Položka „d“ vo vnútri „%s“ nie je adresár.
addvaultwizard.existing.notAVault.description.missingVaultConfig=V priečinku „%s“ chýba požadovaný súbor „vault.cryptomator“.
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=Súbor „vault.cryptomator“ vo vnútri „%s“ nie je možné prečítať z dôvodu nedostatočných prístupových práv.
addvaultwizard.existing.notAVault.description.unsupportedStructure=Štruktúra adresára "%s" nie je podporovaná.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Pridaný trezor "%s".\nAk chcete získať prístup alebo pridať obsah, musíte tento trezor odomknúť. Prípadne ju môžete odomknúť kedykoľvek neskôr. addvaultwizard.success.nextStepsInstructions=Pridaný trezor "%s".\nAk chcete získať prístup alebo pridať obsah, musíte tento trezor odomknúť. Prípadne ju môžete odomknúť kedykoľvek neskôr.
addvaultwizard.success.unlockNow=Odomknúť teraz addvaultwizard.success.unlockNow=Odomknúť teraz
@@ -159,6 +166,12 @@ unlock.error.title=Odomknutie "%s" zlyhalo
hub.noKeychain.message=Nemôžem pristúpiť ku kľúču zariadenia hub.noKeychain.message=Nemôžem pristúpiť ku kľúču zariadenia
hub.noKeychain.description=V poradí odomknutia Hub trezorov, je požadovaný kľúč zariadenia ktorý je zabezpečený použitím keychain. K vykonaniu povoľte "%s" a zvoľte keychain v nastaveniach. hub.noKeychain.description=V poradí odomknutia Hub trezorov, je požadovaný kľúč zariadenia ktorý je zabezpečený použitím keychain. K vykonaniu povoľte "%s" a zvoľte keychain v nastaveniach.
hub.noKeychain.openBtn=Otvoriť predvoľby 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 ### Waiting
hub.auth.message=Čakanie na autentifikáciu… hub.auth.message=Čakanie na autentifikáciu…
hub.auth.description=Môžete byť automaticky presmerovaný na prihlasovaciu stránku. hub.auth.description=Môžete byť automaticky presmerovaný na prihlasovaciu stránku.
@@ -184,6 +197,8 @@ hub.archived.description=Tento trezor bol archivovaný a nie je viac dostupný.
### Unauthorized ### Unauthorized
hub.unauthorized.message=Prístup zamietnutý 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Vyžadovaná akcia hub.requireAccountInit.message=Vyžadovaná akcia
hub.requireAccountInit.description.0=Pre pokračovanie vyplňte potrebné kroky vo vašom hub.requireAccountInit.description.0=Pre pokračovanie vyplňte potrebné kroky vo vašom
@@ -297,6 +312,7 @@ preferences.general.debugDirectory=Ukázať súbory logov
preferences.general.autoStart=Spustiť Cryptomator pri štarte systému preferences.general.autoStart=Spustiť Cryptomator pri štarte systému
preferences.general.keychainBackend=Uložiť heslá v preferences.general.keychainBackend=Uložiť heslá v
preferences.general.quickAccessService=Pridať odomknuté trezory na plochu rýchleho prístupu preferences.general.quickAccessService=Pridať odomknuté trezory na plochu rýchleho prístupu
preferences.general.resetTrustedHosts=Zrušiť dôveryhodné hosty
## Interface ## Interface
preferences.interface=Rozhranie preferences.interface=Rozhranie
preferences.interface.theme=Vzhľad a pocit preferences.interface.theme=Vzhľad a pocit
@@ -665,4 +681,4 @@ eventView.entry.inUse.copyUserAndDevice=Kopírovať zamykaného užívateľa a m
# Notifications # Notifications
## FileIsInUse Notification ## 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
@@ -73,6 +73,7 @@ unlock.unlockBtn=Odkleni
## Success ## Success
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -83,6 +84,7 @@ hub.registerSuccess.unlockBtn=Odkleni
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -220,4 +222,4 @@ contactHubVaultOwner.title=Hub trezor
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -103,6 +103,7 @@ unlock.success.rememberChoice=Zapamti izbor, ne prikazuj ovo ponovo
unlock.success.revealBtn=Otvori disk unlock.success.revealBtn=Otvori disk
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -112,6 +113,7 @@ hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -359,4 +361,4 @@ quit.lockAndQuitBtn=Zaključaj i Izađi
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -95,6 +95,7 @@ unlock.chooseMasterkey.filePickerTitle=Izaberi "Masterkey" datoteku
unlock.success.revealBtn=Otvori disk unlock.success.revealBtn=Otvori disk
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -104,6 +105,7 @@ hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -278,4 +280,4 @@ vaultOptions.masterkey.changePasswordBtn=Promena lozinke
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -161,6 +161,8 @@ unlock.error.title=Upplåsning av "%s" misslyckades
hub.noKeychain.message=Kan inte komma åt enhetsnyckeln 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.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 hub.noKeychain.openBtn=Gå till inställningarna
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Ange som betrott
### Waiting ### Waiting
hub.auth.message=Väntar på autentisering… hub.auth.message=Väntar på autentisering…
hub.auth.description=Du bör automatiskt omdirigeras till inloggningssidan. 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 ### Unauthorized
hub.unauthorized.message=Åtkomst nekad 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Åtgärd krävs 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 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 # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -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.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.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 hub.noKeychain.openBtn=Fungua Mapendeleo
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Amini
### Waiting ### Waiting
hub.auth.message=Inasubiri uthibitishaji… hub.auth.message=Inasubiri uthibitishaji…
hub.auth.description=Unapaswa kuelekezwa upya kiotomatiki kwa ukurasa wa kuingia. hub.auth.description=Unapaswa kuelekezwa upya kiotomatiki kwa ukurasa wa kuingia.
@@ -148,6 +150,7 @@ hub.registerSuccess.unlockBtn=Fungua
### Archived ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=Ufikiaji umekataliwa hub.unauthorized.message=Ufikiaji umekataliwa
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
hub.invalidLicense.message=Leseni ya Hub ni batili hub.invalidLicense.message=Leseni ya Hub ni batili
@@ -506,4 +509,4 @@ dokanySupportEnd.preferencesBtn=Fungua Mapendeleo
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -119,6 +119,7 @@ unlock.success.rememberChoice=என் விருப்பத்தை நி
unlock.success.revealBtn=இயக்ககத்தை வெளிப்படுத்து unlock.success.revealBtn=இயக்ககத்தை வெளிப்படுத்து
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -128,6 +129,7 @@ hub.registerSuccess.unlockBtn=பூட்டுநீக்கு
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -343,4 +345,4 @@ quit.forced.forceAndQuitBtn=கட்டாயப்படுத்தி வெ
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -34,6 +34,7 @@ generic.button.remove=తొలగించు
## Success ## Success
## Failure ## Failure
## Hub ## Hub
### Check Host Authenticity
### Waiting ### Waiting
### Receive Key ### Receive Key
### Register Device ### Register Device
@@ -42,6 +43,7 @@ generic.button.remove=తొలగించు
### Registration Failed ### Registration Failed
### Archived ### Archived
### Unauthorized ### Unauthorized
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
### License Exceeded ### License Exceeded
@@ -159,4 +161,4 @@ preferences.interface.theme.light=కాంతి
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -154,6 +154,8 @@ unlock.error.title=ปลดล็อก "%s" ไม่สำเร็จ
hub.noKeychain.message=ไม่สามารถเข้าถึง device key ได้ hub.noKeychain.message=ไม่สามารถเข้าถึง device key ได้
hub.noKeychain.description=เพื่อปลดล็อก Hub vaults จำเป็นต้องใช้ device key ซึ่งได้รับการป้องกันด้วย keychain หากต้องการดำเนินการต่อ โปรดเปิดใช้งาน “%s” และเลือก keychain ในการตั้งค่า hub.noKeychain.description=เพื่อปลดล็อก Hub vaults จำเป็นต้องใช้ device key ซึ่งได้รับการป้องกันด้วย keychain หากต้องการดำเนินการต่อ โปรดเปิดใช้งาน “%s” และเลือก keychain ในการตั้งค่า
hub.noKeychain.openBtn=การตั้งค่า hub.noKeychain.openBtn=การตั้งค่า
### Check Host Authenticity
hub.checkHostTrust.trustBtn=เชื่อถือ
### Waiting ### Waiting
hub.auth.message=กำลังรอการตรวจสอบ… hub.auth.message=กำลังรอการตรวจสอบ…
hub.auth.description=คุณจะถูกเปลี่ยนเส้นทางไปยังหน้าลงชื่อเข้าใช้อัตโนมัติ hub.auth.description=คุณจะถูกเปลี่ยนเส้นทางไปยังหน้าลงชื่อเข้าใช้อัตโนมัติ
@@ -182,6 +184,7 @@ hub.registerFailed.description.deviceAlreadyExists=อุปกรณ์นี
### Archived ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=การเข้าถึงถูกปฏิเสธ hub.unauthorized.message=การเข้าถึงถูกปฏิเสธ
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=โปรดดำเนินการ hub.requireAccountInit.message=โปรดดำเนินการ
hub.requireAccountInit.description.0=เพื่อดำเนินการต่อ โปรดทำตามขั้นตอนที่จำเป็นใน hub.requireAccountInit.description.0=เพื่อดำเนินการต่อ โปรดทำตามขั้นตอนที่จำเป็นใน
@@ -488,4 +491,4 @@ shareVault.hubAd.encryption=• เข้ารหัสจากต้นทา
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification
@@ -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.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.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ç hub.noKeychain.openBtn=Tercihleri Aç
### Check Host Authenticity
hub.checkHostTrust.trustBtn=Güven
### Waiting ### Waiting
hub.auth.message=Kimlik doğrulaması için bekleniyor… hub.auth.message=Kimlik doğrulaması için bekleniyor…
hub.auth.description=Otomatik olarak giriş sayfasına yönlendirilmelisiniz. hub.auth.description=Otomatik olarak giriş sayfasına yönlendirilmelisiniz.
@@ -188,6 +190,7 @@ hub.archived.message=Kasa arşivlendi
### Unauthorized ### Unauthorized
hub.unauthorized.message=Erişim engellendi 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. 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 ### Requires Account Initialization
hub.requireAccountInit.message=Eylem gerekli hub.requireAccountInit.message=Eylem gerekli
hub.requireAccountInit.description.0=Devam etmek için lütfen gerekli adımları tamamlayın 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 ## FileIsInUse Notification
notification.inUse.message=Dosya başka bir cihazda kullanılıyor 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.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
@@ -152,6 +152,7 @@ unlock.error.title="%s" نى قۇلۇپسىزلاش مەغلۇپ بولدى
hub.noKeychain.message=ئۈسكۈنە ئاچقۇچىغا كىرىش مۇمكىن بولمىدى hub.noKeychain.message=ئۈسكۈنە ئاچقۇچىغا كىرىش مۇمكىن بولمىدى
hub.noKeychain.description=Hub ئامبارلىرىنى قۇلۇپسىزلاش ئۈچۈن، ئاچقۇچ ساقلىغۇچ ئارقىلىق بىخەتەرلەشتۈرۈلگەن ئۈسكۈنە ئاچقۇچى كېرەك. داۋاملاشتۇرۇش ئۈچۈن، تەڭشەكلەردە "%s" نى قوزغىتىپ ئاچقۇچ ساقلىغۇچنى تاللاڭ. hub.noKeychain.description=Hub ئامبارلىرىنى قۇلۇپسىزلاش ئۈچۈن، ئاچقۇچ ساقلىغۇچ ئارقىلىق بىخەتەرلەشتۈرۈلگەن ئۈسكۈنە ئاچقۇچى كېرەك. داۋاملاشتۇرۇش ئۈچۈن، تەڭشەكلەردە "%s" نى قوزغىتىپ ئاچقۇچ ساقلىغۇچنى تاللاڭ.
hub.noKeychain.openBtn=تەڭشەكلەرنى ئېچىش hub.noKeychain.openBtn=تەڭشەكلەرنى ئېچىش
### Check Host Authenticity
### Waiting ### Waiting
hub.auth.message=دەلىللەشنى كۈتۈۋاتىدۇ… hub.auth.message=دەلىللەشنى كۈتۈۋاتىدۇ…
hub.auth.description=سىز ئاپتوماتىك ھالدا كىرىش بېتىگە يۆتكىلىشىڭىز كېرەك. hub.auth.description=سىز ئاپتوماتىك ھالدا كىرىش بېتىگە يۆتكىلىشىڭىز كېرەك.
@@ -180,6 +181,7 @@ hub.registerFailed.description.deviceAlreadyExists=بۇ ئۈسكۈنە ئالل
### Archived ### Archived
### Unauthorized ### Unauthorized
hub.unauthorized.message=كىرىش رەت قىلىندى hub.unauthorized.message=كىرىش رەت قىلىندى
### Untrusted Host
### Requires Account Initialization ### Requires Account Initialization
hub.requireAccountInit.message=مەشغۇلات تەلەپ قىلىنىدۇ hub.requireAccountInit.message=مەشغۇلات تەلەپ قىلىنىدۇ
hub.requireAccountInit.description.0=داۋاملاشتۇرۇش ئۈچۈن، سىزنىڭ hub.requireAccountInit.description.0=داۋاملاشتۇرۇش ئۈچۈن، سىزنىڭ
@@ -594,4 +596,4 @@ shareVault.hub.openHub=Cryptomator Hub ئۇچۇرىنى ئېچىڭ
# Notifications # Notifications
## FileIsInUse Notification ## FileIsInUse Notification

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