mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-09-22 16:04:28 +00:00
Compare commits
171
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba79cd0f8c | ||
|
|
be63ea1104 | ||
|
|
a3ad2a5677 | ||
|
|
26e5ceea01 | ||
|
|
83f1c4ea41 | ||
|
|
8d78e1432a | ||
|
|
d2ec5a5646 | ||
|
|
6bb0328799 | ||
|
|
8a8617b480 | ||
|
|
7484744038 | ||
|
|
0bbc4ecae5 | ||
|
|
9fcb166047 | ||
|
|
1ac017e3ab | ||
|
|
1ba401b8e6 | ||
|
|
07303b58f7 | ||
|
|
32a463768c | ||
|
|
2307950e3b | ||
|
|
8108128c22 | ||
|
|
58fe6da7a8 | ||
|
|
92bf73297a | ||
|
|
0bf8fb39dd | ||
|
|
0dc9a3a834 | ||
|
|
91d6264b9f | ||
|
|
d2599ea525 | ||
|
|
7180af9bc7 | ||
|
|
dc993dc57c | ||
|
|
464c74ab6c | ||
|
|
8c7dd8c74f | ||
|
|
69bcf6fac6 | ||
|
|
7c243dd434 | ||
|
|
357a0b9c31 | ||
|
|
d69d11b82f | ||
|
|
863e9bbcb3 | ||
|
|
1c47012033 | ||
|
|
cd99eaa323 | ||
|
|
dda2afda92 | ||
|
|
5519eefcfa | ||
|
|
a81352800d | ||
|
|
6fec16e498 | ||
|
|
42f31204a3 | ||
|
|
7ab64cfe46 | ||
|
|
1581a10c04 | ||
|
|
249becc25d | ||
|
|
da8e84f39d | ||
|
|
9ad2d223c3 | ||
|
|
3bf1e659ef | ||
|
|
e79257e5ea | ||
|
|
dac517a6fb | ||
|
|
1ab808f1b0 | ||
|
|
08f81b7df4 | ||
|
|
b16f32ca83 | ||
|
|
d6ed88b544 | ||
|
|
ae697d7b73 | ||
|
|
ff3306cc17 | ||
|
|
9ae2f4e0f6 | ||
|
|
4230afcbac | ||
|
|
7fc6ab05a4 | ||
|
|
060f6bfc97 | ||
|
|
919dac6caa | ||
|
|
98bcf63b2c | ||
|
|
0585262952 | ||
|
|
a33dc3980e | ||
|
|
caa5e77386 | ||
|
|
c037920e79 | ||
|
|
3cdd352d39 | ||
|
|
8ae80e2932 | ||
|
|
2ffa1ee236 | ||
|
|
2bf5b57823 | ||
|
|
853ea69180 | ||
|
|
43d0dd99ec | ||
|
|
b40e6db701 | ||
|
|
387eb420eb | ||
|
|
7785bb8820 | ||
|
|
de4fa8c7b0 | ||
|
|
17f519e01c | ||
|
|
6c50023074 | ||
|
|
0009940e1e | ||
|
|
f2a50b59b5 | ||
|
|
ed03606981 | ||
|
|
4a1eaf25c7 | ||
|
|
f5e445a610 | ||
|
|
6a3a256c0b | ||
|
|
1ed77ebcc0 | ||
|
|
db224e9e5c | ||
|
|
c719982ef3 | ||
|
|
f783f5d5ec | ||
|
|
dd4f87b54c | ||
|
|
b3789700e1 | ||
|
|
b39834f4eb | ||
|
|
8064d75102 | ||
|
|
4064b61cd7 | ||
|
|
ef3affece3 | ||
|
|
414465371b | ||
|
|
feed72a729 | ||
|
|
bca20a7a66 | ||
|
|
a38377baaa | ||
|
|
61a45fc738 | ||
|
|
3a65b5551f | ||
|
|
94ed5c18b8 | ||
|
|
a559483d86 | ||
|
|
3acdef1dd0 | ||
|
|
def6f8ab95 | ||
|
|
11ba1f3ddc | ||
|
|
3228f2cf5f | ||
|
|
9c4f7ad79d | ||
|
|
3bd57d162b | ||
|
|
5ea73a5a8d | ||
|
|
38670838c7 | ||
|
|
3e0b84dbce | ||
|
|
2302db6206 | ||
|
|
a94bf99660 | ||
|
|
0c5ce353b1 | ||
|
|
b3ce777a42 | ||
|
|
3085df3397 | ||
|
|
fb740b605f | ||
|
|
6a74d9f3b2 | ||
|
|
1c7dffb63f | ||
|
|
a213f073b1 | ||
|
|
1ab73be1f4 | ||
|
|
8412871090 | ||
|
|
fa63f3ca67 | ||
|
|
dbc0f52481 | ||
|
|
b8cd1caeac | ||
|
|
43c25b6d97 | ||
|
|
e44bc09074 | ||
|
|
7b02f78ef5 | ||
|
|
f7e8a4d1e6 | ||
|
|
664375d692 | ||
|
|
2d968eac8c | ||
|
|
542d2fcfe1 | ||
|
|
144e929896 | ||
|
|
803748f78d | ||
|
|
3410e7243a | ||
|
|
84732337ca | ||
|
|
c527808710 | ||
|
|
99c89dbf39 | ||
|
|
829b64cd3d | ||
|
|
f4007267fb | ||
|
|
c82a0bfaf3 | ||
|
|
251ad65344 | ||
|
|
155ba4607b | ||
|
|
62f6865d3e | ||
|
|
ffb3290248 | ||
|
|
a013ae3d91 | ||
|
|
19a954e677 | ||
|
|
f262980acc | ||
|
|
3b3aa18c92 | ||
|
|
c7b8bc89c2 | ||
|
|
5fc981abd3 | ||
|
|
36ec1a5ebc | ||
|
|
be4aad4168 | ||
|
|
fcb940e29c | ||
|
|
4f3ca2a6c4 | ||
|
|
27cd34bee0 | ||
|
|
c07e51be51 | ||
|
|
0421879b39 | ||
|
|
2d627717a0 | ||
|
|
dc0e88a694 | ||
|
|
a5e3630375 | ||
|
|
17335e8f70 | ||
|
|
42dd2fba48 | ||
|
|
e1cca6427c | ||
|
|
42d3dbaa23 | ||
|
|
185d67c492 | ||
|
|
a8af3c8b40 | ||
|
|
038a7fac62 | ||
|
|
48408fa40d | ||
|
|
18a417667e | ||
|
|
aab07b13e3 | ||
|
|
869e40e351 | ||
|
|
bf91e3f15c |
@@ -11,7 +11,7 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_DIST: 'zulu'
|
JAVA_DIST: 'zulu'
|
||||||
JAVA_VERSION: '21.0.2+13'
|
JAVA_VERSION: '22.0.1+8'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
get-version:
|
get-version:
|
||||||
@@ -29,12 +29,12 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
appimage-suffix: x86_64
|
appimage-suffix: x86_64
|
||||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_linux-x64_bin-jmods.zip'
|
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_linux-x64_bin-jmods.zip'
|
||||||
openjfx-sha: '7baed11ca56d5fee85995fa6612d4299f1e8b7337287228f7f12fd50407c56f8'
|
openjfx-sha: 'fbb22f35951c2e049cc2554dd03c2c56b4f5adc4b2ae9248872f46175ac103d8'
|
||||||
- os: [self-hosted, Linux, ARM64]
|
- os: [self-hosted, Linux, ARM64]
|
||||||
appimage-suffix: aarch64
|
appimage-suffix: aarch64
|
||||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_linux-aarch64_bin-jmods.zip'
|
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_linux-aarch64_bin-jmods.zip'
|
||||||
openjfx-sha: '871e7b9d7af16aef2e55c1b7830d0e0b2503b13dd8641374ba7e55ecb81d2ef9'
|
openjfx-sha: '1982ad168a5e8d7cf4a9458a7d088b4f0552d0ac3f24f23fb88f8bc7e8d69a13'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
@@ -68,7 +68,7 @@ jobs:
|
|||||||
- name: Set version
|
- name: Set version
|
||||||
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
|
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
|
||||||
- name: Run maven
|
- name: Run maven
|
||||||
run: mvn -B clean package -Plinux -DskipTests
|
run: mvn -B clean package -Plinux -DskipTests -Djavafx.platform=linux
|
||||||
- name: Patch target dir
|
- name: Patch target dir
|
||||||
run: |
|
run: |
|
||||||
cp LICENSE.txt target
|
cp LICENSE.txt target
|
||||||
@@ -80,17 +80,12 @@ jobs:
|
|||||||
--verbose
|
--verbose
|
||||||
--output runtime
|
--output runtime
|
||||||
--module-path "${JAVA_HOME}/jmods:openjfx-jmods"
|
--module-path "${JAVA_HOME}/jmods:openjfx-jmods"
|
||||||
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net
|
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net
|
||||||
--strip-native-commands
|
--strip-native-commands
|
||||||
--no-header-files
|
--no-header-files
|
||||||
--no-man-pages
|
--no-man-pages
|
||||||
--strip-debug
|
--strip-debug
|
||||||
--compress zip-0
|
--compress zip-0
|
||||||
- name: Prepare additional launcher
|
|
||||||
run: envsubst '${SEMVER_STR} ${REVISION_NUM}' < dist/linux/launcher-gtk2.properties > launcher-gtk2.properties
|
|
||||||
env:
|
|
||||||
SEMVER_STR: ${{ needs.get-version.outputs.semVerStr }}
|
|
||||||
REVISION_NUM: ${{ needs.get-version.outputs.revNum }}
|
|
||||||
- name: Run jpackage
|
- name: Run jpackage
|
||||||
run: >
|
run: >
|
||||||
${JAVA_HOME}/bin/jpackage
|
${JAVA_HOME}/bin/jpackage
|
||||||
@@ -173,8 +168,8 @@ jobs:
|
|||||||
cryptomator-*.asc
|
cryptomator-*.asc
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
- name: Publish AppImage on GitHub Releases
|
- name: Publish AppImage on GitHub Releases
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
name: AntiVirus Whitelisting
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
url:
|
||||||
|
description: "Url to the file to upload"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
url:
|
||||||
|
description: "Url to the file to upload"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
allowlist:
|
||||||
|
name: Anti Virus Allowlisting
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Download file
|
||||||
|
run: |
|
||||||
|
curl --remote-name ${{ inputs.url }} -L
|
||||||
|
- name: Upload to Kaspersky
|
||||||
|
uses: SamKirkland/FTP-Deploy-Action@v4.3.5
|
||||||
|
with:
|
||||||
|
protocol: ftps
|
||||||
|
server: allowlist.kaspersky-labs.com
|
||||||
|
port: 990
|
||||||
|
username: ${{ secrets.ALLOWLIST_KASPERSKY_USERNAME }}
|
||||||
|
password: ${{ secrets.ALLOWLIST_KASPERSKY_PASSWORD }}
|
||||||
|
- name: Upload to Avast
|
||||||
|
uses: SamKirkland/FTP-Deploy-Action@v4.3.5
|
||||||
|
with:
|
||||||
|
protocol: ftp
|
||||||
|
server: whitelisting.avast.com
|
||||||
|
port: 21
|
||||||
|
username: ${{ secrets.ALLOWLIST_AVAST_USERNAME }}
|
||||||
|
password: ${{ secrets.ALLOWLIST_AVAST_PASSWORD }}
|
||||||
@@ -7,7 +7,7 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_DIST: 'zulu'
|
JAVA_DIST: 'zulu'
|
||||||
JAVA_VERSION: 21
|
JAVA_VERSION: 22
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -33,7 +33,7 @@ jobs:
|
|||||||
- name: Build and Test
|
- name: Build and Test
|
||||||
run: >
|
run: >
|
||||||
xvfb-run
|
xvfb-run
|
||||||
mvn -B verify
|
mvn -B verify -Djavafx.platform=linux
|
||||||
jacoco:report
|
jacoco:report
|
||||||
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
|
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
|
||||||
-Pcoverage
|
-Pcoverage
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||||
- name: Draft a release
|
- name: Draft a release
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
discussion_category_name: releases
|
discussion_category_name: releases
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ on:
|
|||||||
- cron: '0 0 1 * *' # run once a month at the first day of month
|
- cron: '0 0 1 * *' # run once a month at the first day of month
|
||||||
|
|
||||||
env:
|
env:
|
||||||
JDK_VERSION: '21.0.1+12'
|
JDK_VERSION: '22.0.1+8'
|
||||||
JDK_VENDOR: zulu
|
JDK_VENDOR: zulu
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
@@ -17,13 +17,13 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_DIST: 'zulu'
|
JAVA_DIST: 'zulu'
|
||||||
JAVA_VERSION: '21.0.2+13'
|
JAVA_VERSION: '22.0.1+8'
|
||||||
COFFEELIBS_JDK: 21
|
COFFEELIBS_JDK: 22
|
||||||
COFFEELIBS_JDK_VERSION: '21.0.2+13-0ppa1'
|
COFFEELIBS_JDK_VERSION: '22.0.1+8-0ppa1'
|
||||||
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_linux-x64_bin-jmods.zip'
|
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_linux-x64_bin-jmods.zip'
|
||||||
OPENJFX_JMODS_AMD64_HASH: '7baed11ca56d5fee85995fa6612d4299f1e8b7337287228f7f12fd50407c56f8'
|
OPENJFX_JMODS_AMD64_HASH: 'fbb22f35951c2e049cc2554dd03c2c56b4f5adc4b2ae9248872f46175ac103d8'
|
||||||
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_linux-aarch64_bin-jmods.zip'
|
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_linux-aarch64_bin-jmods.zip'
|
||||||
OPENJFX_JMODS_AARCH64_HASH: '871e7b9d7af16aef2e55c1b7830d0e0b2503b13dd8641374ba7e55ecb81d2ef9'
|
OPENJFX_JMODS_AARCH64_HASH: '1982ad168a5e8d7cf4a9458a7d088b4f0552d0ac3f24f23fb88f8bc7e8d69a13'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -44,7 +44,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
sudo add-apt-repository ppa:coffeelibs/openjdk
|
sudo add-apt-repository ppa:coffeelibs/openjdk
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install debhelper devscripts dput coffeelibs-jdk-${{ env.COFFEELIBS_JDK }}=${{ env.COFFEELIBS_JDK_VERSION }} libgtk2.0-0
|
sudo apt-get install debhelper devscripts dput coffeelibs-jdk-${{ env.COFFEELIBS_JDK }}=${{ env.COFFEELIBS_JDK_VERSION }}
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
@@ -53,7 +53,7 @@ jobs:
|
|||||||
check-latest: true
|
check-latest: true
|
||||||
cache: 'maven'
|
cache: 'maven'
|
||||||
- name: Run maven
|
- name: Run maven
|
||||||
run: mvn -B clean package -Plinux -DskipTests
|
run: mvn -B clean package -Plinux -Djavafx.platform=linux -DskipTests
|
||||||
- name: Download OpenJFX jmods
|
- name: Download OpenJFX jmods
|
||||||
id: download-jmods
|
id: download-jmods
|
||||||
run: |
|
run: |
|
||||||
@@ -142,10 +142,9 @@ jobs:
|
|||||||
- name: Publish on PPA
|
- name: Publish on PPA
|
||||||
if: inputs.dput
|
if: inputs.dput
|
||||||
run: dput ppa:sebastian-stenzel/cryptomator-beta cryptomator_*_source.changes
|
run: dput ppa:sebastian-stenzel/cryptomator-beta cryptomator_*_source.changes
|
||||||
|
|
||||||
# If ref is a tag, also upload to GitHub Releases:
|
# If ref is a tag, also upload to GitHub Releases:
|
||||||
- name: Publish Debian package on GitHub Releases
|
- name: Publish Debian package on GitHub Releases
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/') && inputs.dput
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -7,11 +7,12 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-dependencies:
|
check-dependencies:
|
||||||
uses: skymatic/workflows/.github/workflows/run-dependency-check.yml@main
|
uses: skymatic/workflows/.github/workflows/run-dependency-check.yml@v1
|
||||||
with:
|
with:
|
||||||
runner-os: 'ubuntu-latest'
|
runner-os: 'ubuntu-latest'
|
||||||
java-distribution: 'temurin'
|
java-distribution: 'temurin'
|
||||||
java-version: 21
|
java-version: 22
|
||||||
|
check-command: 'mvn -B validate -Pdependency-check -Djavafx.platform=linux'
|
||||||
secrets:
|
secrets:
|
||||||
nvd-api-key: ${{ secrets.NVD_API_KEY }}
|
nvd-api-key: ${{ secrets.NVD_API_KEY }}
|
||||||
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
|
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
name: Create PR for flathub
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description: 'Release tag'
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
get-version:
|
||||||
|
uses: ./.github/workflows/get-version.yml
|
||||||
|
with:
|
||||||
|
version: ${{ inputs.tag }}
|
||||||
|
tarball:
|
||||||
|
name: Determines tarball url and compute checksum
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [get-version]
|
||||||
|
if: github.event_name == 'workflow_dispatch' || needs.get-version.outputs.versionType == 'stable'
|
||||||
|
outputs:
|
||||||
|
url: ${{ steps.url.outputs.url}}
|
||||||
|
sha512: ${{ steps.sha512.outputs.sha512}}
|
||||||
|
steps:
|
||||||
|
- name: Determine tarball url
|
||||||
|
id: url
|
||||||
|
run: |
|
||||||
|
URL="";
|
||||||
|
if [[ -n "${{ inputs.tag }}" ]]; then
|
||||||
|
URL="https://github.com/cryptomator/cryptomator/archive/refs/tags/${{ inputs.tag }}.tar.gz"
|
||||||
|
else
|
||||||
|
URL="https://github.com/cryptomator/cryptomator/archive/refs/tags/${{ github.event.release.tag_name }}.tar.gz"
|
||||||
|
fi
|
||||||
|
echo "url=${URL}" >> "$GITHUB_OUTPUT"
|
||||||
|
- name: Download source tarball and compute checksum
|
||||||
|
id: sha512
|
||||||
|
run: |
|
||||||
|
curl --silent --fail-with-body -L -H "Accept: application/vnd.github+json" ${{ steps.url.outputs.url }} --output cryptomator.tar.gz
|
||||||
|
TARBALL_SHA512=$(sha512sum cryptomator.tar.gz | cut -d ' ' -f1)
|
||||||
|
echo "sha512=${TARBALL_SHA512}" >> "$GITHUB_OUTPUT"
|
||||||
|
flathub:
|
||||||
|
name: Create PR for flathub
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [tarball, get-version]
|
||||||
|
env:
|
||||||
|
FLATHUB_PR_URL: tbd
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: 'flathub/org.cryptomator.Cryptomator'
|
||||||
|
token: ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
|
||||||
|
- name: Checkout release branch
|
||||||
|
run: |
|
||||||
|
git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
|
||||||
|
- name: Update build file
|
||||||
|
run: |
|
||||||
|
sed -i -e 's/VERSION: [0-9]\+\.[0-9]\+\.[0-9]\+.*/VERSION: ${{ needs.get-version.outputs.semVerStr }}/g' org.cryptomator.Cryptomator.yaml
|
||||||
|
sed -i -e 's/sha512: [0-9A-Za-z_\+-]\{128\} #CRYPTOMATOR/sha512: ${{ needs.tarball.outputs.sha512 }} #CRYPTOMATOR/g' org.cryptomator.Cryptomator.yaml
|
||||||
|
sed -i -e 's;url: https://github.com/cryptomator/cryptomator/archive/refs/tags/[^[:blank:]]\+;url: ${{ needs.tarball.outputs.url }};g' org.cryptomator.Cryptomator.yaml
|
||||||
|
- name: Commit and push
|
||||||
|
run: |
|
||||||
|
git config user.name "${{ github.actor }}"
|
||||||
|
git config user.email "${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com"
|
||||||
|
git config push.autoSetupRemote true
|
||||||
|
git stage .
|
||||||
|
git commit -m "Prepare release ${{needs.get-version.outputs.semVerStr}}"
|
||||||
|
git push
|
||||||
|
- name: Create pull request
|
||||||
|
run: |
|
||||||
|
printf "> [!IMPORTANT]\n> Todos:\n> - [ ] Update maven dependencies\n> - [ ] Check for JDK update\n> - [ ] Check for JFX update" > pr_body.md
|
||||||
|
PR_URL=$(gh pr create --title "Release ${{ needs.get-version.outputs.semVerStr }}" --body-file pr_body.md)
|
||||||
|
echo "FLATHUB_PR_URL=$PR_URL" >> "$GITHUB_ENV"
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
|
||||||
|
- name: Slack Notification
|
||||||
|
uses: rtCamp/action-slack-notify@v2
|
||||||
|
if: github.event_name == 'release'
|
||||||
|
env:
|
||||||
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
|
SLACK_USERNAME: 'Cryptobot'
|
||||||
|
SLACK_ICON: false
|
||||||
|
SLACK_ICON_EMOJI: ':bot:'
|
||||||
|
SLACK_CHANNEL: 'cryptomator-desktop'
|
||||||
|
SLACK_TITLE: "Flathub release PR created for ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} created."
|
||||||
|
SLACK_MESSAGE: "See <${{ env.FLATHUB_PR_URL }}|PR> on how to proceed.>."
|
||||||
|
SLACK_FOOTER: false
|
||||||
|
MSG_MINIMAL: true
|
||||||
@@ -23,7 +23,7 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_DIST: 'zulu'
|
JAVA_DIST: 'zulu'
|
||||||
JAVA_VERSION: 21
|
JAVA_VERSION: 22
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
determine-version:
|
determine-version:
|
||||||
@@ -50,7 +50,7 @@ jobs:
|
|||||||
if [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then
|
if [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then
|
||||||
SEM_VER_STR=${GITHUB_REF##*/}
|
SEM_VER_STR=${GITHUB_REF##*/}
|
||||||
elif [[ "${{ inputs.version }}" =~ [0-9]+\.[0-9]+\.[0-9]+.* ]]; then
|
elif [[ "${{ inputs.version }}" =~ [0-9]+\.[0-9]+\.[0-9]+.* ]]; then
|
||||||
SEM_VER_STR="${{ github.event.inputs.version }}"
|
SEM_VER_STR="${{ inputs.version }}"
|
||||||
else
|
else
|
||||||
SEM_VER_STR=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout`
|
SEM_VER_STR=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout`
|
||||||
fi
|
fi
|
||||||
@@ -71,6 +71,6 @@ jobs:
|
|||||||
echo "revNum=${REVCOUNT}" >> $GITHUB_OUTPUT
|
echo "revNum=${REVCOUNT}" >> $GITHUB_OUTPUT
|
||||||
echo "type=${TYPE}" >> $GITHUB_OUTPUT
|
echo "type=${TYPE}" >> $GITHUB_OUTPUT
|
||||||
- name: Validate Version
|
- name: Validate Version
|
||||||
uses: skymatic/semver-validation-action@v2
|
uses: skymatic/semver-validation-action@v3
|
||||||
with:
|
with:
|
||||||
version: ${{ steps.versions.outputs.semVerStr }}
|
version: ${{ steps.versions.outputs.semVerStr }}
|
||||||
@@ -16,7 +16,7 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_DIST: 'zulu'
|
JAVA_DIST: 'zulu'
|
||||||
JAVA_VERSION: '21.0.2+13'
|
JAVA_VERSION: '22.0.1+8'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
get-version:
|
get-version:
|
||||||
@@ -37,15 +37,15 @@ jobs:
|
|||||||
output-suffix: x64
|
output-suffix: x64
|
||||||
xcode-path: '/Applications/Xcode_13.2.1.app'
|
xcode-path: '/Applications/Xcode_13.2.1.app'
|
||||||
fuse-lib: macFUSE
|
fuse-lib: macFUSE
|
||||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_osx-x64_bin-jmods.zip'
|
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_osx-x64_bin-jmods.zip'
|
||||||
openjfx-sha: 'bd6abab20da73d5a968dcf2fd915d81b5fb919340e3bb84979ee9a888a829939'
|
openjfx-sha: 'e07a11c112abbdebe7c058b44c151e1e475de748671d896aef3d73f32453c248'
|
||||||
- os: [self-hosted, macOS, ARM64]
|
- os: [self-hosted, macOS, ARM64]
|
||||||
architecture: aarch64
|
architecture: aarch64
|
||||||
output-suffix: arm64
|
output-suffix: arm64
|
||||||
xcode-path: '/Applications/Xcode_13.2.1.app'
|
xcode-path: '/Applications/Xcode_13.2.1.app'
|
||||||
fuse-lib: FUSE-T
|
fuse-lib: FUSE-T
|
||||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_osx-aarch64_bin-jmods.zip'
|
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_osx-aarch64_bin-jmods.zip'
|
||||||
openjfx-sha: '7afaa1c57a6cc3c384d636e597b9a5364693e2db4aaec0a6e63d2fa964400b58'
|
openjfx-sha: '572fce94b9b09d316b960a49e3c2b5d35231ed0463e3b1c4020b8de89783b51d'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
@@ -79,7 +79,7 @@ jobs:
|
|||||||
- name: Set version
|
- name: Set version
|
||||||
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
|
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
|
||||||
- name: Run maven
|
- name: Run maven
|
||||||
run: mvn -B clean package -Pmac -DskipTests
|
run: mvn -B -Djavafx.platform=mac clean package -Pmac -DskipTests
|
||||||
- name: Patch target dir
|
- name: Patch target dir
|
||||||
run: |
|
run: |
|
||||||
cp LICENSE.txt target
|
cp LICENSE.txt target
|
||||||
@@ -91,7 +91,7 @@ jobs:
|
|||||||
--verbose
|
--verbose
|
||||||
--output runtime
|
--output runtime
|
||||||
--module-path "${JAVA_HOME}/jmods:openjfx-jmods"
|
--module-path "${JAVA_HOME}/jmods:openjfx-jmods"
|
||||||
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr
|
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.accessibility,jdk.management.jfr
|
||||||
--strip-native-commands
|
--strip-native-commands
|
||||||
--no-header-files
|
--no-header-files
|
||||||
--no-man-pages
|
--no-man-pages
|
||||||
@@ -142,7 +142,7 @@ jobs:
|
|||||||
REVISION_NO: ${{ needs.get-version.outputs.revNum }}
|
REVISION_NO: ${{ needs.get-version.outputs.revNum }}
|
||||||
- name: Generate license for dmg
|
- name: Generate license for dmg
|
||||||
run: >
|
run: >
|
||||||
mvn -B license:add-third-party
|
mvn -B -Djavafx.platform=mac 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
|
||||||
@@ -253,11 +253,13 @@ jobs:
|
|||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: dmg-${{ matrix.output-suffix }}
|
name: dmg-${{ matrix.output-suffix }}
|
||||||
path: Cryptomator-*.dmg
|
path: |
|
||||||
|
Cryptomator-*.dmg
|
||||||
|
Cryptomator-*.asc
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
- name: Publish dmg on GitHub Releases
|
- name: Publish dmg on GitHub Releases
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
||||||
|
|||||||
@@ -19,7 +19,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@v1
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_DIST: 'zulu'
|
JAVA_DIST: 'zulu'
|
||||||
JAVA_VERSION: 21
|
JAVA_VERSION: 22
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -24,4 +24,4 @@ jobs:
|
|||||||
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 mvn -B clean install jacoco:report -Pcoverage -Djavafx.platform=linux
|
||||||
@@ -12,7 +12,7 @@ defaults:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_DIST: 'zulu'
|
JAVA_DIST: 'zulu'
|
||||||
JAVA_VERSION: 21
|
JAVA_VERSION: 22
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-preconditions:
|
check-preconditions:
|
||||||
@@ -44,7 +44,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
- name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file
|
- name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file
|
||||||
run: |
|
run: |
|
||||||
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
|
||||||
@@ -60,6 +60,6 @@ jobs:
|
|||||||
- name: Run org.owasp:dependency-check plugin
|
- name: Run org.owasp:dependency-check plugin
|
||||||
id: dependency-check
|
id: dependency-check
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
run: mvn -B verify -Pdependency-check -DskipTests
|
run: mvn -B verify -Pdependency-check -DskipTests -Djavafx.platform=linux
|
||||||
env:
|
env:
|
||||||
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
|
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
|
||||||
@@ -11,15 +11,16 @@ on:
|
|||||||
isDebug:
|
isDebug:
|
||||||
description: 'Build debug version with console output'
|
description: 'Build debug version with console output'
|
||||||
type: boolean
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_DIST: 'zulu'
|
JAVA_DIST: 'zulu'
|
||||||
JAVA_VERSION: '21.0.2+13'
|
JAVA_VERSION: '22.0.1+8'
|
||||||
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_windows-x64_bin-jmods.zip'
|
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_windows-x64_bin-jmods.zip'
|
||||||
OPENJFX_JMODS_AMD64_HASH: 'daf8acae631c016c24cfe23f88469400274d3441dd890615a42dfb501f3eb94a'
|
OPENJFX_JMODS_AMD64_HASH: 'de82e53179032a49bec005deb4438e8f261d08c4b58864a5c17e1d87286b09dd'
|
||||||
WINFSP_MSI: 'https://github.com/winfsp/winfsp/releases/download/v2.0/winfsp-2.0.23075.msi'
|
WINFSP_MSI: 'https://github.com/winfsp/winfsp/releases/download/v2.0/winfsp-2.0.23075.msi'
|
||||||
WINFSP_UNINSTALLER: 'https://github.com/cryptomator/winfsp-uninstaller/releases/download/1.0.0/winfsp-uninstaller.exe'
|
WINFSP_UNINSTALLER: 'https://github.com/cryptomator/winfsp-uninstaller/releases/latest/download/winfsp-uninstaller.exe'
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -39,6 +40,9 @@ jobs:
|
|||||||
LOOPBACK_ALIAS: 'cryptomator-vault'
|
LOOPBACK_ALIAS: 'cryptomator-vault'
|
||||||
WIN_CONSOLE_FLAG: ''
|
WIN_CONSOLE_FLAG: ''
|
||||||
steps:
|
steps:
|
||||||
|
- name: Upgrade WIX to latest version
|
||||||
|
run: choco install wixtoolset --version 3.14.1
|
||||||
|
shell: pwsh
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
@@ -73,7 +77,7 @@ jobs:
|
|||||||
- name: Set version
|
- name: Set version
|
||||||
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
|
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
|
||||||
- name: Run maven
|
- name: Run maven
|
||||||
run: mvn -B clean package -Pwin -DskipTests
|
run: mvn -B clean package -Pwin -DskipTests -Djavafx.platform=win
|
||||||
- name: Patch target dir
|
- name: Patch target dir
|
||||||
run: |
|
run: |
|
||||||
cp LICENSE.txt target
|
cp LICENSE.txt target
|
||||||
@@ -85,7 +89,7 @@ jobs:
|
|||||||
--verbose
|
--verbose
|
||||||
--output runtime
|
--output runtime
|
||||||
--module-path "jfxjmods;${JAVA_HOME}/jmods"
|
--module-path "jfxjmods;${JAVA_HOME}/jmods"
|
||||||
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr
|
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.accessibility,jdk.management.jfr
|
||||||
--strip-native-commands
|
--strip-native-commands
|
||||||
--no-header-files
|
--no-header-files
|
||||||
--no-man-pages
|
--no-man-pages
|
||||||
@@ -170,7 +174,7 @@ jobs:
|
|||||||
& $env:JAVA_HOME\bin\jmod.exe extract --dir jpackage-jmod "${env:JAVA_HOME}\jmods\jdk.jpackage.jmod"
|
& $env:JAVA_HOME\bin\jmod.exe extract --dir jpackage-jmod "${env:JAVA_HOME}\jmods\jdk.jpackage.jmod"
|
||||||
Get-ChildItem -Recurse -Path "jpackage-jmod" -File wixhelper.dll | Select-Object -Last 1 | Copy-Item -Destination "appdir"
|
Get-ChildItem -Recurse -Path "jpackage-jmod" -File wixhelper.dll | Select-Object -Last 1 | Copy-Item -Destination "appdir"
|
||||||
- name: Codesign
|
- name: Codesign
|
||||||
uses: skymatic/code-sign-action@v2
|
uses: skymatic/code-sign-action@v3
|
||||||
with:
|
with:
|
||||||
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
|
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
|
||||||
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
|
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
|
||||||
@@ -195,7 +199,7 @@ jobs:
|
|||||||
}
|
}
|
||||||
- name: Generate license for MSI
|
- name: Generate license for MSI
|
||||||
run: >
|
run: >
|
||||||
mvn -B license:add-third-party
|
mvn -B license:add-third-party -Djavafx.platform=win
|
||||||
"-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"
|
||||||
@@ -219,7 +223,7 @@ jobs:
|
|||||||
--win-menu
|
--win-menu
|
||||||
--win-dir-chooser
|
--win-dir-chooser
|
||||||
--win-shortcut-prompt
|
--win-shortcut-prompt
|
||||||
--win-update-url "https:\\cryptomator.org"
|
--win-update-url "https:\\cryptomator.org\downloads"
|
||||||
--win-menu-group Cryptomator
|
--win-menu-group Cryptomator
|
||||||
--resource-dir dist/win/resources
|
--resource-dir dist/win/resources
|
||||||
--license-file dist/win/resources/license.rtf
|
--license-file dist/win/resources/license.rtf
|
||||||
@@ -228,7 +232,7 @@ jobs:
|
|||||||
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs
|
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs
|
||||||
JP_WIXHELPER_DIR: ${{ github.workspace }}\appdir
|
JP_WIXHELPER_DIR: ${{ github.workspace }}\appdir
|
||||||
- name: Codesign MSI
|
- name: Codesign MSI
|
||||||
uses: skymatic/code-sign-action@v2
|
uses: skymatic/code-sign-action@v3
|
||||||
with:
|
with:
|
||||||
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
|
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
|
||||||
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
|
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
|
||||||
@@ -253,15 +257,6 @@ jobs:
|
|||||||
Cryptomator-*.msi
|
Cryptomator-*.msi
|
||||||
Cryptomator-*.asc
|
Cryptomator-*.asc
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
- name: Publish .msi on GitHub Releases
|
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
fail_on_unmatched_files: true
|
|
||||||
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
|
||||||
files: |
|
|
||||||
*.msi
|
|
||||||
*.asc
|
|
||||||
|
|
||||||
build-exe:
|
build-exe:
|
||||||
name: Build .exe installer
|
name: Build .exe installer
|
||||||
@@ -284,7 +279,7 @@ jobs:
|
|||||||
cache: 'maven'
|
cache: 'maven'
|
||||||
- name: Generate license for exe
|
- name: Generate license for exe
|
||||||
run: >
|
run: >
|
||||||
mvn -B license:add-third-party
|
mvn -B license:add-third-party -Djavafx.platform=win
|
||||||
"-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"
|
||||||
@@ -325,7 +320,7 @@ jobs:
|
|||||||
-ib installer/unsigned/Cryptomator-Installer.exe
|
-ib installer/unsigned/Cryptomator-Installer.exe
|
||||||
-o tmp/engine.exe
|
-o tmp/engine.exe
|
||||||
- name: Codesign burn engine
|
- name: Codesign burn engine
|
||||||
uses: skymatic/code-sign-action@v2
|
uses: skymatic/code-sign-action@v3
|
||||||
with:
|
with:
|
||||||
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
|
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
|
||||||
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
|
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
|
||||||
@@ -339,7 +334,7 @@ jobs:
|
|||||||
-ab tmp/engine.exe installer/unsigned/Cryptomator-Installer.exe
|
-ab tmp/engine.exe installer/unsigned/Cryptomator-Installer.exe
|
||||||
-o installer/Cryptomator-Installer.exe
|
-o installer/Cryptomator-Installer.exe
|
||||||
- name: Codesign EXE
|
- name: Codesign EXE
|
||||||
uses: skymatic/code-sign-action@v2
|
uses: skymatic/code-sign-action@v3
|
||||||
with:
|
with:
|
||||||
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
|
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
|
||||||
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
|
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
|
||||||
@@ -364,52 +359,59 @@ jobs:
|
|||||||
Cryptomator-*.exe
|
Cryptomator-*.exe
|
||||||
Cryptomator-*.asc
|
Cryptomator-*.asc
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
|
publish:
|
||||||
|
name: Publish installers to the github release
|
||||||
|
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [build-msi, build-exe]
|
||||||
|
outputs:
|
||||||
|
download-url-msi: ${{ fromJSON(steps.publish.outputs.assets)[0].browser_download_url }}
|
||||||
|
download-url-exe: ${{ fromJSON(steps.publish.outputs.assets)[1].browser_download_url }}
|
||||||
|
steps:
|
||||||
|
- name: Download installers
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
merge-multiple: true
|
||||||
- name: Publish .msi on GitHub Releases
|
- name: Publish .msi on GitHub Releases
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
id: publish
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
||||||
|
# do not change ordering of filelist, required for correct job output
|
||||||
files: |
|
files: |
|
||||||
Cryptomator-*.exe
|
*.msi
|
||||||
Cryptomator-*.asc
|
*.exe
|
||||||
|
*.asc
|
||||||
|
|
||||||
allowlist:
|
allowlist-msi:
|
||||||
name: Anti Virus Allowlisting
|
uses: ./.github/workflows/av-whitelist.yml
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
needs: [publish]
|
||||||
|
with:
|
||||||
|
url: ${{ needs.publish.outputs.download-url-msi }}
|
||||||
|
|
||||||
|
allowlist-exe:
|
||||||
|
uses: ./.github/workflows/av-whitelist.yml
|
||||||
|
needs: [publish]
|
||||||
|
with:
|
||||||
|
url: ${{ needs.publish.outputs.download-url-exe }}
|
||||||
|
|
||||||
|
notify-winget:
|
||||||
|
name: Notify for winget-release
|
||||||
|
if: needs.get-version.outputs.versionType == 'stable'
|
||||||
|
needs: [publish, get-version]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [build-msi, build-exe]
|
|
||||||
steps:
|
steps:
|
||||||
- name: Download .msi
|
- name: Slack Notification
|
||||||
uses: actions/download-artifact@v4
|
uses: rtCamp/action-slack-notify@v2
|
||||||
with:
|
env:
|
||||||
name: msi
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||||
path: msi
|
SLACK_USERNAME: 'Cryptobot'
|
||||||
- name: Download .exe
|
SLACK_ICON: false
|
||||||
uses: actions/download-artifact@v4
|
SLACK_ICON_EMOJI: ':bot:'
|
||||||
with:
|
SLACK_CHANNEL: 'cryptomator-desktop'
|
||||||
name: exe
|
SLACK_TITLE: "MSI of ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} published."
|
||||||
path: exe
|
SLACK_MESSAGE: "Ready to <https://github.com/${{ github.repository }}/actions/workflows/winget.yml| release to winget>."
|
||||||
- name: Collect files
|
SLACK_FOOTER: false
|
||||||
run: |
|
MSG_MINIMAL: true
|
||||||
mkdir files
|
|
||||||
cp msi/*.msi files
|
|
||||||
cp exe/*.exe files
|
|
||||||
- name: Upload to Kaspersky
|
|
||||||
uses: SamKirkland/FTP-Deploy-Action@v4.3.4
|
|
||||||
with:
|
|
||||||
protocol: ftps
|
|
||||||
server: allowlist.kaspersky-labs.com
|
|
||||||
port: 990
|
|
||||||
username: ${{ secrets.ALLOWLIST_KASPERSKY_USERNAME }}
|
|
||||||
password: ${{ secrets.ALLOWLIST_KASPERSKY_PASSWORD }}
|
|
||||||
local-dir: files/
|
|
||||||
- name: Upload to Avast
|
|
||||||
uses: SamKirkland/FTP-Deploy-Action@v4.3.4
|
|
||||||
with:
|
|
||||||
protocol: ftp
|
|
||||||
server: whitelisting.avast.com
|
|
||||||
port: 21
|
|
||||||
username: ${{ secrets.ALLOWLIST_AVAST_USERNAME }}
|
|
||||||
password: ${{ secrets.ALLOWLIST_AVAST_PASSWORD }}
|
|
||||||
local-dir: files/
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
name: Publish MSI to winget-pkgs
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description: 'Release tag'
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
winget:
|
||||||
|
name: Publish winget package
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- name: Sync winget-pkgs fork
|
||||||
|
run: |
|
||||||
|
gh repo sync cryptomator/winget-pkgs -b master --force
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
|
||||||
|
- name: Submit package
|
||||||
|
uses: vedantmgoyal2009/winget-releaser@v2
|
||||||
|
with:
|
||||||
|
identifier: Cryptomator.Cryptomator
|
||||||
|
version: ${{ inputs.tag }}
|
||||||
|
release-tag: ${{ inputs.tag }}
|
||||||
|
installers-regex: '\.msi$'
|
||||||
|
token: ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
|
||||||
Generated
+10
-12
@@ -14,31 +14,29 @@
|
|||||||
<option name="dagger.fastInit" value="enabled" />
|
<option name="dagger.fastInit" value="enabled" />
|
||||||
<option name="dagger.formatGeneratedSource" value="enabled" />
|
<option name="dagger.formatGeneratedSource" value="enabled" />
|
||||||
<processorPath useClasspath="false">
|
<processorPath useClasspath="false">
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-compiler/2.48.1/dagger-compiler-2.48.1.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-compiler/2.49/dagger-compiler-2.49.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger/2.48.1/dagger-2.48.1.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger/2.49/dagger-2.49.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" />
|
<entry name="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-producers/2.48.1/dagger-producers-2.48.1.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-spi/2.49/dagger-spi-2.49.jar" />
|
||||||
|
<entry name="$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" />
|
||||||
|
<entry name="$MAVEN_REPOSITORY$/com/google/devtools/ksp/symbol-processing-api/1.9.20-1.0.14/symbol-processing-api-1.9.20-1.0.14.jar" />
|
||||||
|
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.0/kotlin-stdlib-jdk8-1.9.0.jar" />
|
||||||
|
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.9.20/kotlin-stdlib-1.9.20.jar" />
|
||||||
|
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" />
|
||||||
|
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.0/kotlin-stdlib-jdk7-1.9.0.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar" />
|
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-spi/2.48.1/dagger-spi-2.48.1.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/devtools/ksp/symbol-processing-api/1.9.0-1.0.12/symbol-processing-api-1.9.0-1.0.12.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.0/kotlin-stdlib-common-1.9.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/squareup/javapoet/1.13.0/javapoet-1.13.0.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/squareup/javapoet/1.13.0/javapoet-1.13.0.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/googlejavaformat/google-java-format/1.5/google-java-format-1.5.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/googlejavaformat/google-java-format/1.5/google-java-format-1.5.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/javac-shaded/9-dev-r4023-3/javac-shaded-9-dev-r4023-3.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/javac-shaded/9-dev-r4023-3/javac-shaded-9-dev-r4023-3.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/squareup/kotlinpoet/1.11.0/kotlinpoet-1.11.0.jar" />
|
<entry name="$MAVEN_REPOSITORY$/com/squareup/kotlinpoet/1.11.0/kotlinpoet-1.11.0.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.10/kotlin-stdlib-jdk8-1.6.10.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.10/kotlin-stdlib-jdk7-1.6.10.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" />
|
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" />
|
||||||
<entry name="$MAVEN_REPOSITORY$/net/ltgt/gradle/incap/incap/0.2/incap-0.2.jar" />
|
<entry name="$MAVEN_REPOSITORY$/net/ltgt/gradle/incap/incap/0.2/incap-0.2.jar" />
|
||||||
|
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar" />
|
||||||
</processorPath>
|
</processorPath>
|
||||||
<module name="cryptomator" />
|
<module name="cryptomator" />
|
||||||
</profile>
|
</profile>
|
||||||
|
|||||||
Generated
+1
-1
@@ -8,7 +8,7 @@
|
|||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21_PREVIEW" project-jdk-name="21" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_22" project-jdk-name="22" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
</envs>
|
</envs>
|
||||||
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
||||||
<module name="cryptomator" />
|
<module name="cryptomator" />
|
||||||
<option name="VM_PARAMETERS" value="-Dapple.awt.enableTemplateImages=true -Dcryptomator.settingsPath="@{userhome}/Library/Application Support/Cryptomator-Dev/settings.json" -Dcryptomator.p12Path="@{userhome}/Library/Application Support/Cryptomator-Dev/key.p12" -Dcryptomator.ipcSocketPath="@{userhome}/Library/Application Support/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="@{userhome}/Library/Logs/Cryptomator-Dev" -Dcryptomator.pluginDir="@{userhome}/Library/Application Support/Cryptomator-Dev/Plugins" -Dcryptomator.mountPointsDir="@{userhome}/Cryptomator" -Dcryptomator.showTrayIcon=true -Dcryptomator.integrationsMac.keychainServiceName=Cryptomator -Xss2m -Xmx512m -ea --enable-preview --enable-native-access=org.cryptomator.jfuse.mac" />
|
<option name="VM_PARAMETERS" value="-Dapple.awt.enableTemplateImages=true -Dcryptomator.settingsPath="@{userhome}/Library/Application Support/Cryptomator-Dev/settings.json" -Dcryptomator.p12Path="@{userhome}/Library/Application Support/Cryptomator-Dev/key.p12" -Dcryptomator.ipcSocketPath="@{userhome}/Library/Application Support/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="@{userhome}/Library/Logs/Cryptomator-Dev" -Dcryptomator.pluginDir="@{userhome}/Library/Application Support/Cryptomator-Dev/Plugins" -Dcryptomator.mountPointsDir="@{userhome}/Library/Application Support/Cryptomator-Dev/mnt" -Dcryptomator.showTrayIcon=true -Dcryptomator.integrationsMac.keychainServiceName=Cryptomator -Xss2m -Xmx512m -ea --enable-preview --enable-native-access=org.cryptomator.jfuse.mac" />
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ Cryptomator is provided free of charge as an open-source project despite the hig
|
|||||||
<td><a href="https://mowcapital.com/"><img src="https://cryptomator.org/img/sponsors/mowcapital.svg" alt="Mow Capital" height="28"></a></td>
|
<td><a href="https://mowcapital.com/"><img src="https://cryptomator.org/img/sponsors/mowcapital.svg" alt="Mow Capital" height="28"></a></td>
|
||||||
<td><a href="https://www.easeus.com/"><img src="https://cryptomator.org/img/sponsors/easeus.png" alt="EaseUS" height="40"></a></td>
|
<td><a href="https://www.easeus.com/"><img src="https://cryptomator.org/img/sponsors/easeus.png" alt="EaseUS" height="40"></a></td>
|
||||||
<td><a href="https://www.hassmann-it-forensik.de/"><img src="https://cryptomator.org/img/sponsors/hassmannitforensik.png" alt="Hassmann IT-Forensik" height="40"></a></td>
|
<td><a href="https://www.hassmann-it-forensik.de/"><img src="https://cryptomator.org/img/sponsors/hassmannitforensik.png" alt="Hassmann IT-Forensik" height="40"></a></td>
|
||||||
<td><a href="https://ente.io/"><img src="https://cryptomator.org/img/sponsors/ente.svg" alt="Ente" height="58"></a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# created during build
|
# downloaded/created during build
|
||||||
|
openjfx-jmods.zip
|
||||||
|
*.jmod
|
||||||
Cryptomator.AppDir
|
Cryptomator.AppDir
|
||||||
*.AppImage
|
*.AppImage
|
||||||
*.AppImage.zsync
|
*.AppImage.zsync
|
||||||
Vendored
+25
-27
@@ -12,40 +12,40 @@ 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=$(mvn -f ../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout)
|
||||||
SEMVER_STR=${VERSION}
|
SEMVER_STR=${VERSION}
|
||||||
MACHINE_TYPE=$(uname -m)
|
CPU_ARCH=$(uname -p)
|
||||||
|
|
||||||
if [[ ! "${MACHINE_TYPE}" =~ x86_64|aarch64 ]]; then echo "Platform ${MACHINE_TYPE} 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}
|
mvn -f ../../../pom.xml versions:set -DnewVersion=${SEMVER_STR}
|
||||||
|
|
||||||
# compile
|
# compile
|
||||||
mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests
|
mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests -Djavafx.platform=linux
|
||||||
cp ../../../LICENSE.txt ../../../target
|
cp ../../../LICENSE.txt ../../../target
|
||||||
cp ../../../target/cryptomator-*.jar ../../../target/mods
|
cp ../../../target/cryptomator-*.jar ../../../target/mods
|
||||||
|
|
||||||
|
JAVAFX_VERSION=22.0.1
|
||||||
# download javaFX jmods
|
JAVAFX_ARCH="x64"
|
||||||
OPENJFX_URL='https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_linux-x64_bin-jmods.zip'
|
JAVAFX_JMODS_SHA256='fbb22f35951c2e049cc2554dd03c2c56b4f5adc4b2ae9248872f46175ac103d8'
|
||||||
OPENJFX_SHA='7baed11ca56d5fee85995fa6612d4299f1e8b7337287228f7f12fd50407c56f8'
|
if [ "${CPU_ARCH}" = "aarch64" ]; then
|
||||||
OPENJFX_URL_aarch64='https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_linux-aarch64_bin-jmods.zip'
|
JAVAFX_ARCH="aarch64"
|
||||||
OPENJFX_SHA_aarch64='871e7b9d7af16aef2e55c1b7830d0e0b2503b13dd8641374ba7e55ecb81d2ef9'
|
JAVAFX_JMODS_SHA256='1982ad168a5e8d7cf4a9458a7d088b4f0552d0ac3f24f23fb88f8bc7e8d69a13'
|
||||||
|
|
||||||
if [[ "${MACHINE_TYPE}" = "aarch64" ]]; then
|
|
||||||
OPENJFX_URL="${OPENJFX_URL_aarch64}";
|
|
||||||
OPENJFX_SHA="${OPENJFX_SHA_aarch64}";
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
curl -L ${OPENJFX_URL} -o openjfx-jmods.zip
|
# download javaFX jmods
|
||||||
echo "${OPENJFX_SHA} openjfx-jmods.zip" | shasum -a256 --check
|
JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-21.0.1_linux-${JAVAFX_ARCH}_bin-jmods.zip"
|
||||||
|
|
||||||
|
|
||||||
|
curl -L ${JAVAFX_JMODS_URL} -o openjfx-jmods.zip
|
||||||
|
echo "${JAVAFX_JMODS_SHA256} openjfx-jmods.zip" | shasum -a256 --check
|
||||||
mkdir -p openjfx-jmods
|
mkdir -p openjfx-jmods
|
||||||
unzip -j openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
|
unzip -o -j openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
|
||||||
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
|
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=$(mvn 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_AMD64 ]; then
|
if [ $POM_JFX_VERSION -ne $JMOD_VERSION ]; then
|
||||||
>&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION})"
|
>&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION})"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -56,7 +56,7 @@ ${JAVA_HOME}/bin/jlink \
|
|||||||
--verbose \
|
--verbose \
|
||||||
--output runtime \
|
--output runtime \
|
||||||
--module-path "${JAVA_HOME}/jmods:openjfx-jmods" \
|
--module-path "${JAVA_HOME}/jmods:openjfx-jmods" \
|
||||||
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net \
|
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net \
|
||||||
--strip-native-commands \
|
--strip-native-commands \
|
||||||
--no-header-files \
|
--no-header-files \
|
||||||
--no-man-pages \
|
--no-man-pages \
|
||||||
@@ -64,7 +64,6 @@ ${JAVA_HOME}/bin/jlink \
|
|||||||
--compress zip-0
|
--compress zip-0
|
||||||
|
|
||||||
# create app dir
|
# create app dir
|
||||||
envsubst '${SEMVER_STR} ${REVISION_NUM}' < ../launcher-gtk2.properties > launcher-gtk2.properties
|
|
||||||
${JAVA_HOME}/bin/jpackage \
|
${JAVA_HOME}/bin/jpackage \
|
||||||
--verbose \
|
--verbose \
|
||||||
--type app-image \
|
--type app-image \
|
||||||
@@ -92,7 +91,6 @@ ${JAVA_HOME}/bin/jpackage \
|
|||||||
--java-options "-Dcryptomator.showTrayIcon=true" \
|
--java-options "-Dcryptomator.showTrayIcon=true" \
|
||||||
--java-options "-Dcryptomator.integrationsLinux.trayIconsDir=\"@{appdir}/usr/share/icons/hicolor/symbolic/apps\"" \
|
--java-options "-Dcryptomator.integrationsLinux.trayIconsDir=\"@{appdir}/usr/share/icons/hicolor/symbolic/apps\"" \
|
||||||
--java-options "-Dcryptomator.buildNumber=\"appimage-${REVISION_NO}\"" \
|
--java-options "-Dcryptomator.buildNumber=\"appimage-${REVISION_NO}\"" \
|
||||||
--add-launcher cryptomator-gtk2=launcher-gtk2.properties \
|
|
||||||
--resource-dir ../resources
|
--resource-dir ../resources
|
||||||
|
|
||||||
# transform AppDir
|
# transform AppDir
|
||||||
@@ -116,17 +114,17 @@ ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.App
|
|||||||
ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun
|
ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun
|
||||||
|
|
||||||
# load AppImageTool
|
# load AppImageTool
|
||||||
curl -L https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-${MACHINE_TYPE}.AppImage -o /tmp/appimagetool.AppImage
|
curl -L https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-${CPU_ARCH}.AppImage -o /tmp/appimagetool.AppImage
|
||||||
chmod +x /tmp/appimagetool.AppImage
|
chmod +x /tmp/appimagetool.AppImage
|
||||||
|
|
||||||
# create AppImage
|
# create AppImage
|
||||||
/tmp/appimagetool.AppImage \
|
/tmp/appimagetool.AppImage \
|
||||||
Cryptomator.AppDir \
|
Cryptomator.AppDir \
|
||||||
cryptomator-${SEMVER_STR}-${MACHINE_TYPE}.AppImage \
|
cryptomator-${SEMVER_STR}-${CPU_ARCH}.AppImage \
|
||||||
-u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-${MACHINE_TYPE}.AppImage.zsync'
|
-u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-${CPU_ARCH}.AppImage.zsync'
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Done. AppImage successfully created: cryptomator-${SEMVER_STR}-${MACHINE_TYPE}.AppImage"
|
echo "Done. AppImage successfully created: cryptomator-${SEMVER_STR}-${CPU_ARCH}.AppImage"
|
||||||
echo ""
|
echo ""
|
||||||
echo >&2 "To clean up, run: rm -rf Cryptomator.AppDir appdir runtime squashfs-root openjfx-jmods; rm launcher-gtk2.properties /tmp/appimagetool.AppImage openjfx-jmods.zip"
|
echo >&2 "To clean up, run: rm -rf Cryptomator.AppDir appdir runtime squashfs-root openjfx-jmods; rm /tmp/appimagetool.AppImage openjfx-jmods.zip"
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
+118
-43
@@ -5,26 +5,27 @@
|
|||||||
<metadata_license>FSFAP</metadata_license>
|
<metadata_license>FSFAP</metadata_license>
|
||||||
<project_license>GPL-3.0-or-later</project_license>
|
<project_license>GPL-3.0-or-later</project_license>
|
||||||
<name>Cryptomator</name>
|
<name>Cryptomator</name>
|
||||||
<summary>Multi-platform client-side encryption tool optimized for cloud storages</summary>
|
<summary>Encryption made easy and optimized for the cloud</summary>
|
||||||
|
|
||||||
<description>
|
<description>
|
||||||
<p>
|
<p>
|
||||||
Cryptomator provides transparent, client-side encryption for your cloud. Protect your documents from unauthorized
|
Cryptomator provides easy-to-use, transparent, client-side encryption for your cloud.
|
||||||
access. Cryptomator is free and open source software, so you can rest assured there are no backdoors.
|
It protects your documents from unauthorized access and prying eyes, while you will still be able to view and edit your documents locally.
|
||||||
|
By not requiring any registration or account and performing all encryption locally, it gives you back control over your data and ensures your privacy.
|
||||||
|
Cryptomator is offered for all major platforms (including Android and iOS).
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Cryptomator encrypts file contents and names using AES. Your passphrase is protected against bruteforcing attempts
|
Cryptomator encrypts file contents and names using the widespread industry standard AES.
|
||||||
using scrypt. Directory structures get obfuscated. The only thing which cannot be encrypted without breaking your
|
Your passphrase is protected against brute forcing attempts using scrypt.
|
||||||
cloud synchronization is the modification date of your files.
|
Additionally, directory structures get obfuscated.
|
||||||
|
For more info about the Cryptomator encryption scheme, check out the online documentation.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Cryptomator is a free and open source software licensed under the GPLv3. This allows anyone to check our code. It
|
Cryptomator is a free and open-source software licensed under the GPLv3.
|
||||||
is impossible to introduce backdoors for third parties. Also we cannot hide vulnerabilities. And the best thing
|
This allows anyone to check our code.
|
||||||
is: There is no need to trust us, as you can control us!
|
Thus, it is impossible to introduce backdoors for third parties or to hide vulnerabilities, so you do not need to trust Cryptomator.
|
||||||
</p>
|
Also, vendor lock-ins are impossible.
|
||||||
<p>
|
Even if we decided to stop development: The source code is already cloned by hundreds of other developers and development can be picked up by others.
|
||||||
Vendor lock-ins are impossible. Even if we decided to stop development: The source code is already cloned by
|
|
||||||
hundreds of other developers. As you don't need an account, you will never stand in front of locked doors.
|
|
||||||
</p>
|
</p>
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@
|
|||||||
</provides>
|
</provides>
|
||||||
|
|
||||||
<screenshots>
|
<screenshots>
|
||||||
<screenshot>
|
<screenshot type="default">
|
||||||
<caption>Light theme</caption>
|
<caption>Light theme</caption>
|
||||||
<image>https://user-images.githubusercontent.com/11858409/156986109-6e58f59c-8b8c-4501-b33b-bb1e33007cea.png</image>
|
<image>https://user-images.githubusercontent.com/11858409/156986109-6e58f59c-8b8c-4501-b33b-bb1e33007cea.png</image>
|
||||||
</screenshot>
|
</screenshot>
|
||||||
@@ -52,46 +53,120 @@
|
|||||||
</screenshot>
|
</screenshot>
|
||||||
</screenshots>
|
</screenshots>
|
||||||
|
|
||||||
|
<branding>
|
||||||
|
<color type="primary" scheme_preference="light">#EBF5EB</color>
|
||||||
|
<color type="primary" scheme_preference="dark">#2F4858</color>
|
||||||
|
</branding>
|
||||||
|
|
||||||
<url type="homepage">https://cryptomator.org/</url>
|
<url type="homepage">https://cryptomator.org/</url>
|
||||||
<url type="bugtracker">https://github.com/cryptomator/cryptomator/issues/</url>
|
<url type="bugtracker">https://github.com/cryptomator/cryptomator/issues/</url>
|
||||||
<url type="donation">https://cryptomator.org/donate</url>
|
<url type="donation">https://cryptomator.org/donate</url>
|
||||||
<url type="faq">https://community.cryptomator.org/c/kb/faq</url>
|
<url type="faq">https://community.cryptomator.org/c/kb/faq</url>
|
||||||
<url type="help">https://community.cryptomator.org/</url>
|
<url type="help">https://docs.cryptomator.org/</url>
|
||||||
<url type="translate">https://translate.cryptomator.org</url>
|
<url type="translate">https://translate.cryptomator.org</url>
|
||||||
|
|
||||||
<developer_name>Skymatic GmbH</developer_name>
|
<developer id="de.skymatic">
|
||||||
|
<name>Skymatic GmbH</name>
|
||||||
|
</developer>
|
||||||
|
|
||||||
|
|
||||||
<content_rating type="oars-1.1">
|
<content_rating type="oars-1.1">
|
||||||
<content_attribute id="social-info">mild</content_attribute> <!-- update checker connects to https://api.cryptomator.org/updates/latestVersion.json -->
|
<content_attribute id="social-info">mild</content_attribute> <!-- update checker connects to https://api.cryptomator.org/updates/latestVersion.json -->
|
||||||
</content_rating>
|
</content_rating>
|
||||||
|
|
||||||
<releases>
|
<releases>
|
||||||
<release date="2024-02-06" version="1.12.0"/>
|
<release date="2024-03-27" version="1.12.4">
|
||||||
<release date="2023-12-05" version="1.11.1"/>
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.4</url>
|
||||||
<release date="2023-11-08" version="1.11.0"/>
|
</release>
|
||||||
<release date="2023-09-20" version="1.10.1"/>
|
<release date="2024-02-27" version="1.12.3">
|
||||||
<release date="2023-09-11" version="1.10.0"/>
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.3</url>
|
||||||
<release date="2023-08-11" version="1.9.4"/>
|
</release>
|
||||||
<release date="2023-08-07" version="1.9.3"/>
|
<release date="2024-02-09" version="1.12.2">
|
||||||
<release date="2023-07-24" version="1.9.2"/>
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.2</url>
|
||||||
<release date="2023-06-07" version="1.9.1"/>
|
</release>
|
||||||
<release date="2023-05-30" version="1.9.0"/>
|
<release date="2024-02-07" version="1.12.1">
|
||||||
<release date="2023-04-25" version="1.8.0"/>
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.1</url>
|
||||||
<release date="2023-04-07" version="1.7.5"/>
|
</release>
|
||||||
<release date="2023-04-05" version="1.7.4"/>
|
<release date="2024-02-06" version="1.12.0">
|
||||||
<release date="2023-03-15" version="1.7.3"/>
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.0</url>
|
||||||
<release date="2023-03-07" version="1.7.2"/>
|
</release>
|
||||||
<release date="2023-03-03" version="1.7.1"/>
|
<release date="2023-12-05" version="1.11.1">
|
||||||
<release date="2023-03-01" version="1.7.0"/>
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.11.1</url>
|
||||||
<release date="2022-12-14" version="1.6.17"/>
|
</release>
|
||||||
<release date="2022-12-06" version="1.6.16"/>
|
<release date="2023-11-08" version="1.11.0">
|
||||||
<release date="2022-10-06" version="1.6.15"/>
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.11.0</url>
|
||||||
<release date="2022-08-31" version="1.6.14"/>
|
</release>
|
||||||
<release date="2022-07-27" version="1.6.12"/>
|
<release date="2023-09-20" version="1.10.1">
|
||||||
<release date="2022-07-26" version="1.6.11"/>
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.10.1</url>
|
||||||
<release date="2022-05-03" version="1.6.10"/>
|
</release>
|
||||||
<release date="2022-04-27" version="1.6.9"/>
|
<release date="2023-09-11" version="1.10.0">
|
||||||
<release date="2022-03-30" version="1.6.8"/>
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.10.0</url>
|
||||||
<release date="2021-12-16" version="1.6.5"/>
|
</release>
|
||||||
|
<release date="2023-08-11" version="1.9.4">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.4</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-08-07" version="1.9.3">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.3</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-07-24" version="1.9.2">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.2</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-06-07" version="1.9.1">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.1</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-05-30" version="1.9.0">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.0</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-04-25" version="1.8.0">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.8.0</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-04-07" version="1.7.5">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.5</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-04-05" version="1.7.4">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.4</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-03-15" version="1.7.3">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.3</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-03-07" version="1.7.2">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.2</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-03-03" version="1.7.1">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.1</url>
|
||||||
|
</release>
|
||||||
|
<release date="2023-03-01" version="1.7.0">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.0</url>
|
||||||
|
</release>
|
||||||
|
<release date="2022-12-14" version="1.6.17">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.17</url>
|
||||||
|
</release>
|
||||||
|
<release date="2022-12-06" version="1.6.16">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.16</url>
|
||||||
|
</release>
|
||||||
|
<release date="2022-10-06" version="1.6.15">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.15</url>
|
||||||
|
</release>
|
||||||
|
<release date="2022-08-31" version="1.6.14">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.14</url>
|
||||||
|
</release>
|
||||||
|
<release date="2022-07-27" version="1.6.12">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.12</url>
|
||||||
|
</release>
|
||||||
|
<release date="2022-07-26" version="1.6.11">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.11</url>
|
||||||
|
</release>
|
||||||
|
<release date="2022-05-03" version="1.6.10">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.10</url>
|
||||||
|
</release>
|
||||||
|
<release date="2022-04-27" version="1.6.9">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.9</url>
|
||||||
|
</release>
|
||||||
|
<release date="2022-03-30" version="1.6.8">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.8</url>
|
||||||
|
</release>
|
||||||
|
<release date="2021-12-16" version="1.6.5">
|
||||||
|
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.5</url>
|
||||||
|
</release>
|
||||||
</releases>
|
</releases>
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
Vendored
+1
-1
@@ -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), coffeelibs-jdk-21 (= 21.0.1+12-0ppa1), libgtk2.0-0, libgtk-3-0, libxxf86vm1, libgl1
|
Build-Depends: debhelper (>=10), coffeelibs-jdk-22 (>= 22.0.1+8-0ppa1), libgtk-3-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
|
||||||
|
|||||||
Vendored
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
# 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-21-coffeelibs
|
JAVA_HOME = /usr/lib/jvm/java-22-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)
|
||||||
JMODS_PATH = jmods/amd64:${JAVA_HOME}/jmods
|
JMODS_PATH = jmods/amd64:${JAVA_HOME}/jmods
|
||||||
@@ -28,7 +28,7 @@ override_dh_auto_build:
|
|||||||
$(JAVA_HOME)/bin/jlink \
|
$(JAVA_HOME)/bin/jlink \
|
||||||
--output runtime \
|
--output runtime \
|
||||||
--module-path "${JMODS_PATH}" \
|
--module-path "${JMODS_PATH}" \
|
||||||
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net \
|
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net \
|
||||||
--strip-native-commands \
|
--strip-native-commands \
|
||||||
--no-header-files \
|
--no-header-files \
|
||||||
--no-man-pages \
|
--no-man-pages \
|
||||||
|
|||||||
Vendored
-14
@@ -1,14 +0,0 @@
|
|||||||
java-options=-Xss5m \
|
|
||||||
-Xmx256m \
|
|
||||||
--enable-preview \
|
|
||||||
--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64 \
|
|
||||||
-Dfile.encoding=\"utf-8\" \
|
|
||||||
-Dcryptomator.appVersion=\"${SEMVER_STR}\" \
|
|
||||||
-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\" \
|
|
||||||
-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\" \
|
|
||||||
-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\" \
|
|
||||||
-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\" \
|
|
||||||
-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\" \
|
|
||||||
-Dcryptomator.showTrayIcon=false \
|
|
||||||
-Dcryptomator.buildNumber=\"appimage-${REVISION_NUM}\" \
|
|
||||||
-Djdk.gtk.version=2
|
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
# created during build
|
# downloaded/created during build
|
||||||
Cryptomator.app/
|
Cryptomator.app/
|
||||||
runtime/
|
runtime/
|
||||||
dmg/
|
dmg/
|
||||||
*.dmg
|
*.dmg
|
||||||
license.rtf
|
license.rtf
|
||||||
|
openjfx-jmods.zip
|
||||||
|
*.jmod
|
||||||
Vendored
+13
-8
@@ -29,13 +29,17 @@ REVISION_NO=`git rev-list --count HEAD`
|
|||||||
VERSION_NO=`mvn -f../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout | sed -rn 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'`
|
VERSION_NO=`mvn -f../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout | sed -rn 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'`
|
||||||
FUSE_LIB="FUSE-T"
|
FUSE_LIB="FUSE-T"
|
||||||
|
|
||||||
ARCH="undefined"
|
JAVAFX_VERISON=22.0.1
|
||||||
|
JAVAFX_ARCH="undefined"
|
||||||
|
JAVAFX_JMODS_SHA256="undefined"
|
||||||
if [ "$(machine)" = "arm64e" ]; then
|
if [ "$(machine)" = "arm64e" ]; then
|
||||||
ARCH="aarch64"
|
JAVAFX_ARCH="aarch64"
|
||||||
|
JAVAFX_JMODS_SHA256="572fce94b9b09d316b960a49e3c2b5d35231ed0463e3b1c4020b8de89783b51d"
|
||||||
else
|
else
|
||||||
ARCH="x64"
|
JAVAFX_ARCH="x64"
|
||||||
|
JAVAFX_JMODS_SHA256="e07a11c112abbdebe7c058b44c151e1e475de748671d896aef3d73f32453c248"
|
||||||
fi
|
fi
|
||||||
OPENJFX_JMODS="https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_osx-${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
|
||||||
@@ -47,7 +51,8 @@ if [ -n "${CODESIGN_IDENTITY}" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# download and check jmods
|
# download and check jmods
|
||||||
curl -L ${OPENJFX_JMODS} -o openjfx-jmods.zip
|
curl -L ${JAVAFX_JMODS_URL} -o openjfx-jmods.zip
|
||||||
|
echo "${JAVAFX_JMODS_SHA256} openjfx-jmods.zip" | shasum -a256 --check
|
||||||
mkdir -p openjfx-jmods/
|
mkdir -p openjfx-jmods/
|
||||||
unzip -jo openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
|
unzip -jo openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
|
||||||
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
|
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
|
||||||
@@ -63,7 +68,7 @@ if [ "${POM_JFX_VERSION}" -ne "${JMOD_VERSION}" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# compile
|
# compile
|
||||||
mvn -B -f../../../pom.xml clean package -DskipTests -Pmac
|
mvn -B -Djavafx.platform=mac -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
|
||||||
|
|
||||||
@@ -71,7 +76,7 @@ cp ../../../target/${MAIN_JAR_GLOB} ../../../target/mods
|
|||||||
${JAVA_HOME}/bin/jlink \
|
${JAVA_HOME}/bin/jlink \
|
||||||
--output runtime \
|
--output runtime \
|
||||||
--module-path "${JAVA_HOME}/jmods:openjfx-jmods" \
|
--module-path "${JAVA_HOME}/jmods:openjfx-jmods" \
|
||||||
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr \
|
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr \
|
||||||
--strip-native-commands \
|
--strip-native-commands \
|
||||||
--no-header-files \
|
--no-header-files \
|
||||||
--no-man-pages \
|
--no-man-pages \
|
||||||
@@ -118,7 +123,7 @@ sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" ${APP_NAME}.app/
|
|||||||
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" ${APP_NAME}.app/Contents/Info.plist
|
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" ${APP_NAME}.app/Contents/Info.plist
|
||||||
|
|
||||||
# generate license
|
# generate license
|
||||||
mvn -B -f../../../pom.xml license:add-third-party \
|
mvn -B -Djavafx.platform=mac -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 \
|
||||||
|
|||||||
Vendored
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>10.13.0</string>
|
<string>11</string>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>English</string>
|
<string>English</string>
|
||||||
<key>CFBundleAllowMixedLocalizations</key>
|
<key>CFBundleAllowMixedLocalizations</key>
|
||||||
|
|||||||
@@ -6,4 +6,5 @@ installer
|
|||||||
*.msi
|
*.msi
|
||||||
*.exe
|
*.exe
|
||||||
*.jmod
|
*.jmod
|
||||||
|
resources/jfxJmods.zip
|
||||||
license.rtf
|
license.rtf
|
||||||
Vendored
+17
-16
@@ -41,7 +41,7 @@ Write-Output "`$Env:JAVA_HOME=$Env:JAVA_HOME"
|
|||||||
$copyright = "(C) $CopyrightStartYear - $((Get-Date).Year) $Vendor"
|
$copyright = "(C) $CopyrightStartYear - $((Get-Date).Year) $Vendor"
|
||||||
|
|
||||||
# compile
|
# compile
|
||||||
&mvn -B -f $buildDir/../../pom.xml clean package -DskipTests -Pwin
|
&mvn -B -f $buildDir/../../pom.xml clean package -DskipTests -Pwin -Djavafx.platform=win
|
||||||
Copy-Item "$buildDir\..\..\target\$MainJarGlob.jar" -Destination "$buildDir\..\..\target\mods"
|
Copy-Item "$buildDir\..\..\target\$MainJarGlob.jar" -Destination "$buildDir\..\..\target\mods"
|
||||||
|
|
||||||
# add runtime
|
# add runtime
|
||||||
@@ -51,21 +51,22 @@ if ($clean -and (Test-Path -Path $runtimeImagePath)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
## download jfx jmods
|
## download jfx jmods
|
||||||
$jmodsVersion='21.0.1'
|
$javaFxVersion='22.0.1'
|
||||||
$jmodsUrl = "https://download2.gluonhq.com/openjfx/${jmodsVersion}/openjfx-${jmodsVersion}_windows-x64_bin-jmods.zip"
|
$javaFxJmodsUrl = "https://download2.gluonhq.com/openjfx/${javaFxVersion}/openjfx-${javaFxVersion}_windows-x64_bin-jmods.zip"
|
||||||
$jfxJmodsChecksum = 'daf8acae631c016c24cfe23f88469400274d3441dd890615a42dfb501f3eb94a'
|
$javaFxJmodsSHA256 = 'de82e53179032a49bec005deb4438e8f261d08c4b58864a5c17e1d87286b09dd'
|
||||||
$jfxJmodsZip = '.\resources\jfxJmods.zip'
|
$javaFxJmods = '.\resources\jfxJmods.zip'
|
||||||
if( !(Test-Path -Path $jfxJmodsZip) ) {
|
if( !(Test-Path -Path $javaFxJmods) ) {
|
||||||
Write-Output "Downloading ${jmodsUrl}..."
|
Write-Output "Downloading ${javaFxJmodsUrl}..."
|
||||||
Invoke-WebRequest $jmodsUrl -OutFile $jfxJmodsZip # redirects are followed by default
|
Invoke-WebRequest $javaFxJmodsUrl -OutFile $javaFxJmods # redirects are followed by default
|
||||||
}
|
}
|
||||||
|
|
||||||
$jmodsChecksumActual = $(Get-FileHash -Path $jfxJmodsZip -Algorithm SHA256).Hash
|
$jmodsChecksumActual = $(Get-FileHash -Path $javaFxJmods -Algorithm SHA256).Hash
|
||||||
if( $jmodsChecksumActual -ne $jfxJmodsChecksum ) {
|
if( $jmodsChecksumActual -ne $javaFxJmodsSHA256 ) {
|
||||||
Write-Error "Checksum mismatch for jfxJmods.zip. Expected: $jfxJmodsChecksum, actual: $jmodsChecksumActual"
|
Write-Error "Checksum mismatch for jfxJmods.zip. Expected: $javaFxJmodsSHA256
|
||||||
|
, actual: $jmodsChecksumActual"
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
Expand-Archive -Path $jfxJmodsZip -Force -DestinationPath ".\resources\"
|
Expand-Archive -Path $javaFxJmods -Force -DestinationPath ".\resources\"
|
||||||
Remove-Item -Recurse -Force -Path ".\resources\javafx-jmods"
|
Remove-Item -Recurse -Force -Path ".\resources\javafx-jmods"
|
||||||
Move-Item -Force -Path ".\resources\javafx-jmods-*" -Destination ".\resources\javafx-jmods" -ErrorAction Stop
|
Move-Item -Force -Path ".\resources\javafx-jmods-*" -Destination ".\resources\javafx-jmods" -ErrorAction Stop
|
||||||
|
|
||||||
@@ -74,7 +75,7 @@ Move-Item -Force -Path ".\resources\javafx-jmods-*" -Destination ".\resources\ja
|
|||||||
--verbose `
|
--verbose `
|
||||||
--output runtime `
|
--output runtime `
|
||||||
--module-path "$Env:JAVA_HOME/jmods;$buildDir/resources/javafx-jmods" `
|
--module-path "$Env:JAVA_HOME/jmods;$buildDir/resources/javafx-jmods" `
|
||||||
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr,javafx.base,javafx.graphics,javafx.controls,javafx.fxml `
|
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.accessibility,jdk.management.jfr,javafx.base,javafx.graphics,javafx.controls,javafx.fxml `
|
||||||
--strip-native-commands `
|
--strip-native-commands `
|
||||||
--no-header-files `
|
--no-header-files `
|
||||||
--no-man-pages `
|
--no-man-pages `
|
||||||
@@ -121,7 +122,7 @@ if ($clean -and (Test-Path -Path $appPath)) {
|
|||||||
--icon resources/$AppName.ico
|
--icon resources/$AppName.ico
|
||||||
|
|
||||||
#Create RTF license for msi
|
#Create RTF license for msi
|
||||||
&mvn -B -f $buildDir/../../pom.xml license:add-third-party `
|
&mvn -B -f $buildDir/../../pom.xml license:add-third-party -Djavafx.platform=win `
|
||||||
"-Dlicense.thirdPartyFilename=license.rtf" `
|
"-Dlicense.thirdPartyFilename=license.rtf" `
|
||||||
"-Dlicense.fileTemplate=$buildDir\resources\licenseTemplate.ftl" `
|
"-Dlicense.fileTemplate=$buildDir\resources\licenseTemplate.ftl" `
|
||||||
"-Dlicense.outputDirectory=$buildDir\resources\" `
|
"-Dlicense.outputDirectory=$buildDir\resources\" `
|
||||||
@@ -166,7 +167,7 @@ $Env:JP_WIXHELPER_DIR = "."
|
|||||||
--file-associations resources/FAvaultFile.properties
|
--file-associations resources/FAvaultFile.properties
|
||||||
|
|
||||||
#Create RTF license for bundle
|
#Create RTF license for bundle
|
||||||
&mvn -B -f $buildDir/../../pom.xml license:add-third-party `
|
&mvn -B -f $buildDir/../../pom.xml license:add-third-party -Djavafx.platform=win `
|
||||||
"-Dlicense.thirdPartyFilename=license.rtf" `
|
"-Dlicense.thirdPartyFilename=license.rtf" `
|
||||||
"-Dlicense.fileTemplate=$buildDir\bundle\resources\licenseTemplate.ftl" `
|
"-Dlicense.fileTemplate=$buildDir\bundle\resources\licenseTemplate.ftl" `
|
||||||
"-Dlicense.outputDirectory=$buildDir\bundle\resources\" `
|
"-Dlicense.outputDirectory=$buildDir\bundle\resources\" `
|
||||||
@@ -181,7 +182,7 @@ Write-Output "Downloading ${winfspMsiUrl}..."
|
|||||||
Invoke-WebRequest $winfspMsiUrl -OutFile ".\bundle\resources\winfsp.msi" # redirects are followed by default
|
Invoke-WebRequest $winfspMsiUrl -OutFile ".\bundle\resources\winfsp.msi" # redirects are followed by default
|
||||||
|
|
||||||
# download legacy-winfsp uninstaller
|
# download legacy-winfsp uninstaller
|
||||||
$winfspUninstaller= 'https://github.com/cryptomator/winfsp-uninstaller/releases/download/1.0.0/winfsp-uninstaller.exe'
|
$winfspUninstaller= 'https://github.com/cryptomator/winfsp-uninstaller/releases/latest/download/winfsp-uninstaller.exe'
|
||||||
Write-Output "Downloading ${winfspUninstaller}..."
|
Write-Output "Downloading ${winfspUninstaller}..."
|
||||||
Invoke-WebRequest $winfspUninstaller -OutFile ".\bundle\resources\winfsp-uninstaller.exe" # redirects are followed by default
|
Invoke-WebRequest $winfspUninstaller -OutFile ".\bundle\resources\winfsp-uninstaller.exe" # redirects are followed by default
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
@echo off
|
|
||||||
:: see comments in file ./version170-migrate-settings.ps1
|
|
||||||
|
|
||||||
cd %~dp0
|
|
||||||
powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command .\version170-migrate-settings.ps1
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# This script migrates Cryptomator settings for all local users on Windows in case the users uses custom directories as mountpoint
|
|
||||||
# See also https://github.com/cryptomator/cryptomator/pull/2654.
|
|
||||||
#
|
|
||||||
# TODO: This script should be evaluated in a yearly interval if it is still needed and if not, should be removed
|
|
||||||
#
|
|
||||||
#Requires -RunAsAdministrator
|
|
||||||
|
|
||||||
#Get all active, local user profiles
|
|
||||||
$profileList = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
|
|
||||||
Get-ChildItem $profileList | ForEach-Object {
|
|
||||||
$profilePath = $_.GetValue("ProfileImagePath")
|
|
||||||
$settingsPath = "$profilePath\AppData\Roaming\Cryptomator\settings.json"
|
|
||||||
if(!(Test-Path -Path $settingsPath -PathType Leaf)) {
|
|
||||||
#No settings file, nothing to do.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$settings = Get-Content -Path $settingsPath | ConvertFrom-Json
|
|
||||||
if($settings.preferredVolumeImpl -ne "FUSE") {
|
|
||||||
#Fuse not used, nothing to do
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
#check if customMountPoints are used
|
|
||||||
$atLeastOneCustomPath = $false;
|
|
||||||
foreach ($vault in $settings.directories){
|
|
||||||
$atLeastOneCustomPath = $atLeastOneCustomPath -or ($vault.useCustomMountPath -eq "True")
|
|
||||||
}
|
|
||||||
|
|
||||||
#if so, use WinFsp Local Drive
|
|
||||||
if( $atLeastOneCustomPath ) {
|
|
||||||
Add-Member -Force -InputObject $settings -Name "mountService" -Value "org.cryptomator.frontend.fuse.mount.WinFspMountProvider" -MemberType NoteProperty
|
|
||||||
$newSettings = $settings | Select-Object * -ExcludeProperty "preferredVolumeImpl"
|
|
||||||
ConvertTo-Json $newSettings | Set-Content -Path $settingsPath
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Vendored
-6
@@ -139,11 +139,6 @@
|
|||||||
Sequence="execute" Before="PatchWebDAV" />
|
Sequence="execute" Before="PatchWebDAV" />
|
||||||
<CustomAction Id="PatchWebDAV" BinaryKey="WixCA" DllEntry="WixQuietExec64" Execute="deferred" Return="ignore" Impersonate="no"/>
|
<CustomAction Id="PatchWebDAV" BinaryKey="WixCA" DllEntry="WixQuietExec64" Execute="deferred" Return="ignore" Impersonate="no"/>
|
||||||
|
|
||||||
<!-- Special Settings migration for 1.7.0,. Should be removed eventually, for more info, see ../contrib/version170-migrate-settings.ps1-->
|
|
||||||
<SetProperty Id="V170MigrateSettings" Value=""[INSTALLDIR]version170-migrate-settings.bat""
|
|
||||||
Sequence="execute" Before="V170MigrateSettings" />
|
|
||||||
<CustomAction Id="V170MigrateSettings" BinaryKey="WixCA" DllEntry="WixQuietExec64" Execute="deferred" Return="ignore" Impersonate="no"/>
|
|
||||||
|
|
||||||
<!-- Running App detection and exit -->
|
<!-- Running App detection and exit -->
|
||||||
<Property Id="FOUNDRUNNINGAPP" Admin="yes"/>
|
<Property Id="FOUNDRUNNINGAPP" Admin="yes"/>
|
||||||
<util:CloseApplication
|
<util:CloseApplication
|
||||||
@@ -195,7 +190,6 @@
|
|||||||
<RemoveExistingProducts After="InstallValidate"/> <!-- Moved from CostInitialize, due to WixCloseApplications -->
|
<RemoveExistingProducts After="InstallValidate"/> <!-- Moved from CostInitialize, due to WixCloseApplications -->
|
||||||
|
|
||||||
<Custom Action="PatchWebDAV" After="InstallFiles">NOT Installed OR REINSTALL</Custom>
|
<Custom Action="PatchWebDAV" After="InstallFiles">NOT Installed OR REINSTALL</Custom>
|
||||||
<Custom Action="V170MigrateSettings" After="InstallFiles">NOT Installed OR REINSTALL</Custom>
|
|
||||||
</InstallExecuteSequence>
|
</InstallExecuteSequence>
|
||||||
|
|
||||||
<InstallUISequence>
|
<InstallUISequence>
|
||||||
|
|||||||
@@ -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.12.0</version>
|
<version>1.13.0</version>
|
||||||
<name>Cryptomator Desktop App</name>
|
<name>Cryptomator Desktop App</name>
|
||||||
|
|
||||||
<organization>
|
<organization>
|
||||||
@@ -26,56 +26,60 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.jdk.version>21</project.jdk.version>
|
<project.jdk.version>22</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) -->
|
||||||
<nonModularGroupIds>org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents</nonModularGroupIds>
|
<nonModularGroupIds>org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents</nonModularGroupIds>
|
||||||
|
|
||||||
<!-- cryptomator dependencies -->
|
<!-- cryptomator dependencies -->
|
||||||
<cryptomator.cryptofs.version>2.6.8</cryptomator.cryptofs.version>
|
<cryptomator.cryptofs.version>2.6.9</cryptomator.cryptofs.version>
|
||||||
<cryptomator.integrations.version>1.3.0</cryptomator.integrations.version>
|
<cryptomator.integrations.version>1.3.1</cryptomator.integrations.version>
|
||||||
<cryptomator.integrations.win.version>1.2.5</cryptomator.integrations.win.version>
|
<cryptomator.integrations.win.version>1.2.5</cryptomator.integrations.win.version>
|
||||||
<cryptomator.integrations.mac.version>1.2.3</cryptomator.integrations.mac.version>
|
<cryptomator.integrations.mac.version>1.2.4</cryptomator.integrations.mac.version>
|
||||||
<cryptomator.integrations.linux.version>1.4.2</cryptomator.integrations.linux.version>
|
<cryptomator.integrations.linux.version>1.4.5</cryptomator.integrations.linux.version>
|
||||||
<cryptomator.fuse.version>4.0.0</cryptomator.fuse.version>
|
<cryptomator.fuse.version>5.0.0</cryptomator.fuse.version>
|
||||||
<cryptomator.dokany.version>2.0.0</cryptomator.dokany.version>
|
|
||||||
<cryptomator.webdav.version>2.0.6</cryptomator.webdav.version>
|
<cryptomator.webdav.version>2.0.6</cryptomator.webdav.version>
|
||||||
|
|
||||||
<!-- 3rd party dependencies -->
|
<!-- 3rd party dependencies -->
|
||||||
<commons-lang3.version>3.14.0</commons-lang3.version>
|
<commons-lang3.version>3.14.0</commons-lang3.version>
|
||||||
<dagger.version>2.50</dagger.version>
|
<dagger.version>2.51.1</dagger.version>
|
||||||
<easybind.version>2.2</easybind.version>
|
<easybind.version>2.2</easybind.version>
|
||||||
<guava.version>33.0.0-jre</guava.version>
|
<guava.version>33.2.1-jre</guava.version>
|
||||||
<jackson.version>2.16.1</jackson.version>
|
<jackson.version>2.17.1</jackson.version>
|
||||||
<javafx.version>21.0.1</javafx.version>
|
<javafx.version>22.0.1</javafx.version>
|
||||||
<jwt.version>4.4.0</jwt.version>
|
<jwt.version>4.4.0</jwt.version>
|
||||||
<nimbus-jose.version>9.37.3</nimbus-jose.version>
|
<nimbus-jose.version>9.37.3</nimbus-jose.version>
|
||||||
<logback.version>1.4.14</logback.version>
|
<logback.version>1.5.6</logback.version>
|
||||||
<slf4j.version>2.0.11</slf4j.version>
|
<slf4j.version>2.0.13</slf4j.version>
|
||||||
<tinyoauth2.version>0.8.0</tinyoauth2.version>
|
<tinyoauth2.version>0.8.0</tinyoauth2.version>
|
||||||
<zxcvbn.version>1.8.2</zxcvbn.version>
|
<zxcvbn.version>1.9.0</zxcvbn.version>
|
||||||
|
|
||||||
<!-- test dependencies -->
|
<!-- test dependencies -->
|
||||||
<junit.jupiter.version>5.10.2</junit.jupiter.version>
|
<junit.jupiter.version>5.10.2</junit.jupiter.version>
|
||||||
<mockito.version>5.10.0</mockito.version>
|
<mockito.version>5.12.0</mockito.version>
|
||||||
<hamcrest.version>2.2</hamcrest.version>
|
<hamcrest.version>2.2</hamcrest.version>
|
||||||
|
|
||||||
<!-- build-time dependencies -->
|
<!-- build-time dependencies -->
|
||||||
<jetbrains.annotations.version>24.1.0</jetbrains.annotations.version>
|
<jetbrains.annotations.version>24.1.0</jetbrains.annotations.version>
|
||||||
<dependency-check.version>9.0.9</dependency-check.version>
|
<dependency-check.version>9.2.0</dependency-check.version>
|
||||||
<jacoco.version>0.8.11</jacoco.version>
|
<jacoco.version>0.8.12</jacoco.version>
|
||||||
<license-generator.version>2.4.0</license-generator.version>
|
<license-generator.version>2.4.0</license-generator.version>
|
||||||
<junit-tree-reporter.version>1.2.1</junit-tree-reporter.version>
|
<junit-tree-reporter.version>1.2.1</junit-tree-reporter.version>
|
||||||
<mvn-compiler.version>3.12.1</mvn-compiler.version>
|
<mvn-compiler.version>3.13.0</mvn-compiler.version>
|
||||||
<mvn-resources.version>3.3.1</mvn-resources.version>
|
<mvn-resources.version>3.3.1</mvn-resources.version>
|
||||||
<mvn-dependency.version>3.6.1</mvn-dependency.version>
|
<mvn-dependency.version>3.7.0</mvn-dependency.version>
|
||||||
<mvn-surefire.version>3.2.5</mvn-surefire.version>
|
<mvn-surefire.version>3.3.0</mvn-surefire.version>
|
||||||
<mvn-jar.version>3.3.0</mvn-jar.version>
|
<mvn-jar.version>3.4.1</mvn-jar.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- Cryptomator Libs -->
|
<!-- Cryptomator Libs -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.cryptomator</groupId>
|
||||||
|
<artifactId>cryptolib</artifactId>
|
||||||
|
<version>2.2.0</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.cryptomator</groupId>
|
<groupId>org.cryptomator</groupId>
|
||||||
<artifactId>cryptofs</artifactId>
|
<artifactId>cryptofs</artifactId>
|
||||||
@@ -86,11 +90,6 @@
|
|||||||
<artifactId>fuse-nio-adapter</artifactId>
|
<artifactId>fuse-nio-adapter</artifactId>
|
||||||
<version>${cryptomator.fuse.version}</version>
|
<version>${cryptomator.fuse.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.cryptomator</groupId>
|
|
||||||
<artifactId>dokany-nio-adapter</artifactId>
|
|
||||||
<version>${cryptomator.dokany.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.cryptomator</groupId>
|
<groupId>org.cryptomator</groupId>
|
||||||
<artifactId>webdav-nio-adapter</artifactId>
|
<artifactId>webdav-nio-adapter</artifactId>
|
||||||
@@ -164,11 +163,18 @@
|
|||||||
<artifactId>nimbus-jose-jwt</artifactId>
|
<artifactId>nimbus-jose-jwt</artifactId>
|
||||||
<version>${nimbus-jose.version}</version>
|
<version>${nimbus-jose.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Jackson -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
<artifactId>jackson-databind</artifactId>
|
<artifactId>jackson-databind</artifactId>
|
||||||
<version>${jackson.version}</version>
|
<version>${jackson.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||||
|
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||||
|
<version>${jackson.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- EasyBind -->
|
<!-- EasyBind -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ open module org.cryptomator.desktop {
|
|||||||
|
|
||||||
requires org.cryptomator.cryptolib;
|
requires org.cryptomator.cryptolib;
|
||||||
requires org.cryptomator.cryptofs;
|
requires org.cryptomator.cryptofs;
|
||||||
requires org.cryptomator.frontend.dokany;
|
|
||||||
requires org.cryptomator.frontend.fuse;
|
requires org.cryptomator.frontend.fuse;
|
||||||
requires org.cryptomator.frontend.webdav;
|
requires org.cryptomator.frontend.webdav;
|
||||||
requires org.cryptomator.integrations.api;
|
requires org.cryptomator.integrations.api;
|
||||||
@@ -32,13 +31,13 @@ open module org.cryptomator.desktop {
|
|||||||
requires javafx.graphics;
|
requires javafx.graphics;
|
||||||
requires javafx.controls;
|
requires javafx.controls;
|
||||||
requires javafx.fxml;
|
requires javafx.fxml;
|
||||||
requires jdk.crypto.ec;
|
|
||||||
// 3rd party:
|
// 3rd party:
|
||||||
requires ch.qos.logback.classic;
|
requires ch.qos.logback.classic;
|
||||||
requires ch.qos.logback.core;
|
requires ch.qos.logback.core;
|
||||||
requires com.auth0.jwt;
|
requires com.auth0.jwt;
|
||||||
requires com.google.common;
|
requires com.google.common;
|
||||||
requires com.fasterxml.jackson.databind;
|
requires com.fasterxml.jackson.databind;
|
||||||
|
requires com.fasterxml.jackson.datatype.jsr310;
|
||||||
requires com.nimbusds.jose.jwt;
|
requires com.nimbusds.jose.jwt;
|
||||||
requires com.nulabinc.zxcvbn;
|
requires com.nulabinc.zxcvbn;
|
||||||
requires com.tobiasdiez.easybind;
|
requires com.tobiasdiez.easybind;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class SubstitutingProperties extends PropertiesDecorator {
|
public class SubstitutingProperties extends PropertiesDecorator {
|
||||||
@@ -58,7 +59,7 @@ public class SubstitutingProperties extends PropertiesDecorator {
|
|||||||
LoggerFactory.getLogger(SubstitutingProperties.class).warn("Variable {} used for substitution not found in {}. Replaced with empty string.", key, src);
|
LoggerFactory.getLogger(SubstitutingProperties.class).warn("Variable {} used for substitution not found in {}. Replaced with empty string.", key, src);
|
||||||
return "";
|
return "";
|
||||||
} else {
|
} else {
|
||||||
return val.replace("\\", "\\\\");
|
return Matcher.quoteReplacement(val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import org.cryptomator.integrations.mount.Mount;
|
|||||||
import org.cryptomator.integrations.mount.MountBuilder;
|
import org.cryptomator.integrations.mount.MountBuilder;
|
||||||
import org.cryptomator.integrations.mount.MountFailedException;
|
import org.cryptomator.integrations.mount.MountFailedException;
|
||||||
import org.cryptomator.integrations.mount.MountService;
|
import org.cryptomator.integrations.mount.MountService;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
@@ -28,6 +30,8 @@ import static org.cryptomator.integrations.mount.MountCapability.UNMOUNT_FORCED;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class Mounter {
|
public class Mounter {
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(Mounter.class);
|
||||||
|
|
||||||
// mount providers (key) can not be used if any of the conflicting mount providers (values) are already in use
|
// mount providers (key) can not be used if any of the conflicting mount providers (values) are already in use
|
||||||
private static final Map<String, Set<String>> CONFLICTING_MOUNT_SERVICES = Map.of(
|
private static final Map<String, Set<String>> CONFLICTING_MOUNT_SERVICES = Map.of(
|
||||||
"org.cryptomator.frontend.fuse.mount.MacFuseMountProvider", Set.of("org.cryptomator.frontend.fuse.mount.FuseTMountProvider"),
|
"org.cryptomator.frontend.fuse.mount.MacFuseMountProvider", Set.of("org.cryptomator.frontend.fuse.mount.FuseTMountProvider"),
|
||||||
@@ -127,9 +131,7 @@ public class Mounter {
|
|||||||
}
|
}
|
||||||
} else if (canMountToParent && !canMountToDir) {
|
} else if (canMountToParent && !canMountToDir) {
|
||||||
MountWithinParentUtil.prepareParentNoMountPoint(userChosenMountPoint);
|
MountWithinParentUtil.prepareParentNoMountPoint(userChosenMountPoint);
|
||||||
cleanup = () -> {
|
cleanup = () -> MountWithinParentUtil.cleanup(userChosenMountPoint);
|
||||||
MountWithinParentUtil.cleanup(userChosenMountPoint);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
builder.setMountpoint(userChosenMountPoint);
|
builder.setMountpoint(userChosenMountPoint);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import javafx.beans.property.StringProperty;
|
|||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.geometry.NodeOrientation;
|
import javafx.geometry.NodeOrientation;
|
||||||
|
import java.time.Instant;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class Settings {
|
public class Settings {
|
||||||
@@ -44,8 +45,7 @@ public class Settings {
|
|||||||
static final String DEFAULT_KEYCHAIN_PROVIDER = SystemUtils.IS_OS_WINDOWS ? "org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess" : SystemUtils.IS_OS_MAC ? "org.cryptomator.macos.keychain.MacSystemKeychainAccess" : "org.cryptomator.linux.keychain.SecretServiceKeychainAccess";
|
static final String DEFAULT_KEYCHAIN_PROVIDER = SystemUtils.IS_OS_WINDOWS ? "org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess" : SystemUtils.IS_OS_MAC ? "org.cryptomator.macos.keychain.MacSystemKeychainAccess" : "org.cryptomator.linux.keychain.SecretServiceKeychainAccess";
|
||||||
static final String DEFAULT_USER_INTERFACE_ORIENTATION = NodeOrientation.LEFT_TO_RIGHT.name();
|
static final String DEFAULT_USER_INTERFACE_ORIENTATION = NodeOrientation.LEFT_TO_RIGHT.name();
|
||||||
static final boolean DEFAULT_SHOW_MINIMIZE_BUTTON = false;
|
static final boolean DEFAULT_SHOW_MINIMIZE_BUTTON = false;
|
||||||
static final String DEFAULT_LAST_UPDATE_CHECK = "2000-01-01";
|
public static final Instant DEFAULT_TIMESTAMP = Instant.parse("2000-01-01T00:00:00Z");
|
||||||
|
|
||||||
public final ObservableList<VaultSettings> directories;
|
public final ObservableList<VaultSettings> directories;
|
||||||
public final BooleanProperty askedForUpdateCheck;
|
public final BooleanProperty askedForUpdateCheck;
|
||||||
public final BooleanProperty checkForUpdates;
|
public final BooleanProperty checkForUpdates;
|
||||||
@@ -67,7 +67,7 @@ public class Settings {
|
|||||||
public final IntegerProperty windowHeight;
|
public final IntegerProperty windowHeight;
|
||||||
public final StringProperty language;
|
public final StringProperty language;
|
||||||
public final StringProperty mountService;
|
public final StringProperty mountService;
|
||||||
public final StringProperty lastUpdateCheck;
|
public final ObjectProperty<Instant> lastSuccessfulUpdateCheck;
|
||||||
|
|
||||||
private Consumer<Settings> saveCmd;
|
private Consumer<Settings> saveCmd;
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ public class Settings {
|
|||||||
this.windowHeight = new SimpleIntegerProperty(this, "windowHeight", json.windowHeight);
|
this.windowHeight = new SimpleIntegerProperty(this, "windowHeight", json.windowHeight);
|
||||||
this.language = new SimpleStringProperty(this, "language", json.language);
|
this.language = new SimpleStringProperty(this, "language", json.language);
|
||||||
this.mountService = new SimpleStringProperty(this, "mountService", json.mountService);
|
this.mountService = new SimpleStringProperty(this, "mountService", json.mountService);
|
||||||
this.lastUpdateCheck = new SimpleStringProperty(this, "lastUpdateCheck", json.lastUpdateCheck);
|
this.lastSuccessfulUpdateCheck = new SimpleObjectProperty<>(this, "lastSuccessfulUpdateCheck", json.lastSuccessfulUpdateCheck);
|
||||||
|
|
||||||
this.directories.addAll(json.directories.stream().map(VaultSettings::new).toList());
|
this.directories.addAll(json.directories.stream().map(VaultSettings::new).toList());
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ public class Settings {
|
|||||||
windowHeight.addListener(this::somethingChanged);
|
windowHeight.addListener(this::somethingChanged);
|
||||||
language.addListener(this::somethingChanged);
|
language.addListener(this::somethingChanged);
|
||||||
mountService.addListener(this::somethingChanged);
|
mountService.addListener(this::somethingChanged);
|
||||||
lastUpdateCheck.addListener(this::somethingChanged);
|
lastSuccessfulUpdateCheck.addListener(this::somethingChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@@ -185,7 +185,7 @@ public class Settings {
|
|||||||
json.windowHeight = windowHeight.get();
|
json.windowHeight = windowHeight.get();
|
||||||
json.language = language.get();
|
json.language = language.get();
|
||||||
json.mountService = mountService.get();
|
json.mountService = mountService.get();
|
||||||
json.lastUpdateCheck = lastUpdateCheck.get();
|
json.lastSuccessfulUpdateCheck = lastSuccessfulUpdateCheck.get();
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package org.cryptomator.common.settings;
|
package org.cryptomator.common.settings;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
@@ -80,7 +82,8 @@ class SettingsJson {
|
|||||||
@JsonProperty(value = "preferredVolumeImpl", access = JsonProperty.Access.WRITE_ONLY) // WRITE_ONLY means value is "written" into the java object during deserialization. Upvote this: https://github.com/FasterXML/jackson-annotations/issues/233
|
@JsonProperty(value = "preferredVolumeImpl", access = JsonProperty.Access.WRITE_ONLY) // WRITE_ONLY means value is "written" into the java object during deserialization. Upvote this: https://github.com/FasterXML/jackson-annotations/issues/233
|
||||||
String preferredVolumeImpl;
|
String preferredVolumeImpl;
|
||||||
|
|
||||||
@JsonProperty("lastUpdateCheck")
|
@JsonProperty("lastSuccessfulUpdateCheck")
|
||||||
String lastUpdateCheck = Settings.DEFAULT_LAST_UPDATE_CHECK;
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'", timezone = "UTC")
|
||||||
|
Instant lastSuccessfulUpdateCheck = Settings.DEFAULT_TIMESTAMP;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ package org.cryptomator.common.settings;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.core.JacksonException;
|
import com.fasterxml.jackson.core.JacksonException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
import com.google.common.base.Suppliers;
|
import com.google.common.base.Suppliers;
|
||||||
import org.cryptomator.common.Environment;
|
import org.cryptomator.common.Environment;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -36,7 +37,7 @@ import java.util.stream.Stream;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class SettingsProvider implements Supplier<Settings> {
|
public class SettingsProvider implements Supplier<Settings> {
|
||||||
|
|
||||||
private static final ObjectMapper JSON = new ObjectMapper().setDefaultLeniency(true);
|
private static final ObjectMapper JSON = new ObjectMapper().setDefaultLeniency(true).registerModule(new JavaTimeModule());
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(SettingsProvider.class);
|
private static final Logger LOG = LoggerFactory.getLogger(SettingsProvider.class);
|
||||||
private static final long SAVE_DELAY_MS = 1000;
|
private static final long SAVE_DELAY_MS = 1000;
|
||||||
|
|
||||||
|
|||||||
+61
-15
@@ -13,31 +13,37 @@ 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.beans.binding.Bindings;
|
||||||
import javafx.beans.binding.BooleanBinding;
|
import javafx.beans.binding.BooleanBinding;
|
||||||
import javafx.beans.property.BooleanProperty;
|
import javafx.beans.property.BooleanProperty;
|
||||||
import javafx.beans.property.ObjectProperty;
|
import javafx.beans.property.ObjectProperty;
|
||||||
import javafx.beans.property.SimpleBooleanProperty;
|
import javafx.beans.property.SimpleBooleanProperty;
|
||||||
import javafx.beans.property.StringProperty;
|
import javafx.beans.property.StringProperty;
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
|
import javafx.collections.FXCollections;
|
||||||
|
import javafx.collections.ObservableList;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.Node;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.RadioButton;
|
import javafx.scene.control.RadioButton;
|
||||||
import javafx.scene.control.Toggle;
|
import javafx.scene.control.Toggle;
|
||||||
import javafx.scene.control.ToggleGroup;
|
import javafx.scene.control.ToggleGroup;
|
||||||
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import javafx.stage.DirectoryChooser;
|
import javafx.stage.DirectoryChooser;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
import javafx.stage.WindowEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.nio.file.StandardOpenOption;
|
import java.nio.file.StandardOpenOption;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
@AddVaultWizardScoped
|
@AddVaultWizardScoped
|
||||||
public class CreateNewVaultLocationController implements FxController {
|
public class CreateNewVaultLocationController implements FxController {
|
||||||
@@ -49,19 +55,23 @@ public class CreateNewVaultLocationController implements FxController {
|
|||||||
private final Stage window;
|
private final Stage window;
|
||||||
private final Lazy<Scene> chooseNameScene;
|
private final Lazy<Scene> chooseNameScene;
|
||||||
private final Lazy<Scene> chooseExpertSettingsScene;
|
private final Lazy<Scene> chooseExpertSettingsScene;
|
||||||
private final List<RadioButton> locationPresetBtns;
|
|
||||||
private final ObjectProperty<Path> vaultPath;
|
private final ObjectProperty<Path> vaultPath;
|
||||||
private final StringProperty vaultName;
|
private final StringProperty vaultName;
|
||||||
|
private final ExecutorService backgroundExecutor;
|
||||||
private final ResourceBundle resourceBundle;
|
private final ResourceBundle resourceBundle;
|
||||||
private final ObservableValue<VaultPathStatus> vaultPathStatus;
|
private final ObservableValue<VaultPathStatus> vaultPathStatus;
|
||||||
private final ObservableValue<Boolean> validVaultPath;
|
private final ObservableValue<Boolean> validVaultPath;
|
||||||
private final BooleanProperty usePresetPath;
|
private final BooleanProperty usePresetPath;
|
||||||
|
private final BooleanProperty loadingPresetLocations = new SimpleBooleanProperty(false);
|
||||||
|
private final ObservableList<Node> radioButtons;
|
||||||
|
private final ObservableList<Node> sortedRadioButtons;
|
||||||
|
|
||||||
private Path customVaultPath = DEFAULT_CUSTOM_VAULT_PATH;
|
private Path customVaultPath = DEFAULT_CUSTOM_VAULT_PATH;
|
||||||
|
|
||||||
//FXML
|
//FXML
|
||||||
public ToggleGroup locationPresetsToggler;
|
public ToggleGroup locationPresetsToggler;
|
||||||
public VBox radioButtonVBox;
|
public VBox radioButtonVBox;
|
||||||
|
public HBox customLocationRadioBtn;
|
||||||
public RadioButton customRadioButton;
|
public RadioButton customRadioButton;
|
||||||
public Label locationStatusLabel;
|
public Label locationStatusLabel;
|
||||||
public FontAwesome5IconView goodLocation;
|
public FontAwesome5IconView goodLocation;
|
||||||
@@ -73,25 +83,20 @@ public class CreateNewVaultLocationController implements FxController {
|
|||||||
@FxmlScene(FxmlFile.ADDVAULT_NEW_EXPERT_SETTINGS) Lazy<Scene> chooseExpertSettingsScene, //
|
@FxmlScene(FxmlFile.ADDVAULT_NEW_EXPERT_SETTINGS) Lazy<Scene> chooseExpertSettingsScene, //
|
||||||
ObjectProperty<Path> vaultPath, //
|
ObjectProperty<Path> vaultPath, //
|
||||||
@Named("vaultName") StringProperty vaultName, //
|
@Named("vaultName") StringProperty vaultName, //
|
||||||
ResourceBundle resourceBundle) {
|
ExecutorService backgroundExecutor, ResourceBundle resourceBundle) {
|
||||||
this.window = window;
|
this.window = window;
|
||||||
this.chooseNameScene = chooseNameScene;
|
this.chooseNameScene = chooseNameScene;
|
||||||
this.chooseExpertSettingsScene = chooseExpertSettingsScene;
|
this.chooseExpertSettingsScene = chooseExpertSettingsScene;
|
||||||
this.vaultPath = vaultPath;
|
this.vaultPath = vaultPath;
|
||||||
this.vaultName = vaultName;
|
this.vaultName = vaultName;
|
||||||
|
this.backgroundExecutor = backgroundExecutor;
|
||||||
this.resourceBundle = resourceBundle;
|
this.resourceBundle = resourceBundle;
|
||||||
this.vaultPathStatus = ObservableUtil.mapWithDefault(vaultPath, this::validatePath, new VaultPathStatus(false, "error.message"));
|
this.vaultPathStatus = ObservableUtil.mapWithDefault(vaultPath, this::validatePath, new VaultPathStatus(false, "error.message"));
|
||||||
this.validVaultPath = ObservableUtil.mapWithDefault(vaultPathStatus, VaultPathStatus::valid, false);
|
this.validVaultPath = ObservableUtil.mapWithDefault(vaultPathStatus, VaultPathStatus::valid, false);
|
||||||
this.vaultPathStatus.addListener(this::updateStatusLabel);
|
this.vaultPathStatus.addListener(this::updateStatusLabel);
|
||||||
this.usePresetPath = new SimpleBooleanProperty();
|
this.usePresetPath = new SimpleBooleanProperty();
|
||||||
this.locationPresetBtns = LocationPresetsProvider.loadAll(LocationPresetsProvider.class) //
|
this.radioButtons = FXCollections.observableArrayList();
|
||||||
.flatMap(LocationPresetsProvider::getLocations) //
|
this.sortedRadioButtons = radioButtons.sorted(this::compareLocationPresets);
|
||||||
.sorted(Comparator.comparing(LocationPreset::name)) //
|
|
||||||
.map(preset -> { //
|
|
||||||
var btn = new RadioButton(preset.name());
|
|
||||||
btn.setUserData(preset.path());
|
|
||||||
return btn;
|
|
||||||
}).toList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private VaultPathStatus validatePath(Path p) throws NullPointerException {
|
private VaultPathStatus validatePath(Path p) throws NullPointerException {
|
||||||
@@ -137,12 +142,45 @@ public class CreateNewVaultLocationController implements FxController {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
radioButtonVBox.getChildren().addAll(1, locationPresetBtns); //first item is the list header
|
var task = backgroundExecutor.submit(this::loadLocationPresets);
|
||||||
locationPresetsToggler.getToggles().addAll(locationPresetBtns);
|
window.addEventHandler(WindowEvent.WINDOW_HIDING, _ -> task.cancel(true));
|
||||||
locationPresetsToggler.selectedToggleProperty().addListener(this::togglePredefinedLocation);
|
locationPresetsToggler.selectedToggleProperty().addListener(this::togglePredefinedLocation);
|
||||||
usePresetPath.bind(locationPresetsToggler.selectedToggleProperty().isNotEqualTo(customRadioButton));
|
usePresetPath.bind(locationPresetsToggler.selectedToggleProperty().isNotEqualTo(customRadioButton));
|
||||||
|
radioButtons.add(customLocationRadioBtn);
|
||||||
|
Bindings.bindContent(radioButtonVBox.getChildren(), sortedRadioButtons); //to prevent garbage collection of the binding, we bind explicitly to the sorted list
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadLocationPresets() {
|
||||||
|
Platform.runLater(() -> loadingPresetLocations.set(true));
|
||||||
|
try {
|
||||||
|
LocationPresetsProvider.loadAll(LocationPresetsProvider.class) //
|
||||||
|
.flatMap(LocationPresetsProvider::getLocations) //we do not use sorted(), because it evaluates the stream elements, blocking until all elements are gathered
|
||||||
|
.forEach(this::createRadioButtonFor);
|
||||||
|
} finally {
|
||||||
|
Platform.runLater(() -> loadingPresetLocations.set(false));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createRadioButtonFor(LocationPreset preset) {
|
||||||
|
Platform.runLater(() -> {
|
||||||
|
var btn = new RadioButton(preset.name());
|
||||||
|
btn.setUserData(preset.path());
|
||||||
|
radioButtons.add(btn);
|
||||||
|
locationPresetsToggler.getToggles().add(btn);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private int compareLocationPresets(Node left, Node right) {
|
||||||
|
if (customLocationRadioBtn.getId().equals(left.getId())) {
|
||||||
|
return 1;
|
||||||
|
} else if (customLocationRadioBtn.getId().equals(right.getId())) {
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
return ((RadioButton) left).getText().compareToIgnoreCase(((RadioButton) right).getText());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void togglePredefinedLocation(@SuppressWarnings("unused") ObservableValue<? extends Toggle> observable, @SuppressWarnings("unused") Toggle oldValue, Toggle newValue) {
|
private void togglePredefinedLocation(@SuppressWarnings("unused") ObservableValue<? extends Toggle> observable, @SuppressWarnings("unused") Toggle oldValue, Toggle newValue) {
|
||||||
var storagePath = Optional.ofNullable((Path) newValue.getUserData()).orElse(customVaultPath);
|
var storagePath = Optional.ofNullable((Path) newValue.getUserData()).orElse(customVaultPath);
|
||||||
vaultPath.set(storagePath.resolve(vaultName.get()));
|
vaultPath.set(storagePath.resolve(vaultName.get()));
|
||||||
@@ -197,7 +235,15 @@ public class CreateNewVaultLocationController implements FxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isValidVaultPath() {
|
public boolean isValidVaultPath() {
|
||||||
return validVaultPath.getValue();
|
return Boolean.TRUE.equals(validVaultPath.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLoadingPresetLocations() {
|
||||||
|
return loadingPresetLocations.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BooleanProperty loadingPresetLocationsProperty() {
|
||||||
|
return loadingPresetLocations;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BooleanProperty usePresetPathProperty() {
|
public BooleanProperty usePresetPathProperty() {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public enum FxmlFile {
|
|||||||
CONVERTVAULT_HUBTOPASSWORD_START("/fxml/convertvault_hubtopassword_start.fxml"), //
|
CONVERTVAULT_HUBTOPASSWORD_START("/fxml/convertvault_hubtopassword_start.fxml"), //
|
||||||
CONVERTVAULT_HUBTOPASSWORD_CONVERT("/fxml/convertvault_hubtopassword_convert.fxml"), //
|
CONVERTVAULT_HUBTOPASSWORD_CONVERT("/fxml/convertvault_hubtopassword_convert.fxml"), //
|
||||||
CONVERTVAULT_HUBTOPASSWORD_SUCCESS("/fxml/convertvault_hubtopassword_success.fxml"), //
|
CONVERTVAULT_HUBTOPASSWORD_SUCCESS("/fxml/convertvault_hubtopassword_success.fxml"), //
|
||||||
|
DOKANY_SUPPORT_END("/fxml/dokany_support_end.fxml"), //
|
||||||
ERROR("/fxml/error.fxml"), //
|
ERROR("/fxml/error.fxml"), //
|
||||||
FORGET_PASSWORD("/fxml/forget_password.fxml"), //
|
FORGET_PASSWORD("/fxml/forget_password.fxml"), //
|
||||||
HEALTH_START("/fxml/health_start.fxml"), //
|
HEALTH_START("/fxml/health_start.fxml"), //
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package org.cryptomator.ui.dokanysupportend;
|
||||||
|
|
||||||
|
import dagger.Lazy;
|
||||||
|
import dagger.Subcomponent;
|
||||||
|
import org.cryptomator.ui.common.FxmlFile;
|
||||||
|
import org.cryptomator.ui.common.FxmlScene;
|
||||||
|
|
||||||
|
import javafx.scene.Scene;
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
|
@DokanySupportEndScoped
|
||||||
|
@Subcomponent(modules = {DokanySupportEndModule.class})
|
||||||
|
public interface DokanySupportEndComponent {
|
||||||
|
|
||||||
|
@DokanySupportEndWindow
|
||||||
|
Stage window();
|
||||||
|
|
||||||
|
@FxmlScene(FxmlFile.DOKANY_SUPPORT_END)
|
||||||
|
Lazy<Scene> dokanySupportEndScene();
|
||||||
|
|
||||||
|
|
||||||
|
default void showDokanySupportEndWindow() {
|
||||||
|
Stage stage = window();
|
||||||
|
stage.setScene(dokanySupportEndScene().get());
|
||||||
|
stage.sizeToScene();
|
||||||
|
stage.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subcomponent.Factory
|
||||||
|
interface Factory {
|
||||||
|
|
||||||
|
DokanySupportEndComponent create();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package org.cryptomator.ui.dokanysupportend;
|
||||||
|
|
||||||
|
import org.cryptomator.ui.common.FxController;
|
||||||
|
import org.cryptomator.ui.fxapp.FxApplicationWindows;
|
||||||
|
import org.cryptomator.ui.preferences.SelectedPreferencesTab;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
|
|
||||||
|
@DokanySupportEndScoped
|
||||||
|
public class DokanySupportEndController implements FxController {
|
||||||
|
|
||||||
|
private final Stage window;
|
||||||
|
private final FxApplicationWindows applicationWindows;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DokanySupportEndController(@DokanySupportEndWindow Stage window, FxApplicationWindows applicationWindows) {
|
||||||
|
this.window = window;
|
||||||
|
this.applicationWindows = applicationWindows;
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void close() {
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openVolumePreferences() {
|
||||||
|
applicationWindows.showPreferencesWindow(SelectedPreferencesTab.VOLUME);
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package org.cryptomator.ui.dokanysupportend;
|
||||||
|
|
||||||
|
import dagger.Binds;
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
import dagger.multibindings.IntoMap;
|
||||||
|
import org.cryptomator.ui.common.DefaultSceneFactory;
|
||||||
|
import org.cryptomator.ui.common.FxController;
|
||||||
|
import org.cryptomator.ui.common.FxControllerKey;
|
||||||
|
import org.cryptomator.ui.common.FxmlFile;
|
||||||
|
import org.cryptomator.ui.common.FxmlLoaderFactory;
|
||||||
|
import org.cryptomator.ui.common.FxmlScene;
|
||||||
|
import org.cryptomator.ui.common.StageFactory;
|
||||||
|
|
||||||
|
import javax.inject.Provider;
|
||||||
|
import javafx.scene.Scene;
|
||||||
|
import javafx.stage.Modality;
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
@Module
|
||||||
|
abstract class DokanySupportEndModule {
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@DokanySupportEndWindow
|
||||||
|
@DokanySupportEndScoped
|
||||||
|
static FxmlLoaderFactory provideFxmlLoaderFactory(Map<Class<? extends FxController>, Provider<FxController>> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) {
|
||||||
|
return new FxmlLoaderFactory(factories, sceneFactory, resourceBundle);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@DokanySupportEndWindow
|
||||||
|
@DokanySupportEndScoped
|
||||||
|
static Stage provideStage(StageFactory factory, ResourceBundle resourceBundle) {
|
||||||
|
Stage stage = factory.create();
|
||||||
|
stage.setTitle(resourceBundle.getString("dokanySupportEnd.title"));
|
||||||
|
stage.setMinWidth(500);
|
||||||
|
stage.setMinHeight(100);
|
||||||
|
stage.initModality(Modality.APPLICATION_MODAL);
|
||||||
|
return stage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@FxmlScene(FxmlFile.DOKANY_SUPPORT_END)
|
||||||
|
@DokanySupportEndScoped
|
||||||
|
static Scene provideDokanySupportEndScene(@DokanySupportEndWindow FxmlLoaderFactory fxmlLoaders) {
|
||||||
|
return fxmlLoaders.createScene(FxmlFile.DOKANY_SUPPORT_END);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Binds
|
||||||
|
@IntoMap
|
||||||
|
@FxControllerKey(DokanySupportEndController.class)
|
||||||
|
abstract FxController bindDokanySupportEndController(DokanySupportEndController controller);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package org.cryptomator.ui.dokanysupportend;
|
||||||
|
|
||||||
|
import javax.inject.Scope;
|
||||||
|
import java.lang.annotation.Documented;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
|
@Scope
|
||||||
|
@Documented
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@interface DokanySupportEndScoped {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package org.cryptomator.ui.dokanysupportend;
|
||||||
|
|
||||||
|
import javax.inject.Qualifier;
|
||||||
|
import java.lang.annotation.Documented;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
|
||||||
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
|
|
||||||
|
@Qualifier
|
||||||
|
@Documented
|
||||||
|
@Retention(RUNTIME)
|
||||||
|
@interface DokanySupportEndWindow {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -75,6 +75,7 @@ public class ErrorController implements FxController {
|
|||||||
private final BooleanExpression errorSolutionFound = matchingErrorDiscussion.isNotNull();
|
private final BooleanExpression errorSolutionFound = matchingErrorDiscussion.isNotNull();
|
||||||
private final BooleanProperty isLoadingHttpResponse = new SimpleBooleanProperty();
|
private final BooleanProperty isLoadingHttpResponse = new SimpleBooleanProperty();
|
||||||
private final BooleanProperty askedForLookupDatabasePermission = new SimpleBooleanProperty();
|
private final BooleanProperty askedForLookupDatabasePermission = new SimpleBooleanProperty();
|
||||||
|
private final boolean formerSceneWasResizable;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ErrorController(Application application, @Named("stackTrace") String stackTrace, ErrorCode errorCode, @Nullable Scene previousScene, Stage window, Environment environment, ExecutorService executorService) {
|
ErrorController(Application application, @Named("stackTrace") String stackTrace, ErrorCode errorCode, @Nullable Scene previousScene, Stage window, Environment environment, ExecutorService executorService) {
|
||||||
@@ -85,12 +86,14 @@ public class ErrorController implements FxController {
|
|||||||
this.window = window;
|
this.window = window;
|
||||||
this.environment = environment;
|
this.environment = environment;
|
||||||
this.executorService = executorService;
|
this.executorService = executorService;
|
||||||
|
this.formerSceneWasResizable = window.isResizable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void back() {
|
public void back() {
|
||||||
if (previousScene != null) {
|
if (previousScene != null) {
|
||||||
window.setScene(previousScene);
|
window.setScene(previousScene);
|
||||||
|
window.setResizable(formerSceneWasResizable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.cryptomator.ui.fxapp;
|
|||||||
import dagger.Lazy;
|
import dagger.Lazy;
|
||||||
import org.cryptomator.common.Environment;
|
import org.cryptomator.common.Environment;
|
||||||
import org.cryptomator.common.settings.Settings;
|
import org.cryptomator.common.settings.Settings;
|
||||||
|
import org.cryptomator.common.settings.VaultSettings;
|
||||||
import org.cryptomator.ui.traymenu.TrayMenuComponent;
|
import org.cryptomator.ui.traymenu.TrayMenuComponent;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -75,7 +76,27 @@ public class FxApplication {
|
|||||||
appWindows.checkAndShowUpdateReminderWindow();
|
appWindows.checkAndShowUpdateReminderWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
migrateAndInformDokanyRemoval();
|
||||||
|
|
||||||
launchEventHandler.startHandlingLaunchEvents();
|
launchEventHandler.startHandlingLaunchEvents();
|
||||||
autoUnlocker.tryUnlockForTimespan(2, TimeUnit.MINUTES);
|
autoUnlocker.tryUnlockForTimespan(2, TimeUnit.MINUTES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void migrateAndInformDokanyRemoval() {
|
||||||
|
var dokanyProviderId = "org.cryptomator.frontend.dokany.mount.DokanyMountProvider";
|
||||||
|
boolean dokanyFound = false;
|
||||||
|
if (settings.mountService.getValueSafe().equals(dokanyProviderId)) {
|
||||||
|
dokanyFound = true;
|
||||||
|
settings.mountService.set(null);
|
||||||
|
}
|
||||||
|
for (VaultSettings vaultSettings : settings.directories) {
|
||||||
|
if (vaultSettings.mountService.getValueSafe().equals(dokanyProviderId)) {
|
||||||
|
dokanyFound = true;
|
||||||
|
vaultSettings.mountService.set(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (dokanyFound) {
|
||||||
|
appWindows.showDokanySupportEndWindow();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package org.cryptomator.ui.fxapp;
|
|||||||
|
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
|
import org.cryptomator.ui.dokanysupportend.DokanySupportEndComponent;
|
||||||
import org.cryptomator.ui.error.ErrorComponent;
|
import org.cryptomator.ui.error.ErrorComponent;
|
||||||
import org.cryptomator.ui.health.HealthCheckComponent;
|
import org.cryptomator.ui.health.HealthCheckComponent;
|
||||||
import org.cryptomator.ui.lock.LockComponent;
|
import org.cryptomator.ui.lock.LockComponent;
|
||||||
@@ -33,6 +34,7 @@ import java.io.InputStream;
|
|||||||
ErrorComponent.class, //
|
ErrorComponent.class, //
|
||||||
HealthCheckComponent.class, //
|
HealthCheckComponent.class, //
|
||||||
UpdateReminderComponent.class, //
|
UpdateReminderComponent.class, //
|
||||||
|
DokanySupportEndComponent.class, //
|
||||||
ShareVaultComponent.class})
|
ShareVaultComponent.class})
|
||||||
abstract class FxApplicationModule {
|
abstract class FxApplicationModule {
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import dagger.Lazy;
|
|||||||
import org.cryptomator.common.vaults.Vault;
|
import org.cryptomator.common.vaults.Vault;
|
||||||
import org.cryptomator.common.vaults.VaultState;
|
import org.cryptomator.common.vaults.VaultState;
|
||||||
import org.cryptomator.integrations.tray.TrayIntegrationProvider;
|
import org.cryptomator.integrations.tray.TrayIntegrationProvider;
|
||||||
|
import org.cryptomator.ui.dokanysupportend.DokanySupportEndComponent;
|
||||||
import org.cryptomator.ui.error.ErrorComponent;
|
import org.cryptomator.ui.error.ErrorComponent;
|
||||||
import org.cryptomator.ui.lock.LockComponent;
|
import org.cryptomator.ui.lock.LockComponent;
|
||||||
import org.cryptomator.ui.mainwindow.MainWindowComponent;
|
import org.cryptomator.ui.mainwindow.MainWindowComponent;
|
||||||
@@ -48,6 +49,7 @@ public class FxApplicationWindows {
|
|||||||
private final QuitComponent.Builder quitWindowBuilder;
|
private final QuitComponent.Builder quitWindowBuilder;
|
||||||
private final UnlockComponent.Factory unlockWorkflowFactory;
|
private final UnlockComponent.Factory unlockWorkflowFactory;
|
||||||
private final UpdateReminderComponent.Factory updateReminderWindowBuilder;
|
private final UpdateReminderComponent.Factory updateReminderWindowBuilder;
|
||||||
|
private final DokanySupportEndComponent.Factory dokanySupportEndWindowBuilder;
|
||||||
private final LockComponent.Factory lockWorkflowFactory;
|
private final LockComponent.Factory lockWorkflowFactory;
|
||||||
private final ErrorComponent.Factory errorWindowFactory;
|
private final ErrorComponent.Factory errorWindowFactory;
|
||||||
private final ExecutorService executor;
|
private final ExecutorService executor;
|
||||||
@@ -56,13 +58,14 @@ public class FxApplicationWindows {
|
|||||||
private final FilteredList<Window> visibleWindows;
|
private final FilteredList<Window> visibleWindows;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public FxApplicationWindows(@PrimaryStage Stage primaryStage,
|
public FxApplicationWindows(@PrimaryStage Stage primaryStage, //
|
||||||
Optional<TrayIntegrationProvider> trayIntegration, //
|
Optional<TrayIntegrationProvider> trayIntegration, //
|
||||||
Lazy<MainWindowComponent> mainWindow, //
|
Lazy<MainWindowComponent> mainWindow, //
|
||||||
Lazy<PreferencesComponent> preferencesWindow, //
|
Lazy<PreferencesComponent> preferencesWindow, //
|
||||||
QuitComponent.Builder quitWindowBuilder, //
|
QuitComponent.Builder quitWindowBuilder, //
|
||||||
UnlockComponent.Factory unlockWorkflowFactory, //
|
UnlockComponent.Factory unlockWorkflowFactory, //
|
||||||
UpdateReminderComponent.Factory updateReminderWindowBuilder, //
|
UpdateReminderComponent.Factory updateReminderWindowBuilder, //
|
||||||
|
DokanySupportEndComponent.Factory dokanySupportEndWindowBuilder, //
|
||||||
LockComponent.Factory lockWorkflowFactory, //
|
LockComponent.Factory lockWorkflowFactory, //
|
||||||
ErrorComponent.Factory errorWindowFactory, //
|
ErrorComponent.Factory errorWindowFactory, //
|
||||||
VaultOptionsComponent.Factory vaultOptionsWindow, //
|
VaultOptionsComponent.Factory vaultOptionsWindow, //
|
||||||
@@ -75,6 +78,7 @@ public class FxApplicationWindows {
|
|||||||
this.quitWindowBuilder = quitWindowBuilder;
|
this.quitWindowBuilder = quitWindowBuilder;
|
||||||
this.unlockWorkflowFactory = unlockWorkflowFactory;
|
this.unlockWorkflowFactory = unlockWorkflowFactory;
|
||||||
this.updateReminderWindowBuilder = updateReminderWindowBuilder;
|
this.updateReminderWindowBuilder = updateReminderWindowBuilder;
|
||||||
|
this.dokanySupportEndWindowBuilder = dokanySupportEndWindowBuilder;
|
||||||
this.lockWorkflowFactory = lockWorkflowFactory;
|
this.lockWorkflowFactory = lockWorkflowFactory;
|
||||||
this.errorWindowFactory = errorWindowFactory;
|
this.errorWindowFactory = errorWindowFactory;
|
||||||
this.executor = executor;
|
this.executor = executor;
|
||||||
@@ -142,6 +146,11 @@ public class FxApplicationWindows {
|
|||||||
CompletableFuture.runAsync(() -> updateReminderWindowBuilder.create().checkAndShowUpdateReminderWindow(), Platform::runLater);
|
CompletableFuture.runAsync(() -> updateReminderWindowBuilder.create().checkAndShowUpdateReminderWindow(), Platform::runLater);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void showDokanySupportEndWindow() {
|
||||||
|
CompletableFuture.runAsync(() -> dokanySupportEndWindowBuilder.create().showDokanySupportEndWindow(), Platform::runLater);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public CompletionStage<Void> startUnlockWorkflow(Vault vault, @Nullable Stage owner) {
|
public CompletionStage<Void> startUnlockWorkflow(Vault vault, @Nullable Stage owner) {
|
||||||
return CompletableFuture.supplyAsync(() -> {
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
Preconditions.checkState(vault.stateProperty().transition(VaultState.Value.LOCKED, VaultState.Value.PROCESSING), "Vault not locked.");
|
Preconditions.checkState(vault.stateProperty().transition(VaultState.Value.LOCKED, VaultState.Value.PROCESSING), "Vault not locked.");
|
||||||
|
|||||||
@@ -1,45 +1,57 @@
|
|||||||
package org.cryptomator.ui.fxapp;
|
package org.cryptomator.ui.fxapp;
|
||||||
|
|
||||||
import org.cryptomator.common.Environment;
|
import org.cryptomator.common.Environment;
|
||||||
|
import org.cryptomator.common.SemVerComparator;
|
||||||
import org.cryptomator.common.settings.Settings;
|
import org.cryptomator.common.settings.Settings;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.beans.binding.BooleanBinding;
|
import javafx.beans.binding.BooleanBinding;
|
||||||
|
import javafx.beans.property.ObjectProperty;
|
||||||
import javafx.beans.property.ReadOnlyStringProperty;
|
import javafx.beans.property.ReadOnlyStringProperty;
|
||||||
|
import javafx.beans.property.SimpleObjectProperty;
|
||||||
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
import javafx.beans.property.StringProperty;
|
import javafx.beans.property.StringProperty;
|
||||||
import javafx.concurrent.ScheduledService;
|
import javafx.concurrent.ScheduledService;
|
||||||
import javafx.concurrent.Worker;
|
import javafx.concurrent.Worker;
|
||||||
import javafx.concurrent.WorkerStateEvent;
|
import javafx.concurrent.WorkerStateEvent;
|
||||||
import javafx.util.Duration;
|
import javafx.util.Duration;
|
||||||
|
import java.time.Instant;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
|
||||||
@FxApplicationScoped
|
@FxApplicationScoped
|
||||||
public class UpdateChecker {
|
public class UpdateChecker {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(UpdateChecker.class);
|
private static final Logger LOG = LoggerFactory.getLogger(UpdateChecker.class);
|
||||||
private static final Duration AUTOCHECK_DELAY = Duration.seconds(5);
|
private static final Duration AUTO_CHECK_DELAY = Duration.seconds(5);
|
||||||
|
|
||||||
private final Environment env;
|
private final Environment env;
|
||||||
private final Settings settings;
|
private final Settings settings;
|
||||||
private final StringProperty latestVersionProperty;
|
private final StringProperty latestVersion = new SimpleStringProperty();
|
||||||
private final Comparator<String> semVerComparator;
|
|
||||||
private final ScheduledService<String> updateCheckerService;
|
private final ScheduledService<String> updateCheckerService;
|
||||||
|
private final ObjectProperty<UpdateCheckState> state = new SimpleObjectProperty<>(UpdateCheckState.NOT_CHECKED);
|
||||||
|
private final ObjectProperty<Instant> lastSuccessfulUpdateCheck;
|
||||||
|
private final Comparator<String> versionComparator = new SemVerComparator();
|
||||||
|
private final BooleanBinding updateAvailable;
|
||||||
|
private final BooleanBinding checkFailed;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UpdateChecker(Settings settings, Environment env, @Named("latestVersion") StringProperty latestVersionProperty, @Named("SemVer") Comparator<String> semVerComparator, ScheduledService<String> updateCheckerService) {
|
UpdateChecker(Settings settings, //
|
||||||
|
Environment env, //
|
||||||
|
ScheduledService<String> updateCheckerService) {
|
||||||
this.env = env;
|
this.env = env;
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.latestVersionProperty = latestVersionProperty;
|
|
||||||
this.semVerComparator = semVerComparator;
|
|
||||||
this.updateCheckerService = updateCheckerService;
|
this.updateCheckerService = updateCheckerService;
|
||||||
|
this.lastSuccessfulUpdateCheck = settings.lastSuccessfulUpdateCheck;
|
||||||
|
this.updateAvailable = Bindings.createBooleanBinding(this::isUpdateAvailable, latestVersion);
|
||||||
|
this.checkFailed = Bindings.equal(UpdateCheckState.CHECK_FAILED, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void automaticallyCheckForUpdatesIfEnabled() {
|
public void automaticallyCheckForUpdatesIfEnabled() {
|
||||||
if (!env.disableUpdateCheck() && settings.checkForUpdates.get()) {
|
if (!env.disableUpdateCheck() && settings.checkForUpdates.get()) {
|
||||||
startCheckingForUpdates(AUTOCHECK_DELAY);
|
startCheckingForUpdates(AUTO_CHECK_DELAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,36 +71,65 @@ public class UpdateChecker {
|
|||||||
|
|
||||||
private void checkStarted(WorkerStateEvent event) {
|
private void checkStarted(WorkerStateEvent event) {
|
||||||
LOG.debug("Checking for updates...");
|
LOG.debug("Checking for updates...");
|
||||||
|
state.set(UpdateCheckState.IS_CHECKING);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkSucceeded(WorkerStateEvent event) {
|
private void checkSucceeded(WorkerStateEvent event) {
|
||||||
String latestVersion = updateCheckerService.getValue();
|
var latestVersionString = updateCheckerService.getValue();
|
||||||
LOG.info("Current version: {}, lastest version: {}", getCurrentVersion(), latestVersion);
|
LOG.info("Current version: {}, latest version: {}", getCurrentVersion(), latestVersionString);
|
||||||
|
lastSuccessfulUpdateCheck.set(Instant.now());
|
||||||
if (semVerComparator.compare(getCurrentVersion(), latestVersion) < 0) {
|
latestVersion.set(latestVersionString);
|
||||||
// update is available
|
state.set(UpdateCheckState.CHECK_SUCCESSFUL);
|
||||||
latestVersionProperty.set(latestVersion);
|
|
||||||
} else {
|
|
||||||
latestVersionProperty.set(null);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkFailed(WorkerStateEvent event) {
|
private void checkFailed(WorkerStateEvent event) {
|
||||||
LOG.warn("Error checking for updates", event.getSource().getException());
|
state.set(UpdateCheckState.CHECK_FAILED);
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum UpdateCheckState {
|
||||||
|
NOT_CHECKED,
|
||||||
|
IS_CHECKING,
|
||||||
|
CHECK_SUCCESSFUL,
|
||||||
|
CHECK_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Observable Properties */
|
/* Observable Properties */
|
||||||
|
|
||||||
public BooleanBinding checkingForUpdatesProperty() {
|
public BooleanBinding checkingForUpdatesProperty() {
|
||||||
return updateCheckerService.stateProperty().isEqualTo(Worker.State.RUNNING);
|
return updateCheckerService.stateProperty().isEqualTo(Worker.State.RUNNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReadOnlyStringProperty latestVersionProperty() {
|
public ReadOnlyStringProperty latestVersionProperty() {
|
||||||
return latestVersionProperty;
|
return latestVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BooleanBinding updateAvailableProperty() {
|
||||||
|
return updateAvailable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BooleanBinding checkFailedProperty() {
|
||||||
|
return checkFailed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isUpdateAvailable() {
|
||||||
|
String currentVersion = getCurrentVersion();
|
||||||
|
String latestVersionString = latestVersion.get();
|
||||||
|
|
||||||
|
if (currentVersion == null || latestVersionString == null) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return versionComparator.compare(currentVersion, latestVersionString) < 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObjectProperty<Instant> lastSuccessfulUpdateCheckProperty() {
|
||||||
|
return lastSuccessfulUpdateCheck;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObjectProperty<UpdateCheckState> updateCheckStateProperty() {
|
||||||
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCurrentVersion() {
|
public String getCurrentVersion() {
|
||||||
return env.getAppVersion();
|
return env.getAppVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,6 @@ import org.slf4j.LoggerFactory;
|
|||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.beans.binding.ObjectBinding;
|
import javafx.beans.binding.ObjectBinding;
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
|
||||||
import javafx.beans.property.StringProperty;
|
|
||||||
import javafx.concurrent.ScheduledService;
|
import javafx.concurrent.ScheduledService;
|
||||||
import javafx.concurrent.Task;
|
import javafx.concurrent.Task;
|
||||||
import javafx.util.Duration;
|
import javafx.util.Duration;
|
||||||
@@ -32,13 +30,6 @@ public abstract class UpdateCheckerModule {
|
|||||||
private static final Duration UPDATE_CHECK_INTERVAL = Duration.hours(3);
|
private static final Duration UPDATE_CHECK_INTERVAL = Duration.hours(3);
|
||||||
private static final Duration DISABLED_UPDATE_CHECK_INTERVAL = Duration.hours(100000); // Duration.INDEFINITE leads to overflows...
|
private static final Duration DISABLED_UPDATE_CHECK_INTERVAL = Duration.hours(100000); // Duration.INDEFINITE leads to overflows...
|
||||||
|
|
||||||
@Provides
|
|
||||||
@Named("latestVersion")
|
|
||||||
@FxApplicationScoped
|
|
||||||
static StringProperty provideLatestVersion() {
|
|
||||||
return new SimpleStringProperty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@FxApplicationScoped
|
@FxApplicationScoped
|
||||||
static Optional<HttpClient> provideHttpClient() {
|
static Optional<HttpClient> provideHttpClient() {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class MainWindowTitleController implements FxController {
|
|||||||
this.appWindows = appWindows;
|
this.appWindows = appWindows;
|
||||||
this.trayMenuInitialized = trayMenu.isInitialized();
|
this.trayMenuInitialized = trayMenu.isInitialized();
|
||||||
this.updateChecker = updateChecker;
|
this.updateChecker = updateChecker;
|
||||||
this.updateAvailable = updateChecker.latestVersionProperty().isNotNull();
|
this.updateAvailable = updateChecker.updateAvailableProperty();
|
||||||
this.licenseHolder = licenseHolder;
|
this.licenseHolder = licenseHolder;
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.showMinimizeButton = Bindings.createBooleanBinding(this::isShowMinimizeButton, settings.showMinimizeButton, settings.showTrayIcon);
|
this.showMinimizeButton = Bindings.createBooleanBinding(this::isShowMinimizeButton, settings.showMinimizeButton, settings.showTrayIcon);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import org.cryptomator.cryptofs.CryptoFileSystemProvider;
|
|||||||
import org.cryptomator.cryptofs.DirStructure;
|
import org.cryptomator.cryptofs.DirStructure;
|
||||||
import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent;
|
import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent;
|
||||||
import org.cryptomator.ui.common.FxController;
|
import org.cryptomator.ui.common.FxController;
|
||||||
|
import org.cryptomator.ui.common.VaultService;
|
||||||
import org.cryptomator.ui.fxapp.FxApplicationWindows;
|
import org.cryptomator.ui.fxapp.FxApplicationWindows;
|
||||||
import org.cryptomator.ui.removevault.RemoveVaultComponent;
|
import org.cryptomator.ui.removevault.RemoveVaultComponent;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -58,6 +59,7 @@ public class VaultListController implements FxController {
|
|||||||
|
|
||||||
private final Stage mainWindow;
|
private final Stage mainWindow;
|
||||||
private final ObservableList<Vault> vaults;
|
private final ObservableList<Vault> vaults;
|
||||||
|
private final VaultService vaultService;
|
||||||
private final ObjectProperty<Vault> selectedVault;
|
private final ObjectProperty<Vault> selectedVault;
|
||||||
private final VaultListCellFactory cellFactory;
|
private final VaultListCellFactory cellFactory;
|
||||||
private final AddVaultWizardComponent.Builder addVaultWizard;
|
private final AddVaultWizardComponent.Builder addVaultWizard;
|
||||||
@@ -79,6 +81,7 @@ public class VaultListController implements FxController {
|
|||||||
ObservableList<Vault> vaults, //
|
ObservableList<Vault> vaults, //
|
||||||
ObjectProperty<Vault> selectedVault, //
|
ObjectProperty<Vault> selectedVault, //
|
||||||
VaultListCellFactory cellFactory, //
|
VaultListCellFactory cellFactory, //
|
||||||
|
VaultService vaultService, //
|
||||||
AddVaultWizardComponent.Builder addVaultWizard, //
|
AddVaultWizardComponent.Builder addVaultWizard, //
|
||||||
RemoveVaultComponent.Builder removeVaultDialogue, //
|
RemoveVaultComponent.Builder removeVaultDialogue, //
|
||||||
VaultListManager vaultListManager, //
|
VaultListManager vaultListManager, //
|
||||||
@@ -88,6 +91,7 @@ public class VaultListController implements FxController {
|
|||||||
this.vaults = vaults;
|
this.vaults = vaults;
|
||||||
this.selectedVault = selectedVault;
|
this.selectedVault = selectedVault;
|
||||||
this.cellFactory = cellFactory;
|
this.cellFactory = cellFactory;
|
||||||
|
this.vaultService = vaultService;
|
||||||
this.addVaultWizard = addVaultWizard;
|
this.addVaultWizard = addVaultWizard;
|
||||||
this.removeVaultDialogue = removeVaultDialogue;
|
this.removeVaultDialogue = removeVaultDialogue;
|
||||||
this.vaultListManager = vaultListManager;
|
this.vaultListManager = vaultListManager;
|
||||||
@@ -119,6 +123,9 @@ public class VaultListController implements FxController {
|
|||||||
Optional.ofNullable(selectedVault.get())
|
Optional.ofNullable(selectedVault.get())
|
||||||
.filter(Vault::isLocked)
|
.filter(Vault::isLocked)
|
||||||
.ifPresent(vault -> appWindows.startUnlockWorkflow(vault, mainWindow));
|
.ifPresent(vault -> appWindows.startUnlockWorkflow(vault, mainWindow));
|
||||||
|
Optional.ofNullable(selectedVault.get())
|
||||||
|
.filter(Vault::isUnlocked)
|
||||||
|
.ifPresent(vaultService::reveal);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,33 @@
|
|||||||
package org.cryptomator.ui.preferences;
|
package org.cryptomator.ui.preferences;
|
||||||
|
|
||||||
|
import org.cryptomator.common.Environment;
|
||||||
import org.cryptomator.common.settings.Settings;
|
import org.cryptomator.common.settings.Settings;
|
||||||
import org.cryptomator.ui.common.FxController;
|
import org.cryptomator.ui.common.FxController;
|
||||||
import org.cryptomator.ui.fxapp.UpdateChecker;
|
import org.cryptomator.ui.fxapp.UpdateChecker;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javafx.animation.PauseTransition;
|
||||||
import javafx.application.Application;
|
import javafx.application.Application;
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.beans.binding.BooleanBinding;
|
import javafx.beans.binding.BooleanBinding;
|
||||||
import javafx.beans.binding.ObjectBinding;
|
import javafx.beans.binding.ObjectBinding;
|
||||||
|
import javafx.beans.binding.StringBinding;
|
||||||
|
import javafx.beans.property.BooleanProperty;
|
||||||
import javafx.beans.property.ReadOnlyStringProperty;
|
import javafx.beans.property.ReadOnlyStringProperty;
|
||||||
|
import javafx.beans.property.SimpleBooleanProperty;
|
||||||
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.CheckBox;
|
import javafx.scene.control.CheckBox;
|
||||||
import javafx.scene.control.ContentDisplay;
|
import javafx.scene.control.ContentDisplay;
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.time.format.FormatStyle;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
|
||||||
@PreferencesScoped
|
@PreferencesScoped
|
||||||
public class UpdatesPreferencesController implements FxController {
|
public class UpdatesPreferencesController implements FxController {
|
||||||
@@ -20,29 +35,55 @@ public class UpdatesPreferencesController implements FxController {
|
|||||||
private static final String DOWNLOADS_URI = "https://cryptomator.org/downloads";
|
private static final String DOWNLOADS_URI = "https://cryptomator.org/downloads";
|
||||||
|
|
||||||
private final Application application;
|
private final Application application;
|
||||||
|
private final Environment environment;
|
||||||
|
private final ResourceBundle resourceBundle;
|
||||||
private final Settings settings;
|
private final Settings settings;
|
||||||
private final UpdateChecker updateChecker;
|
private final UpdateChecker updateChecker;
|
||||||
private final ObjectBinding<ContentDisplay> checkForUpdatesButtonState;
|
private final ObjectBinding<ContentDisplay> checkForUpdatesButtonState;
|
||||||
private final ReadOnlyStringProperty latestVersion;
|
private final ReadOnlyStringProperty latestVersion;
|
||||||
|
private final ObservableValue<Instant> lastSuccessfulUpdateCheck;
|
||||||
|
private final StringBinding lastUpdateCheckMessage;
|
||||||
|
private final ObservableValue<String> timeDifferenceMessage;
|
||||||
private final String currentVersion;
|
private final String currentVersion;
|
||||||
private final BooleanBinding updateAvailable;
|
private final BooleanBinding updateAvailable;
|
||||||
|
private final BooleanBinding checkFailed;
|
||||||
|
private final BooleanProperty upToDateLabelVisible = new SimpleBooleanProperty(false);
|
||||||
|
private final DateTimeFormatter formatter;
|
||||||
|
private final BooleanBinding upToDate;
|
||||||
|
|
||||||
/* FXML */
|
/* FXML */
|
||||||
public CheckBox checkForUpdatesCheckbox;
|
public CheckBox checkForUpdatesCheckbox;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UpdatesPreferencesController(Application application, Settings settings, UpdateChecker updateChecker) {
|
UpdatesPreferencesController(Application application, Environment environment, ResourceBundle resourceBundle, Settings settings, UpdateChecker updateChecker) {
|
||||||
this.application = application;
|
this.application = application;
|
||||||
|
this.environment = environment;
|
||||||
|
this.resourceBundle = resourceBundle;
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.updateChecker = updateChecker;
|
this.updateChecker = updateChecker;
|
||||||
this.checkForUpdatesButtonState = Bindings.when(updateChecker.checkingForUpdatesProperty()).then(ContentDisplay.LEFT).otherwise(ContentDisplay.TEXT_ONLY);
|
this.checkForUpdatesButtonState = Bindings.when(updateChecker.checkingForUpdatesProperty()).then(ContentDisplay.LEFT).otherwise(ContentDisplay.TEXT_ONLY);
|
||||||
this.latestVersion = updateChecker.latestVersionProperty();
|
this.latestVersion = updateChecker.latestVersionProperty();
|
||||||
this.updateAvailable = latestVersion.isNotNull();
|
this.lastSuccessfulUpdateCheck = updateChecker.lastSuccessfulUpdateCheckProperty();
|
||||||
|
this.timeDifferenceMessage = Bindings.createStringBinding(this::getTimeDifferenceMessage, lastSuccessfulUpdateCheck);
|
||||||
this.currentVersion = updateChecker.getCurrentVersion();
|
this.currentVersion = updateChecker.getCurrentVersion();
|
||||||
|
this.updateAvailable = updateChecker.updateAvailableProperty();
|
||||||
|
this.formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(Locale.getDefault());
|
||||||
|
this.upToDate = updateChecker.updateCheckStateProperty().isEqualTo(UpdateChecker.UpdateCheckState.CHECK_SUCCESSFUL).and(latestVersion.isEqualTo(currentVersion));
|
||||||
|
this.checkFailed = updateChecker.checkFailedProperty();
|
||||||
|
this.lastUpdateCheckMessage = Bindings.createStringBinding(this::getLastUpdateCheckMessage, lastSuccessfulUpdateCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
checkForUpdatesCheckbox.selectedProperty().bindBidirectional(settings.checkForUpdates);
|
checkForUpdatesCheckbox.selectedProperty().bindBidirectional(settings.checkForUpdates);
|
||||||
|
|
||||||
|
upToDate.addListener((_, _, newVal) -> {
|
||||||
|
if (newVal) {
|
||||||
|
upToDateLabelVisible.set(true);
|
||||||
|
PauseTransition delay = new PauseTransition(javafx.util.Duration.seconds(5));
|
||||||
|
delay.setOnFinished(_ -> upToDateLabelVisible.set(false));
|
||||||
|
delay.play();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
@@ -55,6 +96,11 @@ public class UpdatesPreferencesController implements FxController {
|
|||||||
application.getHostServices().showDocument(DOWNLOADS_URI);
|
application.getHostServices().showDocument(DOWNLOADS_URI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void showLogfileDirectory() {
|
||||||
|
environment.getLogDir().ifPresent(logDirPath -> application.getHostServices().showDocument(logDirPath.toUri().toString()));
|
||||||
|
}
|
||||||
|
|
||||||
/* Observable Properties */
|
/* Observable Properties */
|
||||||
|
|
||||||
public ObjectBinding<ContentDisplay> checkForUpdatesButtonStateProperty() {
|
public ObjectBinding<ContentDisplay> checkForUpdatesButtonStateProperty() {
|
||||||
@@ -77,6 +123,46 @@ public class UpdatesPreferencesController implements FxController {
|
|||||||
return currentVersion;
|
return currentVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StringBinding lastUpdateCheckMessageProperty() {
|
||||||
|
return lastUpdateCheckMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLastUpdateCheckMessage() {
|
||||||
|
Instant lastCheck = lastSuccessfulUpdateCheck.getValue();
|
||||||
|
if (lastCheck != null && !lastCheck.equals(Settings.DEFAULT_TIMESTAMP)) {
|
||||||
|
return formatter.format(LocalDateTime.ofInstant(lastCheck, ZoneId.systemDefault()));
|
||||||
|
} else {
|
||||||
|
return "-";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableValue<String> timeDifferenceMessageProperty() {
|
||||||
|
return timeDifferenceMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimeDifferenceMessage() {
|
||||||
|
var lastSuccessCheck = lastSuccessfulUpdateCheck.getValue();
|
||||||
|
var duration = Duration.between(lastSuccessCheck, Instant.now());
|
||||||
|
var hours = duration.toHours();
|
||||||
|
if (lastSuccessCheck.equals(Settings.DEFAULT_TIMESTAMP)) {
|
||||||
|
return resourceBundle.getString("preferences.updates.lastUpdateCheck.never");
|
||||||
|
} else if (hours < 1) {
|
||||||
|
return resourceBundle.getString("preferences.updates.lastUpdateCheck.recently");
|
||||||
|
} else if (hours < 24) {
|
||||||
|
return String.format(resourceBundle.getString("preferences.updates.lastUpdateCheck.hoursAgo"), hours);
|
||||||
|
} else {
|
||||||
|
return String.format(resourceBundle.getString("preferences.updates.lastUpdateCheck.daysAgo"), duration.toDays());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BooleanProperty upToDateLabelVisibleProperty() {
|
||||||
|
return upToDateLabelVisible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isUpToDateLabelVisible() {
|
||||||
|
return upToDateLabelVisible.get();
|
||||||
|
}
|
||||||
|
|
||||||
public BooleanBinding updateAvailableProperty() {
|
public BooleanBinding updateAvailableProperty() {
|
||||||
return updateAvailable;
|
return updateAvailable;
|
||||||
}
|
}
|
||||||
@@ -84,4 +170,13 @@ public class UpdatesPreferencesController implements FxController {
|
|||||||
public boolean isUpdateAvailable() {
|
public boolean isUpdateAvailable() {
|
||||||
return updateAvailable.get();
|
return updateAvailable.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BooleanBinding checkFailedProperty() {
|
||||||
|
return checkFailed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCheckFailed() {
|
||||||
|
return checkFailed.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public class TrayMenuModule {
|
|||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@TrayMenuScoped
|
@TrayMenuScoped
|
||||||
static Optional<TrayMenuController> provideSupportedKeychainAccessProviders() {
|
static Optional<TrayMenuController> provideFirstSupportedTrayMenuController() {
|
||||||
return TrayMenuController.get();
|
return TrayMenuController.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import org.cryptomator.ui.common.FxmlFile;
|
|||||||
import org.cryptomator.ui.common.FxmlScene;
|
import org.cryptomator.ui.common.FxmlScene;
|
||||||
import org.cryptomator.ui.common.VaultService;
|
import org.cryptomator.ui.common.VaultService;
|
||||||
import org.cryptomator.ui.fxapp.FxApplicationWindows;
|
import org.cryptomator.ui.fxapp.FxApplicationWindows;
|
||||||
|
import org.cryptomator.ui.fxapp.PrimaryStage;
|
||||||
import org.cryptomator.ui.keyloading.KeyLoadingStrategy;
|
import org.cryptomator.ui.keyloading.KeyLoadingStrategy;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -19,7 +20,9 @@ import javax.inject.Inject;
|
|||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.property.ObjectProperty;
|
import javafx.beans.property.ObjectProperty;
|
||||||
import javafx.concurrent.Task;
|
import javafx.concurrent.Task;
|
||||||
|
import javafx.geometry.Rectangle2D;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
|
import javafx.stage.Screen;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@@ -33,6 +36,7 @@ public class UnlockWorkflow extends Task<Void> {
|
|||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(UnlockWorkflow.class);
|
private static final Logger LOG = LoggerFactory.getLogger(UnlockWorkflow.class);
|
||||||
|
|
||||||
|
private final Stage mainWindow;
|
||||||
private final Stage window;
|
private final Stage window;
|
||||||
private final Vault vault;
|
private final Vault vault;
|
||||||
private final VaultService vaultService;
|
private final VaultService vaultService;
|
||||||
@@ -44,7 +48,8 @@ public class UnlockWorkflow extends Task<Void> {
|
|||||||
private final ObjectProperty<IllegalMountPointException> illegalMountPointException;
|
private final ObjectProperty<IllegalMountPointException> illegalMountPointException;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UnlockWorkflow(@UnlockWindow Stage window, //
|
UnlockWorkflow(@PrimaryStage Stage mainWindow, //
|
||||||
|
@UnlockWindow Stage window, //
|
||||||
@UnlockWindow Vault vault, //
|
@UnlockWindow Vault vault, //
|
||||||
VaultService vaultService, //
|
VaultService vaultService, //
|
||||||
@FxmlScene(FxmlFile.UNLOCK_SUCCESS) Lazy<Scene> successScene, //
|
@FxmlScene(FxmlFile.UNLOCK_SUCCESS) Lazy<Scene> successScene, //
|
||||||
@@ -53,6 +58,7 @@ public class UnlockWorkflow extends Task<Void> {
|
|||||||
FxApplicationWindows appWindows, //
|
FxApplicationWindows appWindows, //
|
||||||
@UnlockWindow KeyLoadingStrategy keyLoadingStrategy, //
|
@UnlockWindow KeyLoadingStrategy keyLoadingStrategy, //
|
||||||
@UnlockWindow ObjectProperty<IllegalMountPointException> illegalMountPointException) {
|
@UnlockWindow ObjectProperty<IllegalMountPointException> illegalMountPointException) {
|
||||||
|
this.mainWindow = mainWindow;
|
||||||
this.window = window;
|
this.window = window;
|
||||||
this.vault = vault;
|
this.vault = vault;
|
||||||
this.vaultService = vaultService;
|
this.vaultService = vaultService;
|
||||||
@@ -107,6 +113,19 @@ public class UnlockWorkflow extends Task<Void> {
|
|||||||
case ASK -> Platform.runLater(() -> {
|
case ASK -> Platform.runLater(() -> {
|
||||||
window.setScene(successScene.get());
|
window.setScene(successScene.get());
|
||||||
window.show();
|
window.show();
|
||||||
|
double x = mainWindow.getX() + (mainWindow.getWidth() - window.getWidth()) / 2;
|
||||||
|
double y = mainWindow.getY() + (mainWindow.getHeight() - window.getHeight()) / 2;
|
||||||
|
if(!mainWindow.isShowing()) {
|
||||||
|
Screen screen = Screen.getScreensForRectangle(mainWindow.getX(), mainWindow.getY(), mainWindow.getWidth(), mainWindow.getHeight())
|
||||||
|
.stream()
|
||||||
|
.findFirst()
|
||||||
|
.orElse(Screen.getPrimary());
|
||||||
|
Rectangle2D bounds = screen.getVisualBounds();
|
||||||
|
x = bounds.getMinX() + (bounds.getWidth() - window.getWidth()) / 2;
|
||||||
|
y = bounds.getMinY() + (bounds.getHeight() - window.getHeight()) / 2;
|
||||||
|
}
|
||||||
|
window.setX(x);
|
||||||
|
window.setY(y);
|
||||||
});
|
});
|
||||||
case REVEAL -> {
|
case REVEAL -> {
|
||||||
Platform.runLater(window::close);
|
Platform.runLater(window::close);
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ import org.cryptomator.ui.common.FxmlScene;
|
|||||||
|
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import java.time.LocalDate;
|
import java.time.Duration;
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
@UpdateReminderScoped
|
@UpdateReminderScoped
|
||||||
@Subcomponent(modules = {UpdateReminderModule.class})
|
@Subcomponent(modules = {UpdateReminderModule.class})
|
||||||
@@ -23,7 +24,8 @@ public interface UpdateReminderComponent {
|
|||||||
Settings settings();
|
Settings settings();
|
||||||
|
|
||||||
default void checkAndShowUpdateReminderWindow() {
|
default void checkAndShowUpdateReminderWindow() {
|
||||||
if (LocalDate.parse(settings().lastUpdateCheck.get()).isBefore(LocalDate.now().minusDays(14)) && !settings().checkForUpdates.getValue()) {
|
var now = Instant.now();
|
||||||
|
if (!settings().checkForUpdates.getValue() && settings().lastSuccessfulUpdateCheck.get().isBefore(now.minus(Duration.ofDays(14)))) {
|
||||||
Stage stage = window();
|
Stage stage = window();
|
||||||
stage.setScene(updateReminderScene().get());
|
stage.setScene(updateReminderScene().get());
|
||||||
stage.sizeToScene();
|
stage.sizeToScene();
|
||||||
@@ -33,6 +35,7 @@ public interface UpdateReminderComponent {
|
|||||||
|
|
||||||
@Subcomponent.Factory
|
@Subcomponent.Factory
|
||||||
interface Factory {
|
interface Factory {
|
||||||
|
|
||||||
UpdateReminderComponent create();
|
UpdateReminderComponent create();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,8 +7,6 @@ import org.cryptomator.ui.fxapp.UpdateChecker;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
|
|
||||||
@UpdateReminderScoped
|
@UpdateReminderScoped
|
||||||
public class UpdateReminderController implements FxController {
|
public class UpdateReminderController implements FxController {
|
||||||
@@ -27,20 +25,17 @@ public class UpdateReminderController implements FxController {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
settings.lastUpdateCheck.set(LocalDate.now().format(DateTimeFormatter.ISO_DATE));
|
|
||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void once() {
|
public void once() {
|
||||||
settings.lastUpdateCheck.set(LocalDate.now().format(DateTimeFormatter.ISO_DATE));
|
|
||||||
updateChecker.checkForUpdatesNow();
|
updateChecker.checkForUpdatesNow();
|
||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void automatically() {
|
public void automatically() {
|
||||||
settings.lastUpdateCheck.set(LocalDate.now().format(DateTimeFormatter.ISO_DATE));
|
|
||||||
updateChecker.checkForUpdatesNow();
|
updateChecker.checkForUpdatesNow();
|
||||||
settings.checkForUpdates.set(true);
|
settings.checkForUpdates.set(true);
|
||||||
window.close();
|
window.close();
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<?import org.cryptomator.ui.controls.FontAwesome5IconView?>
|
<?import org.cryptomator.ui.controls.FontAwesome5IconView?>
|
||||||
|
<?import org.cryptomator.ui.controls.FontAwesome5Spinner?>
|
||||||
<?import javafx.geometry.Insets?>
|
<?import javafx.geometry.Insets?>
|
||||||
<?import javafx.scene.control.Button?>
|
<?import javafx.scene.control.Button?>
|
||||||
<?import javafx.scene.control.ButtonBar?>
|
<?import javafx.scene.control.ButtonBar?>
|
||||||
<?import javafx.scene.control.Label?>
|
<?import javafx.scene.control.Label?>
|
||||||
<?import javafx.scene.control.RadioButton?>
|
<?import javafx.scene.control.RadioButton?>
|
||||||
|
<?import javafx.scene.control.ScrollPane?>
|
||||||
<?import javafx.scene.control.TextField?>
|
<?import javafx.scene.control.TextField?>
|
||||||
<?import javafx.scene.control.ToggleGroup?>
|
<?import javafx.scene.control.ToggleGroup?>
|
||||||
<?import javafx.scene.layout.HBox?>
|
<?import javafx.scene.layout.HBox?>
|
||||||
@@ -29,18 +31,26 @@
|
|||||||
<children>
|
<children>
|
||||||
<Region VBox.vgrow="ALWAYS"/>
|
<Region VBox.vgrow="ALWAYS"/>
|
||||||
|
|
||||||
<VBox fx:id="radioButtonVBox" spacing="6">
|
<Label wrapText="true" text="%addvaultwizard.new.locationInstruction"/>
|
||||||
<Label wrapText="true" text="%addvaultwizard.new.locationInstruction"/>
|
<ScrollPane hbarPolicy="NEVER">
|
||||||
<!-- PLACEHOLDER, more radio buttons are added programmatically via controller -->
|
<VBox fx:id="radioButtonVBox" spacing="6">
|
||||||
<HBox spacing="12" alignment="CENTER_LEFT">
|
<!-- PLACEHOLDER, more radio buttons are added programmatically via controller -->
|
||||||
<RadioButton fx:id="customRadioButton" toggleGroup="${locationPresetsToggler}" text="%addvaultwizard.new.directoryPickerLabel"/>
|
<HBox fx:id="customLocationRadioBtn" spacing="12" alignment="CENTER_LEFT">
|
||||||
<Button contentDisplay="LEFT" text="%addvaultwizard.new.directoryPickerButton" onAction="#chooseCustomVaultPath" disable="${controller.usePresetPath}">
|
<RadioButton fx:id="customRadioButton" toggleGroup="${locationPresetsToggler}" text="%addvaultwizard.new.directoryPickerLabel"/>
|
||||||
<graphic>
|
<Button contentDisplay="LEFT" text="%addvaultwizard.new.directoryPickerButton" onAction="#chooseCustomVaultPath" disable="${controller.usePresetPath}">
|
||||||
<FontAwesome5IconView glyph="FOLDER_OPEN"/>
|
<graphic>
|
||||||
</graphic>
|
<FontAwesome5IconView glyph="FOLDER_OPEN"/>
|
||||||
</Button>
|
</graphic>
|
||||||
</HBox>
|
</Button>
|
||||||
</VBox>
|
</HBox>
|
||||||
|
</VBox>
|
||||||
|
</ScrollPane>
|
||||||
|
<Region prefHeight="2"/>
|
||||||
|
<Label wrapText="true" text="%addvaultwizard.new.locationLoading" visible="${controller.loadingPresetLocations}" managed="${controller.loadingPresetLocations}" graphicTextGap="8">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5Spinner/>
|
||||||
|
</graphic>
|
||||||
|
</Label>
|
||||||
|
|
||||||
<Region prefHeight="12" VBox.vgrow="NEVER"/>
|
<Region prefHeight="12" VBox.vgrow="NEVER"/>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import org.cryptomator.ui.controls.FontAwesome5IconView?>
|
||||||
|
<?import javafx.geometry.Insets?>
|
||||||
|
<?import javafx.scene.control.Button?>
|
||||||
|
<?import javafx.scene.control.ButtonBar?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.Group?>
|
||||||
|
<?import javafx.scene.layout.HBox?>
|
||||||
|
<?import javafx.scene.layout.Region?>
|
||||||
|
<?import javafx.scene.layout.StackPane?>
|
||||||
|
<?import javafx.scene.layout.VBox?>
|
||||||
|
<?import javafx.scene.shape.Circle?>
|
||||||
|
<HBox xmlns:fx="http://javafx.com/fxml"
|
||||||
|
xmlns="http://javafx.com/javafx"
|
||||||
|
fx:controller="org.cryptomator.ui.dokanysupportend.DokanySupportEndController"
|
||||||
|
minWidth="500"
|
||||||
|
prefWidth="500"
|
||||||
|
minHeight="145"
|
||||||
|
spacing="12"
|
||||||
|
alignment="TOP_LEFT">
|
||||||
|
<padding>
|
||||||
|
<Insets topRightBottomLeft="12"/>
|
||||||
|
</padding>
|
||||||
|
<children>
|
||||||
|
<Group>
|
||||||
|
<StackPane>
|
||||||
|
<padding>
|
||||||
|
<Insets topRightBottomLeft="6"/>
|
||||||
|
</padding>
|
||||||
|
<Circle styleClass="glyph-icon-primary" radius="24"/>
|
||||||
|
<FontAwesome5IconView styleClass="glyph-icon-white" glyph="EXCLAMATION" glyphSize="24"/>
|
||||||
|
</StackPane>
|
||||||
|
</Group>
|
||||||
|
|
||||||
|
<VBox HBox.hgrow="ALWAYS">
|
||||||
|
<Label styleClass="label-large" text="%dokanySupportEnd.message" wrapText="true">
|
||||||
|
<padding>
|
||||||
|
<Insets bottom="6" top="6"/>
|
||||||
|
</padding>
|
||||||
|
</Label>
|
||||||
|
<Label text="%dokanySupportEnd.description" wrapText="true"/>
|
||||||
|
<Region VBox.vgrow="ALWAYS" minHeight="18"/>
|
||||||
|
<ButtonBar buttonMinWidth="120" buttonOrder="+UC">
|
||||||
|
<buttons>
|
||||||
|
<Button text="%dokanySupportEnd.preferencesBtn" ButtonBar.buttonData="OTHER" cancelButton="true" onAction="#openVolumePreferences"/>
|
||||||
|
<Button text="%generic.button.close" ButtonBar.buttonData="CANCEL_CLOSE" cancelButton="true" onAction="#close" defaultButton="true"/>
|
||||||
|
</buttons>
|
||||||
|
</ButtonBar>
|
||||||
|
|
||||||
|
</VBox>
|
||||||
|
</children>
|
||||||
|
</HBox>
|
||||||
@@ -9,86 +9,97 @@
|
|||||||
<?import javafx.scene.control.Hyperlink?>
|
<?import javafx.scene.control.Hyperlink?>
|
||||||
<?import javafx.scene.control.Label?>
|
<?import javafx.scene.control.Label?>
|
||||||
<?import javafx.scene.control.TextArea?>
|
<?import javafx.scene.control.TextArea?>
|
||||||
|
<?import javafx.scene.Group?>
|
||||||
<?import javafx.scene.layout.HBox?>
|
<?import javafx.scene.layout.HBox?>
|
||||||
<?import javafx.scene.layout.Region?>
|
<?import javafx.scene.layout.Region?>
|
||||||
<?import javafx.scene.layout.StackPane?>
|
<?import javafx.scene.layout.StackPane?>
|
||||||
<?import javafx.scene.layout.VBox?>
|
<?import javafx.scene.layout.VBox?>
|
||||||
<?import javafx.scene.shape.Circle?>
|
<?import javafx.scene.shape.Circle?>
|
||||||
<VBox xmlns:fx="http://javafx.com/fxml"
|
<HBox xmlns:fx="http://javafx.com/fxml"
|
||||||
xmlns="http://javafx.com/javafx"
|
xmlns="http://javafx.com/javafx"
|
||||||
fx:controller="org.cryptomator.ui.error.ErrorController"
|
fx:controller="org.cryptomator.ui.error.ErrorController"
|
||||||
|
minWidth="450"
|
||||||
|
minHeight="450"
|
||||||
prefWidth="450"
|
prefWidth="450"
|
||||||
prefHeight="450"
|
prefHeight="450"
|
||||||
spacing="18"
|
spacing="12">
|
||||||
alignment="TOP_CENTER">
|
|
||||||
<padding>
|
<padding>
|
||||||
<Insets topRightBottomLeft="24"/>
|
<Insets topRightBottomLeft="24"/>
|
||||||
</padding>
|
</padding>
|
||||||
<children>
|
<Group>
|
||||||
<HBox spacing="12" VBox.vgrow="NEVER">
|
<StackPane>
|
||||||
<StackPane alignment="CENTER" HBox.hgrow="NEVER">
|
<padding>
|
||||||
<Circle styleClass="glyph-icon-primary" radius="24"/>
|
<Insets topRightBottomLeft="6"/>
|
||||||
<FontAwesome5IconView styleClass="glyph-icon-white" glyph="EXCLAMATION" glyphSize="24"/>
|
</padding>
|
||||||
</StackPane>
|
<Circle styleClass="glyph-icon-primary" radius="24"/>
|
||||||
<VBox spacing="6" HBox.hgrow="ALWAYS">
|
<FontAwesome5IconView styleClass="glyph-icon-white" glyph="EXCLAMATION" glyphSize="24"/>
|
||||||
<FormattedLabel styleClass="label-extra-large" format="%error.message" arg1="${controller.errorCode}"/>
|
</StackPane>
|
||||||
<VBox visible="${!controller.askedForLookupDatabasePermission}" managed="${!controller.askedForLookupDatabasePermission}">
|
</Group>
|
||||||
<Label text="%error.lookupPermissionMessage" wrapText="true"/>
|
<VBox HBox.hgrow="ALWAYS">
|
||||||
<Region VBox.vgrow="ALWAYS" minHeight="18"/>
|
<FormattedLabel styleClass="label-extra-large" format="%error.message" arg1="${controller.errorCode}">
|
||||||
<ButtonBar buttonMinWidth="120" buttonOrder="+NY">
|
<padding>
|
||||||
<buttons>
|
<Insets bottom="6" top="6"/>
|
||||||
<Button text="%error.dismiss" ButtonBar.buttonData="NO" onAction="#dismiss"/>
|
</padding>
|
||||||
<Button text="%error.lookUpSolution" ButtonBar.buttonData="YES" defaultButton="true" onAction="#lookUpSolution"/>
|
</FormattedLabel>
|
||||||
</buttons>
|
|
||||||
</ButtonBar>
|
|
||||||
</VBox>
|
|
||||||
<VBox visible="${controller.askedForLookupDatabasePermission}" managed="${controller.askedForLookupDatabasePermission}">
|
|
||||||
<FontAwesome5Spinner glyphSize="24" visible="${controller.isLoadingHttpResponse}" managed="${controller.isLoadingHttpResponse}"/>
|
|
||||||
<VBox visible="${!controller.isLoadingHttpResponse}" managed="${!controller.isLoadingHttpResponse}">
|
|
||||||
<Label text="%error.existingSolutionDescription" wrapText="true" visible="${controller.errorSolutionFound}" managed="${controller.errorSolutionFound}"/>
|
|
||||||
<Hyperlink styleClass="hyperlink-underline" text="%error.hyperlink.solution" onAction="#showSolution" contentDisplay="LEFT" visible="${controller.errorSolutionFound}" managed="${controller.errorSolutionFound}">
|
|
||||||
<graphic>
|
|
||||||
<FontAwesome5IconView glyph="LINK" glyphSize="12"/>
|
|
||||||
</graphic>
|
|
||||||
</Hyperlink>
|
|
||||||
<Label text="%error.description" wrapText="true" visible="${!controller.errorSolutionFound}" managed="${!controller.errorSolutionFound}"/>
|
|
||||||
<Hyperlink styleClass="hyperlink-underline" text="%error.hyperlink.lookup" onAction="#searchError" contentDisplay="LEFT" visible="${!controller.errorSolutionFound}" managed="${!controller.errorSolutionFound}">
|
|
||||||
<graphic>
|
|
||||||
<FontAwesome5IconView glyph="LINK" glyphSize="12"/>
|
|
||||||
</graphic>
|
|
||||||
</Hyperlink>
|
|
||||||
<Hyperlink styleClass="hyperlink-underline" text="%error.hyperlink.report" onAction="#reportError" contentDisplay="LEFT" visible="${!controller.errorSolutionFound}" managed="${!controller.errorSolutionFound}">
|
|
||||||
<graphic>
|
|
||||||
<FontAwesome5IconView glyph="LINK" glyphSize="12"/>
|
|
||||||
</graphic>
|
|
||||||
</Hyperlink>
|
|
||||||
</VBox>
|
|
||||||
</VBox>
|
|
||||||
</VBox>
|
|
||||||
</HBox>
|
|
||||||
<VBox spacing="6" VBox.vgrow="ALWAYS">
|
|
||||||
<HBox>
|
|
||||||
<Label text="%error.technicalDetails"/>
|
|
||||||
<Region HBox.hgrow="ALWAYS"/>
|
|
||||||
<Hyperlink styleClass="hyperlink-underline" text="%generic.button.copy" onAction="#copyDetails" contentDisplay="LEFT" visible="${!controller.copiedDetails}" managed="${!controller.copiedDetails}">
|
|
||||||
<graphic>
|
|
||||||
<FontAwesome5IconView glyph="CLIPBOARD" glyphSize="12"/>
|
|
||||||
</graphic>
|
|
||||||
</Hyperlink>
|
|
||||||
<Hyperlink styleClass="hyperlink-underline" text="%generic.button.copied" onAction="#copyDetails" contentDisplay="LEFT" visible="${controller.copiedDetails}" managed="${controller.copiedDetails}">
|
|
||||||
<graphic>
|
|
||||||
<FontAwesome5IconView glyph="CHECK" glyphSize="12"/>
|
|
||||||
</graphic>
|
|
||||||
</Hyperlink>
|
|
||||||
</HBox>
|
|
||||||
<TextArea VBox.vgrow="ALWAYS" text="${controller.detailText}" prefRowCount="5" editable="false"/>
|
|
||||||
</VBox>
|
|
||||||
|
|
||||||
|
<VBox visible="${!controller.askedForLookupDatabasePermission}" managed="${!controller.askedForLookupDatabasePermission}">
|
||||||
|
<Label text="%error.lookupPermissionMessage" wrapText="true"/>
|
||||||
|
<Region minHeight="12"/>
|
||||||
|
<ButtonBar buttonMinWidth="120" buttonOrder="+NY">
|
||||||
|
<buttons>
|
||||||
|
<Button text="%error.dismiss" ButtonBar.buttonData="NO" onAction="#dismiss"/>
|
||||||
|
<Button text="%error.lookUpSolution" ButtonBar.buttonData="YES" defaultButton="true" onAction="#lookUpSolution"/>
|
||||||
|
</buttons>
|
||||||
|
</ButtonBar>
|
||||||
|
</VBox>
|
||||||
|
<VBox visible="${controller.askedForLookupDatabasePermission}" managed="${controller.askedForLookupDatabasePermission}">
|
||||||
|
<FontAwesome5Spinner glyphSize="24" visible="${controller.isLoadingHttpResponse}" managed="${controller.isLoadingHttpResponse}"/>
|
||||||
|
<VBox visible="${!controller.isLoadingHttpResponse}" managed="${!controller.isLoadingHttpResponse}">
|
||||||
|
<Label text="%error.existingSolutionDescription" wrapText="true" visible="${controller.errorSolutionFound}" managed="${controller.errorSolutionFound}"/>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%error.hyperlink.solution" onAction="#showSolution" contentDisplay="LEFT" visible="${controller.errorSolutionFound}" managed="${controller.errorSolutionFound}">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyph="LINK" glyphSize="12"/>
|
||||||
|
</graphic>
|
||||||
|
</Hyperlink>
|
||||||
|
<Label text="%error.description" wrapText="true" visible="${!controller.errorSolutionFound}" managed="${!controller.errorSolutionFound}"/>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%error.hyperlink.lookup" onAction="#searchError" contentDisplay="LEFT" visible="${!controller.errorSolutionFound}" managed="${!controller.errorSolutionFound}">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyph="LINK" glyphSize="12"/>
|
||||||
|
</graphic>
|
||||||
|
</Hyperlink>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%error.hyperlink.report" onAction="#reportError" contentDisplay="LEFT" visible="${!controller.errorSolutionFound}" managed="${!controller.errorSolutionFound}">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyph="LINK" glyphSize="12"/>
|
||||||
|
</graphic>
|
||||||
|
</Hyperlink>
|
||||||
|
</VBox>
|
||||||
|
</VBox>
|
||||||
|
<Region minHeight="12"/>
|
||||||
|
<HBox>
|
||||||
|
<padding>
|
||||||
|
<Insets top="6" bottom="6"/>
|
||||||
|
</padding>
|
||||||
|
<Label text="%error.technicalDetails"/>
|
||||||
|
<Region HBox.hgrow="ALWAYS"/>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%generic.button.copy" onAction="#copyDetails" contentDisplay="LEFT" visible="${!controller.copiedDetails}" managed="${!controller.copiedDetails}">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyph="CLIPBOARD" glyphSize="12"/>
|
||||||
|
</graphic>
|
||||||
|
</Hyperlink>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%generic.button.copied" onAction="#copyDetails" contentDisplay="LEFT" visible="${controller.copiedDetails}" managed="${controller.copiedDetails}">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyph="CHECK" glyphSize="12"/>
|
||||||
|
</graphic>
|
||||||
|
</Hyperlink>
|
||||||
|
</HBox>
|
||||||
|
<TextArea VBox.vgrow="ALWAYS" text="${controller.detailText}" prefRowCount="5" editable="false"/>
|
||||||
|
|
||||||
|
<Region minHeight="18"/>
|
||||||
<ButtonBar buttonMinWidth="120" buttonOrder="B+C">
|
<ButtonBar buttonMinWidth="120" buttonOrder="B+C">
|
||||||
<buttons>
|
<buttons>
|
||||||
<Button text="%generic.button.back" ButtonBar.buttonData="BACK_PREVIOUS" onAction="#back" visible="${controller.previousScenePresent}"/>
|
<Button text="%generic.button.back" ButtonBar.buttonData="BACK_PREVIOUS" onAction="#back" visible="${controller.previousScenePresent}"/>
|
||||||
<Button text="%generic.button.cancel" ButtonBar.buttonData="CANCEL_CLOSE" onAction="#close"/>
|
<Button text="%generic.button.cancel" ButtonBar.buttonData="CANCEL_CLOSE" onAction="#close"/>
|
||||||
</buttons>
|
</buttons>
|
||||||
</ButtonBar>
|
</ButtonBar>
|
||||||
</children>
|
</VBox>
|
||||||
</VBox>
|
</HBox>
|
||||||
|
|||||||
@@ -1,13 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import org.cryptomator.ui.controls.FontAwesome5IconView?>
|
||||||
|
<?import org.cryptomator.ui.controls.FontAwesome5Spinner?>
|
||||||
<?import org.cryptomator.ui.controls.FormattedLabel?>
|
<?import org.cryptomator.ui.controls.FormattedLabel?>
|
||||||
<?import org.cryptomator.ui.controls.FormattedString?>
|
<?import org.cryptomator.ui.controls.FormattedString?>
|
||||||
<?import javafx.geometry.Insets?>
|
<?import javafx.geometry.Insets?>
|
||||||
<?import javafx.scene.control.Button?>
|
<?import javafx.scene.control.Button?>
|
||||||
<?import javafx.scene.control.CheckBox?>
|
<?import javafx.scene.control.CheckBox?>
|
||||||
<?import javafx.scene.control.Hyperlink?>
|
<?import javafx.scene.control.Hyperlink?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.layout.HBox?>
|
||||||
<?import javafx.scene.layout.VBox?>
|
<?import javafx.scene.layout.VBox?>
|
||||||
<?import org.cryptomator.ui.controls.FontAwesome5Spinner?>
|
<?import javafx.scene.control.Tooltip?>
|
||||||
|
<?import javafx.scene.text.TextFlow?>
|
||||||
|
<?import javafx.scene.text.Text?>
|
||||||
<VBox xmlns:fx="http://javafx.com/fxml"
|
<VBox xmlns:fx="http://javafx.com/fxml"
|
||||||
xmlns="http://javafx.com/javafx"
|
xmlns="http://javafx.com/javafx"
|
||||||
fx:controller="org.cryptomator.ui.preferences.UpdatesPreferencesController"
|
fx:controller="org.cryptomator.ui.preferences.UpdatesPreferencesController"
|
||||||
@@ -18,19 +24,34 @@
|
|||||||
<padding>
|
<padding>
|
||||||
<Insets topRightBottomLeft="24"/>
|
<Insets topRightBottomLeft="24"/>
|
||||||
</padding>
|
</padding>
|
||||||
<children>
|
<FormattedLabel format="%preferences.updates.currentVersion" arg1="${controller.currentVersion}" textAlignment="CENTER" wrapText="true"/>
|
||||||
<FormattedLabel format="%preferences.updates.currentVersion" arg1="${controller.currentVersion}" textAlignment="CENTER" wrapText="true"/>
|
|
||||||
|
|
||||||
<CheckBox fx:id="checkForUpdatesCheckbox" text="%preferences.updates.autoUpdateCheck"/>
|
<CheckBox fx:id="checkForUpdatesCheckbox" text="%preferences.updates.autoUpdateCheck"/>
|
||||||
|
|
||||||
<VBox alignment="CENTER" spacing="12">
|
<VBox alignment="CENTER" spacing="12">
|
||||||
<Button text="%preferences.updates.checkNowBtn" defaultButton="true" onAction="#checkNow" contentDisplay="${controller.checkForUpdatesButtonState}">
|
<Button text="%preferences.updates.checkNowBtn" defaultButton="true" onAction="#checkNow" contentDisplay="${controller.checkForUpdatesButtonState}">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesome5Spinner fx:id="spinner" glyphSize="12"/>
|
<FontAwesome5Spinner glyphSize="12"/>
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Hyperlink text="${linkLabel.value}" onAction="#visitDownloadsPage" textAlignment="CENTER" wrapText="true" styleClass="hyperlink-underline" visible="${controller.updateAvailable}"/>
|
<TextFlow styleClass="text-flow" textAlignment="CENTER" visible="${controller.checkFailed}" managed="${controller.checkFailed}">
|
||||||
</VBox>
|
<FontAwesome5IconView glyphSize="12" styleClass="glyph-icon-orange" glyph="EXCLAMATION_TRIANGLE"/>
|
||||||
</children>
|
<Text text=" "/>
|
||||||
|
<Text text="%preferences.updates.checkFailed"/>
|
||||||
|
<Text text=" "/>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%preferences.general.debugDirectory" onAction="#showLogfileDirectory"/>
|
||||||
|
</TextFlow>
|
||||||
|
<FormattedLabel format="%preferences.updates.lastUpdateCheck" arg1="${controller.timeDifferenceMessage}" textAlignment="CENTER" wrapText="true">
|
||||||
|
<tooltip>
|
||||||
|
<Tooltip text="${controller.lastUpdateCheckMessage}" showDelay="10ms"/>
|
||||||
|
</tooltip>
|
||||||
|
</FormattedLabel>
|
||||||
|
<Label text="%preferences.updates.upToDate" visible="${controller.upToDateLabelVisible}" managed="${controller.upToDateLabelVisible}">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyphSize="12" styleClass="glyph-icon-primary" glyph="CHECK"/>
|
||||||
|
</graphic>
|
||||||
|
</Label>
|
||||||
|
<Hyperlink text="${linkLabel.value}" onAction="#visitDownloadsPage" textAlignment="CENTER" wrapText="true" styleClass="hyperlink-underline" visible="${controller.updateAvailable}" managed="${controller.updateAvailable}"/>
|
||||||
|
</VBox>
|
||||||
</VBox>
|
</VBox>
|
||||||
|
|||||||
@@ -321,6 +321,14 @@ preferences.updates.currentVersion=Current Version: %s
|
|||||||
preferences.updates.autoUpdateCheck=Check for updates automatically
|
preferences.updates.autoUpdateCheck=Check for updates automatically
|
||||||
preferences.updates.checkNowBtn=Check Now
|
preferences.updates.checkNowBtn=Check Now
|
||||||
preferences.updates.updateAvailable=Update to version %s available.
|
preferences.updates.updateAvailable=Update to version %s available.
|
||||||
|
preferences.updates.lastUpdateCheck=Last check: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=never
|
||||||
|
preferences.updates.lastUpdateCheck.recently=recently
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s days ago
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s hours ago
|
||||||
|
preferences.updates.checkFailed=Looking for updates failed. Please check your internet connection or try again later.
|
||||||
|
preferences.updates.upToDate=Cryptomator is up-to-date.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Support Us
|
preferences.contribute=Support Us
|
||||||
preferences.contribute.registeredFor=Supporter certificate registered for %s
|
preferences.contribute.registeredFor=Supporter certificate registered for %s
|
||||||
@@ -533,6 +541,12 @@ updateReminder.notNow=Not Now
|
|||||||
updateReminder.yesOnce=Yes, Once
|
updateReminder.yesOnce=Yes, Once
|
||||||
updateReminder.yesAutomatically=Yes, Automatically
|
updateReminder.yesAutomatically=Yes, Automatically
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Deprecation notice
|
||||||
|
dokanySupportEnd.message=Support end for Dokany
|
||||||
|
dokanySupportEnd.description=The volume type Dokany is no longer supported by Cryptomator. Your settings are adjusted to use the default volume type now. You can view the default type in the preferences.
|
||||||
|
dokanySupportEnd.preferencesBtn=Open Preferences
|
||||||
|
|
||||||
# Share Vault
|
# Share Vault
|
||||||
shareVault.title=Share Vault
|
shareVault.title=Share Vault
|
||||||
shareVault.message=Would you like to share your vault with others?
|
shareVault.message=Would you like to share your vault with others?
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=اختر اسم للمخزن
|
|||||||
addvaultwizard.new.namePrompt=اسم الخزينة
|
addvaultwizard.new.namePrompt=اسم الخزينة
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=أين يجب على Cryptomator تخزين الملفات المشفرة للمخزن الخاص بك؟
|
addvaultwizard.new.locationInstruction=أين يجب على Cryptomator تخزين الملفات المشفرة للمخزن الخاص بك؟
|
||||||
|
addvaultwizard.new.locationLoading=جاري التحقق من وجود مسارات تخزين سحابية افتراضية في نظام الملفات المحلية…
|
||||||
addvaultwizard.new.locationLabel=موقع التخزين
|
addvaultwizard.new.locationLabel=موقع التخزين
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=موقع مخصص
|
addvaultwizard.new.directoryPickerLabel=موقع مخصص
|
||||||
@@ -141,6 +142,9 @@ unlock.error.customPath.description.hideawayNotDir=لا يمكن إزالة ال
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=لا يمكن تركيب خزانتك على المسار "%s". الرجاء المحاولة مرة أخرى أو اختيار مسار مختلف.
|
unlock.error.customPath.description.couldNotBeCleaned=لا يمكن تركيب خزانتك على المسار "%s". الرجاء المحاولة مرة أخرى أو اختيار مسار مختلف.
|
||||||
unlock.error.customPath.description.notEmptyDir=مسار التركيب المخصص "%s" ليس مجلد فارغ. الرجاء اختيار مجلد فارغ وحاول مرة أخرى.
|
unlock.error.customPath.description.notEmptyDir=مسار التركيب المخصص "%s" ليس مجلد فارغ. الرجاء اختيار مجلد فارغ وحاول مرة أخرى.
|
||||||
unlock.error.customPath.description.generic=لقد اخترت مسار تركيب مخصص لهذه الخزانة، ولكن استخدامه فشل مع الرسالة: %2$s
|
unlock.error.customPath.description.generic=لقد اخترت مسار تركيب مخصص لهذه الخزانة، ولكن استخدامه فشل مع الرسالة: %2$s
|
||||||
|
unlock.error.restartRequired.message=غير قادر على فتح الخزنة
|
||||||
|
unlock.error.restartRequired.description=اختر نوع قرص آخر في خيارات المخزن أو اعد تشغيل Cryptomator.
|
||||||
|
unlock.error.title=فشل فتح "%s"
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=غير قادر على الوصول إلى مفتاح الجهاز
|
hub.noKeychain.message=غير قادر على الوصول إلى مفتاح الجهاز
|
||||||
hub.noKeychain.description=من أجل فتح مركز مخازن، مطلوب مفتاح جهاز، يتم تأمينه باستخدام سلسلة مفاتيح. للمضي قدما، قم بتمكين "%s" واختر سلسلة مفاتيح في التفضيلات.
|
hub.noKeychain.description=من أجل فتح مركز مخازن، مطلوب مفتاح جهاز، يتم تأمينه باستخدام سلسلة مفاتيح. للمضي قدما، قم بتمكين "%s" واختر سلسلة مفاتيح في التفضيلات.
|
||||||
@@ -153,15 +157,22 @@ hub.auth.loginLink=لم يتم إعادة توجيهك؟ انقر هنا لفت
|
|||||||
hub.receive.message=معالجة الاستجابة…
|
hub.receive.message=معالجة الاستجابة…
|
||||||
hub.receive.description=Cryptomator يتلقى ويعالج الاستجابة من المركز. الرجاء الانتظار.
|
hub.receive.description=Cryptomator يتلقى ويعالج الاستجابة من المركز. الرجاء الانتظار.
|
||||||
### Register Device
|
### Register Device
|
||||||
|
hub.register.message=جهاز جديد
|
||||||
|
hub.register.description=هذا هو أول وصول مركزي من هذا الجهاز. الرجاء تسجيله باستخدام مفتاح الحساب الخاص بك.
|
||||||
hub.register.nameLabel=اسم الجهاز
|
hub.register.nameLabel=اسم الجهاز
|
||||||
hub.register.occupiedMsg=الاسم مستخدم مسبقاً
|
hub.register.invalidAccountKeyLabel=مفتاح الحساب غير صحيح
|
||||||
hub.register.registerBtn=تأكيد
|
hub.register.registerBtn=تسجيل
|
||||||
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=الاسم قيد الاستخدام
|
||||||
|
hub.register.legacy.description=هذا هو أول وصول للمركز من هذا الجهاز. الرجاء تسجيله.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=تم تسمية الجهاز
|
hub.registerSuccess.message=تم تسجيل الجهاز
|
||||||
hub.registerSuccess.description=للدخول إلى الخزينة، يحتاج جهازك إلى إذن من مالك الخزينة.
|
hub.registerSuccess.description=تم تسجيل جهازك بنجاح. يمكنك الآن المتابعة لفتح الخزنة.
|
||||||
|
hub.registerSuccess.unlockBtn=افتح
|
||||||
|
hub.registerSuccess.legacy.description=للدخول إلى الخزينة، يحتاج جهازك كذالك إلى إذن من مالك الخزينة.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=أخفق في تسمية الجهاز
|
hub.registerFailed.message=فشل تسجيل الجهاز
|
||||||
hub.registerFailed.description=خطأ في عملية التسمية. لمزيد من التفاصيل، انظر إلى سجل التطبيق.
|
hub.registerFailed.description.generic=حدث خطأ في عملية تسجيل الاسم. لمزيد من التفاصيل، راجع سجل التطبيق.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=تم رفض الوصول
|
hub.unauthorized.message=تم رفض الوصول
|
||||||
hub.unauthorized.description=لم يتم بعد منح الإذن لجهازك بالوصول إلى هذا المخزن. اطلب من مالك المخزن أن يأذن بذلك.
|
hub.unauthorized.description=لم يتم بعد منح الإذن لجهازك بالوصول إلى هذا المخزن. اطلب من مالك المخزن أن يأذن بذلك.
|
||||||
@@ -287,16 +298,21 @@ preferences.interface.showMinimizeButton=إظهار زر التصغير
|
|||||||
preferences.interface.showTrayIcon=إظهار أيقونة اللوحة (يتطلب إعادة تشغيل)
|
preferences.interface.showTrayIcon=إظهار أيقونة اللوحة (يتطلب إعادة تشغيل)
|
||||||
## Volume
|
## Volume
|
||||||
preferences.volume=القرص الإفتراضي
|
preferences.volume=القرص الإفتراضي
|
||||||
|
preferences.volume.type=نوع القرص الافتراضي
|
||||||
preferences.volume.type.automatic=تلقائي
|
preferences.volume.type.automatic=تلقائي
|
||||||
preferences.volume.docsTooltip=افتح الوثائق لمعرفة المزيد عن مختلف أنواع وحدة التخزين.
|
preferences.volume.docsTooltip=افتح الوثائق لمعرفة المزيد عن مختلف أنواع وحدة التخزين.
|
||||||
preferences.volume.fuseRestartRequired=لتطبيق التغييرات، يحتاج Cryptomator إلى إعادة التشغيل.
|
preferences.volume.fuseRestartRequired=لتطبيق التغييرات، يحتاج Cryptomator إلى إعادة التشغيل.
|
||||||
|
preferences.volume.tcp.port=منفذ TCP الافتراضي
|
||||||
preferences.volume.supportedFeatures=يدعم نوع وحدة تخزين المختار الميزات التالية:
|
preferences.volume.supportedFeatures=يدعم نوع وحدة تخزين المختار الميزات التالية:
|
||||||
|
preferences.volume.feature.mountAuto=اختيار نقطة البَدْء التلقائية
|
||||||
|
preferences.volume.feature.readOnly=تحميل للقراءة فقط
|
||||||
## Updates
|
## Updates
|
||||||
preferences.updates=تحديثات
|
preferences.updates=تحديثات
|
||||||
preferences.updates.currentVersion=الإصدار الحالي: %s
|
preferences.updates.currentVersion=الإصدار الحالي: %s
|
||||||
preferences.updates.autoUpdateCheck=تحقق من التحديثات اوتوماتيكيا
|
preferences.updates.autoUpdateCheck=تحقق من التحديثات اوتوماتيكيا
|
||||||
preferences.updates.checkNowBtn=تحقق الان
|
preferences.updates.checkNowBtn=تحقق الان
|
||||||
preferences.updates.updateAvailable=التحديث إلى الإصدار %s متاح.
|
preferences.updates.updateAvailable=التحديث إلى الإصدار %s متاح.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=ادعمنا
|
preferences.contribute=ادعمنا
|
||||||
preferences.contribute.registeredFor=شهادة الداعم مسجلة لـ %s
|
preferences.contribute.registeredFor=شهادة الداعم مسجلة لـ %s
|
||||||
@@ -313,6 +329,8 @@ stats.title=إحصائيات عن %s
|
|||||||
stats.cacheHitRate=معدل استخدام الكاش
|
stats.cacheHitRate=معدل استخدام الكاش
|
||||||
## Read
|
## Read
|
||||||
stats.read.throughput.idle=قراءة: خامل
|
stats.read.throughput.idle=قراءة: خامل
|
||||||
|
stats.read.throughput.kibs=القراءة: %.2f KiB/s
|
||||||
|
stats.read.throughput.mibs=القراءة: %.2f MiB/s
|
||||||
stats.decr.total.data.none=تم فك تشفير البيانات:-
|
stats.decr.total.data.none=تم فك تشفير البيانات:-
|
||||||
## Write
|
## Write
|
||||||
stats.write.total.data.mib=البيانات المكتوبة: %.1f م.ب
|
stats.write.total.data.mib=البيانات المكتوبة: %.1f م.ب
|
||||||
@@ -400,21 +418,27 @@ vaultOptions.mount.mountPoint=موقع التحميل الوهمي
|
|||||||
vaultOptions.mount.mountPoint.auto=اختيار موقع مناسب تلقائياً
|
vaultOptions.mount.mountPoint.auto=اختيار موقع مناسب تلقائياً
|
||||||
vaultOptions.mount.mountPoint.driveLetter=استخدام دالة قرص معين
|
vaultOptions.mount.mountPoint.driveLetter=استخدام دالة قرص معين
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=اختر…
|
vaultOptions.mount.mountPoint.directoryPickerButton=اختر…
|
||||||
|
vaultOptions.mount.volumeType.default=الافتراضي (%s)
|
||||||
|
vaultOptions.mount.volume.tcp.port=منفذ TCP
|
||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey=كلمة المرور
|
vaultOptions.masterkey=كلمة المرور
|
||||||
vaultOptions.masterkey.changePasswordBtn=تغيير كلمة المرور
|
vaultOptions.masterkey.changePasswordBtn=تغيير كلمة المرور
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=نسيان كلمة المرور المحفوظة
|
vaultOptions.masterkey.forgetSavedPasswordBtn=نسيان كلمة المرور المحفوظة
|
||||||
vaultOptions.masterkey.recoveryKeyExplanation=مفتاح الاسترداد هو وسيلتك الوحيدة لاستعادة الوصول إلى مخزنك إذا فقدت كلمة المرور.
|
vaultOptions.masterkey.recoveryKeyExplanation=مفتاح الاسترداد هو وسيلتك الوحيدة لاستعادة الوصول إلى مخزنك إذا فقدت كلمة المرور.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=عرض مفتاح الاسترداد
|
vaultOptions.masterkey.showRecoveryKeyBtn=عرض مفتاح الاسترداد
|
||||||
|
vaultOptions.masterkey.recoverPasswordBtn=إعادة تعيين كلمة المرور
|
||||||
## Hub
|
## Hub
|
||||||
|
vaultOptions.hub=الإسترداد
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
## Display Recovery Key
|
## Display Recovery Key
|
||||||
|
recoveryKey.create.message=مطلوب كلمة المرور
|
||||||
recoveryKey.create.description=أدخل كلمة المرور الخاصة بك لإظهار مفتاح الاسترداد ل "%s":
|
recoveryKey.create.description=أدخل كلمة المرور الخاصة بك لإظهار مفتاح الاسترداد ل "%s":
|
||||||
recoveryKey.display.description=يمكن استخدام مفتاح الاسترداد التالي لاستعادة الوصول إلى "%s":
|
recoveryKey.display.description=يمكن استخدام مفتاح الاسترداد التالي لاستعادة الوصول إلى "%s":
|
||||||
recoveryKey.display.StorageHints=حافظ عليه في مكان ما آمن جداً، على سبيل المثال\n • تخزينه باستخدام مدير كلمات المرور\n • حفظه على محرك أقراص خارجي USB\n • كتابته أو طباعته على الورق
|
recoveryKey.display.StorageHints=حافظ عليه في مكان ما آمن جداً، على سبيل المثال\n • تخزينه باستخدام مدير كلمات المرور\n • حفظه على محرك أقراص خارجي USB\n • كتابته أو طباعته على الورق
|
||||||
## Reset Password
|
## Reset Password
|
||||||
### Enter Recovery Key
|
### Enter Recovery Key
|
||||||
|
recoveryKey.recover.title=إعادة تعيين كلمة المرور
|
||||||
recoveryKey.recover.correctKey=هذا مفتاح استرداد صالح
|
recoveryKey.recover.correctKey=هذا مفتاح استرداد صالح
|
||||||
recoveryKey.printout.heading=مفتاح استرداد Cryptomator\n"%s"\n
|
recoveryKey.printout.heading=مفتاح استرداد Cryptomator\n"%s"\n
|
||||||
### Reset Password
|
### Reset Password
|
||||||
@@ -439,4 +463,9 @@ quit.lockAndQuitBtn=قفل و خروج
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=فتح التفضيلات
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -141,8 +141,6 @@ unlock.error.customPath.description.hideawayNotDir=Асыу өсөн ҡулла
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Һаҡлағысығыҙ "%s" юлына тоташтырылманы. Тағы бер тапҡыр ҡабатлап ҡарағыҙ йәки икенсе юл һайлағыҙ.
|
unlock.error.customPath.description.couldNotBeCleaned=Һаҡлағысығыҙ "%s" юлына тоташтырылманы. Тағы бер тапҡыр ҡабатлап ҡарағыҙ йәки икенсе юл һайлағыҙ.
|
||||||
unlock.error.customPath.description.notEmptyDir="%s" махсус тоташтырыу урыны буш каталог түгел. Зинһар, буш каталог һайлағыҙ һәм яңынан ҡабатлағыҙ.
|
unlock.error.customPath.description.notEmptyDir="%s" махсус тоташтырыу урыны буш каталог түгел. Зинһар, буш каталог һайлағыҙ һәм яңынан ҡабатлағыҙ.
|
||||||
unlock.error.customPath.description.generic=Һеҙ был һаҡлағыс өсөн махсус тоташтырыу урыны һайланығыҙ, ләкин уны ҡулланыу киләһе хәбәр менән уңышһыҙ тамамланды: %2$s
|
unlock.error.customPath.description.generic=Һеҙ был һаҡлағыс өсөн махсус тоташтырыу урыны һайланығыҙ, ләкин уны ҡулланыу киләһе хәбәр менән уңышһыҙ тамамланды: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Һаҡлағыс биген сисеп булманы
|
|
||||||
unlock.error.fuseRestartRequired.description=Һаҡлағыс параметрҙарында күләм төрөн үҙгәртеү йәки Cryptomator-ҙы яңынан башлатыу.
|
|
||||||
unlock.error.title="%s" биге асылманы
|
unlock.error.title="%s" биге асылманы
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Йыһаз асҡысына инеү рөхсәте юҡ
|
hub.noKeychain.message=Йыһаз асҡысына инеү рөхсәте юҡ
|
||||||
@@ -157,17 +155,13 @@ hub.receive.message=Яуапты эшкәртеү…
|
|||||||
hub.receive.description=Cryptomator хабтан килгән яуапты ҡабул итә һәм эшкәртә. Зинһар, көтөгөҙ.
|
hub.receive.description=Cryptomator хабтан килгән яуапты ҡабул итә һәм эшкәртә. Зинһар, көтөгөҙ.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Яңы йыһаз
|
hub.register.message=Яңы йыһаз
|
||||||
hub.register.description=Был йыһаздан хабҡа тәү тапҡыр инеү. Зинһар, иҫәп яҙмаһы асҡысы менән рөхсәт бирегеҙ.
|
|
||||||
hub.register.nameLabel=Йыһаз исеме
|
hub.register.nameLabel=Йыһаз исеме
|
||||||
hub.register.invalidAccountKeyLabel=Хаталы иҫәп яҙмаһы асҡысы
|
hub.register.invalidAccountKeyLabel=Хаталы иҫәп яҙмаһы асҡысы
|
||||||
hub.register.occupiedMsg=Исем ҡулланыла инде
|
hub.register.registerBtn=Теркәл
|
||||||
hub.register.registerBtn=Раҫла
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Йыһаз исемләнде
|
hub.registerSuccess.unlockBtn=Биген ас
|
||||||
hub.registerSuccess.description=Һаҡлағысҡа инеү өсөн һаҡлағыс хужаһы йыһазығыҙға инеү рөхсәте бирергә тейеш.
|
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Йыһазға исем биреп булманы
|
|
||||||
hub.registerFailed.description=Исемләү процесында хата килеп сыҡты. Тулыраҡ мәғлүмәт өсөн ҡушымта журналын ҡарағыҙ.
|
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Инеү кире ҡағылды
|
hub.unauthorized.message=Инеү кире ҡағылды
|
||||||
hub.unauthorized.description=Һеҙҙең йыһаз әлегә был һаҡлағысҡа инеү хоҡуғына эйә түгел. Һаҡлағыс хужаһынан рөхсәт һорағыҙ.
|
hub.unauthorized.description=Һеҙҙең йыһаз әлегә был һаҡлағысҡа инеү хоҡуғына эйә түгел. Һаҡлағыс хужаһынан рөхсәт һорағыҙ.
|
||||||
@@ -314,6 +308,7 @@ preferences.updates.currentVersion=Ағымдағы версия: %s
|
|||||||
preferences.updates.autoUpdateCheck=Яңыртыуҙарҙы автоматик рәүештә тикшереү
|
preferences.updates.autoUpdateCheck=Яңыртыуҙарҙы автоматик рәүештә тикшереү
|
||||||
preferences.updates.checkNowBtn=Хәҙер тикшер
|
preferences.updates.checkNowBtn=Хәҙер тикшер
|
||||||
preferences.updates.updateAvailable=%s версияһына тиклем яңыртыу бар.
|
preferences.updates.updateAvailable=%s версияһына тиклем яңыртыу бар.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Ярҙам
|
preferences.contribute=Ярҙам
|
||||||
preferences.contribute.registeredFor=%s өсөн теркәлгән ярҙамсы сертификаты
|
preferences.contribute.registeredFor=%s өсөн теркәлгән ярҙамсы сертификаты
|
||||||
@@ -451,7 +446,6 @@ vaultOptions.mount.mountPoint.custom=Һайланған каталог ҡулл
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Һайла…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Һайла…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Каталог һайлау
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Каталог һайлау
|
||||||
vaultOptions.mount.volumeType.default=Ғәҙәттәгеләр (%s)
|
vaultOptions.mount.volumeType.default=Ғәҙәттәгеләр (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Был том төрөн ҡулланыу өсөн Cryptomator-ҙы яңынан асыу кәрәк.
|
|
||||||
vaultOptions.mount.volume.tcp.port=TCP порты
|
vaultOptions.mount.volume.tcp.port=TCP порты
|
||||||
vaultOptions.mount.volume.type=Том төрө
|
vaultOptions.mount.volume.type=Том төрө
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -498,17 +492,34 @@ convertVault.hubToPassword.success.description=Хәҙер һеҙ һайланғ
|
|||||||
newPassword.promptText=Яңы серһүҙ яҙығыҙ
|
newPassword.promptText=Яңы серһүҙ яҙығыҙ
|
||||||
newPassword.reenterPassword=Яңы серһүҙҙе раҫлағыҙ
|
newPassword.reenterPassword=Яңы серһүҙҙе раҫлағыҙ
|
||||||
newPassword.passwordsMatch=Серһүҙҙәр тап килә!
|
newPassword.passwordsMatch=Серһүҙҙәр тап килә!
|
||||||
|
newPassword.passwordsDoNotMatch=Серһүҙҙәр тап килмәй
|
||||||
|
passwordStrength.messageLabel.tooShort=Кәмендә %d билдә ҡулланығыҙ
|
||||||
|
passwordStrength.messageLabel.0=Бик көсһөҙ
|
||||||
|
passwordStrength.messageLabel.1=Көсһөҙ
|
||||||
|
passwordStrength.messageLabel.2=Уртаса
|
||||||
|
passwordStrength.messageLabel.3=Көслө
|
||||||
|
passwordStrength.messageLabel.4=Бик көслө
|
||||||
|
|
||||||
# Quit
|
# Quit
|
||||||
quit.title=Ҡушымтанан сығыу
|
quit.title=Ҡушымтанан сығыу
|
||||||
|
quit.message=Асыҡ һаҡлағыстар бар
|
||||||
quit.description=Сығырға теләүегеҙҙе раҫлағыҙ. Cryptomator мәғлүмәтте юғалтыуҙан һаҡлар өсөн бөтә һаҡлағыстарҙы бикләп ҡуя.
|
quit.description=Сығырға теләүегеҙҙе раҫлағыҙ. Cryptomator мәғлүмәтте юғалтыуҙан һаҡлар өсөн бөтә һаҡлағыстарҙы бикләп ҡуя.
|
||||||
quit.lockAndQuitBtn=Биклә һәм сыҡ
|
quit.lockAndQuitBtn=Биклә һәм сыҡ
|
||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
quit.forced.message=Ҡайһы бер һаҡлағыстарҙы бикләп булмай
|
||||||
quit.forced.description=Көтөп торған ғәмәлдәр йәки асыҡ файлдар һаҡлағыстарҙы бикләүҙе тотҡарланы. Был һаҡлағыстарҙы көсләп бикләп була, ләкин инеү-сығыуҙы өҙөү һаҡланмаған мәғлүмәттәрҙе юғалтыуға килтереүе ихтимал.
|
quit.forced.description=Көтөп торған ғәмәлдәр йәки асыҡ файлдар һаҡлағыстарҙы бикләүҙе тотҡарланы. Был һаҡлағыстарҙы көсләп бикләп була, ләкин инеү-сығыуҙы өҙөү һаҡланмаған мәғлүмәттәрҙе юғалтыуға килтереүе ихтимал.
|
||||||
|
quit.forced.forceAndQuitBtn=Көсләп биклә һәм сыҡ
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
updateReminder.title=Яңыртыуҙарҙы тикшереү
|
||||||
|
updateReminder.message=Яңыртыуҙарҙы тикшерергәме?
|
||||||
updateReminder.description=Яңы үҙенсәлектәр, хаталарҙы төҙәтеү, хәүефһеҙлекте яҡшыртыу менән яңыртылып торорға. Яңыртыуҙарҙы автоматик рәүештә тикшереүҙе кәңәш итәбеҙ.
|
updateReminder.description=Яңы үҙенсәлектәр, хаталарҙы төҙәтеү, хәүефһеҙлекте яҡшыртыу менән яңыртылып торорға. Яңыртыуҙарҙы автоматик рәүештә тикшереүҙе кәңәш итәбеҙ.
|
||||||
updateReminder.notNow=Хәҙер түгел
|
updateReminder.notNow=Хәҙер түгел
|
||||||
updateReminder.yesOnce=Эйе, бер тапҡыр
|
updateReminder.yesOnce=Эйе, бер тапҡыр
|
||||||
updateReminder.yesAutomatically=Эйе, автоматик рәүештә
|
updateReminder.yesAutomatically=Эйе, автоматик рәүештә
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Көйләүҙәрҙе ас
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -151,14 +151,10 @@ hub.receive.description=Cryptomator атрымлівае ды апрацоўва
|
|||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Новая прылада
|
hub.register.message=Новая прылада
|
||||||
hub.register.nameLabel=Назва прылады
|
hub.register.nameLabel=Назва прылады
|
||||||
hub.register.occupiedMsg=Назва ўжо ўжытая
|
### Register Device Legacy
|
||||||
hub.register.registerBtn=Пацвердзіць
|
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Прылада атрымала назву
|
hub.registerSuccess.unlockBtn=Адамкнуць
|
||||||
hub.registerSuccess.description=Каб атрымаць доступ да скарбніцы, твая прылада мусіць быць спраўджанай уладальнікам скарбніцы.
|
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Памылка пры называнні прылады
|
|
||||||
hub.registerFailed.description=Падчас прысваення імя адбылася памылка. Па дэтальную інфармацыю звярніся да пратаколу праграмы.
|
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Адмова ў доступе
|
hub.unauthorized.message=Адмова ў доступе
|
||||||
hub.unauthorized.description=Тваёй прыладзе ў дадзены момант не дазволена мець доступ да гэтай скрабніцы. Запытайся ўладальніка скрабніцы за дазволам.
|
hub.unauthorized.description=Тваёй прыладзе ў дадзены момант не дазволена мець доступ да гэтай скрабніцы. Запытайся ўладальніка скрабніцы за дазволам.
|
||||||
@@ -299,6 +295,7 @@ preferences.updates.currentVersion=Бягучая версія: %s
|
|||||||
preferences.updates.autoUpdateCheck=Правяраць наяўнасць абнаўленняў аўтаматычна
|
preferences.updates.autoUpdateCheck=Правяраць наяўнасць абнаўленняў аўтаматычна
|
||||||
preferences.updates.checkNowBtn=Праверыць зараз
|
preferences.updates.checkNowBtn=Праверыць зараз
|
||||||
preferences.updates.updateAvailable=Даступна абнаўленне да версіі %s
|
preferences.updates.updateAvailable=Даступна абнаўленне да версіі %s
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Падтрымай нас
|
preferences.contribute=Падтрымай нас
|
||||||
preferences.contribute.registeredFor=Сэртыфікат ахвяравальніка зарэгістраваны на %s
|
preferences.contribute.registeredFor=Сэртыфікат ахвяравальніка зарэгістраваны на %s
|
||||||
@@ -500,4 +497,9 @@ updateReminder.title=Праверка абнаўленняў
|
|||||||
updateReminder.message=Ці праверыць абнаўленні?
|
updateReminder.message=Ці праверыць абнаўленні?
|
||||||
updateReminder.notNow=Не цяпер
|
updateReminder.notNow=Не цяпер
|
||||||
updateReminder.yesOnce=Так, аднойчы
|
updateReminder.yesOnce=Так, аднойчы
|
||||||
updateReminder.yesAutomatically=Так, аўтаматычна
|
updateReminder.yesAutomatically=Так, аўтаматычна
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Адчыніць налады
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -141,8 +141,6 @@ unlock.error.customPath.description.hideawayNotDir=Временният, скр
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Хранилището не може да бъде монтирано на „%s“. Опитайте отново или изберете друг път.
|
unlock.error.customPath.description.couldNotBeCleaned=Хранилището не може да бъде монтирано на „%s“. Опитайте отново или изберете друг път.
|
||||||
unlock.error.customPath.description.notEmptyDir=Потребителският път на монтиране „%s“ не е празна папка. Изберете празна папка и опитайте отново.
|
unlock.error.customPath.description.notEmptyDir=Потребителският път на монтиране „%s“ не е празна папка. Изберете празна папка и опитайте отново.
|
||||||
unlock.error.customPath.description.generic=Избрали сте потребителски път за монтиране на това хранилище, но при използването му възникна следната грешка: %2$s
|
unlock.error.customPath.description.generic=Избрали сте потребителски път за монтиране на това хранилище, но при използването му възникна следната грешка: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Хранилището не може да бъде отключено
|
|
||||||
unlock.error.fuseRestartRequired.description=Променете вида на тома в настройките на хранилището или рестартирайте Криптоматор.
|
|
||||||
unlock.error.title=Неуспешно отключване на „%s“
|
unlock.error.title=Неуспешно отключване на „%s“
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Няма достъп до ключа на устройството
|
hub.noKeychain.message=Няма достъп до ключа на устройството
|
||||||
@@ -157,17 +155,13 @@ hub.receive.message=Обработване на отговора…
|
|||||||
hub.receive.description=Криптоматор получава и обработва отговора от Hub. Изчакайте.
|
hub.receive.description=Криптоматор получава и обработва отговора от Hub. Изчакайте.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Ново устройство
|
hub.register.message=Ново устройство
|
||||||
hub.register.description=За пръв път посещавате Hub от това устройство. Удостоверете го, като използвате ключа на профила.
|
|
||||||
hub.register.nameLabel=Име на устройството
|
hub.register.nameLabel=Име на устройството
|
||||||
hub.register.invalidAccountKeyLabel=Неприемлив ключ на профила
|
hub.register.invalidAccountKeyLabel=Неприемлив ключ на профила
|
||||||
hub.register.occupiedMsg=Това име вече е заето
|
hub.register.registerBtn=Регистриране
|
||||||
hub.register.registerBtn=Потвърждаване
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Устройството е именувано
|
hub.registerSuccess.unlockBtn=Отключване
|
||||||
hub.registerSuccess.description=За да получи достъп до хранилището, устройството трябва да бъде упълномощено от собственика на хранилището.
|
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Грешка при именуване на устройството
|
|
||||||
hub.registerFailed.description=В процеса на именуване е допусната грешка. За повече подробности разгледайте дневника на приложението.
|
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Отказан достъп
|
hub.unauthorized.message=Отказан достъп
|
||||||
hub.unauthorized.description=Устройството не е упълномощено за достъп до това хранилище. Поискайте достъп от собственика.
|
hub.unauthorized.description=Устройството не е упълномощено за достъп до това хранилище. Поискайте достъп от собственика.
|
||||||
@@ -314,6 +308,7 @@ preferences.updates.currentVersion=Текущо издание: %s
|
|||||||
preferences.updates.autoUpdateCheck=Автоматична проверка за издания
|
preferences.updates.autoUpdateCheck=Автоматична проверка за издания
|
||||||
preferences.updates.checkNowBtn=Проверяване
|
preferences.updates.checkNowBtn=Проверяване
|
||||||
preferences.updates.updateAvailable=Налично е ново издание %s.
|
preferences.updates.updateAvailable=Налично е ново издание %s.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Подкрепете ни
|
preferences.contribute=Подкрепете ни
|
||||||
preferences.contribute.registeredFor=Сертификатът за дарение е регистриран на %s
|
preferences.contribute.registeredFor=Сертификатът за дарение е регистриран на %s
|
||||||
@@ -451,7 +446,6 @@ vaultOptions.mount.mountPoint.custom=Използване на избрана п
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Избиране…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Избиране…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Избиране на папка
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Избиране на папка
|
||||||
vaultOptions.mount.volumeType.default=По подразбиране (%s)
|
vaultOptions.mount.volumeType.default=По подразбиране (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=За да използвате този вид томове, трябва да рестартирате Криптоматор.
|
|
||||||
vaultOptions.mount.volume.tcp.port=Порт на TCP
|
vaultOptions.mount.volume.tcp.port=Порт на TCP
|
||||||
vaultOptions.mount.volume.type=Вид на тома
|
vaultOptions.mount.volume.type=Вид на тома
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -523,4 +517,9 @@ updateReminder.message=Проверяване за обновяване?
|
|||||||
updateReminder.description=Получавайте нови възможности на приложението, поправки на дефекти и подобрения на сигурността. Препоръчваме ви автоматичното обновяване.
|
updateReminder.description=Получавайте нови възможности на приложението, поправки на дефекти и подобрения на сигурността. Препоръчваме ви автоматичното обновяване.
|
||||||
updateReminder.notNow=Не сега
|
updateReminder.notNow=Не сега
|
||||||
updateReminder.yesOnce=Да, веднъж
|
updateReminder.yesOnce=Да, веднъж
|
||||||
updateReminder.yesAutomatically=Да, автоматично
|
updateReminder.yesAutomatically=Да, автоматично
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Към настройките
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -89,8 +89,9 @@ unlock.unlockBtn=আনলক করুন
|
|||||||
### Waiting
|
### Waiting
|
||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.registerBtn=নিশ্চিত করুন
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=আনলক করুন
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
@@ -121,6 +122,7 @@ lock.forced.retryBtn=পুনরায় চেষ্টা করুন
|
|||||||
## Interface
|
## Interface
|
||||||
## Volume
|
## Volume
|
||||||
## Updates
|
## Updates
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -172,4 +174,8 @@ vaultOptions.mount.mountPoint.directoryPickerButton=নির্বাচন ক
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -105,8 +105,9 @@ unlock.success.revealBtn=Otkrij pogon
|
|||||||
### Waiting
|
### Waiting
|
||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.registerBtn=Potvrdi
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=Otključaj
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
@@ -170,6 +171,7 @@ preferences.updates.currentVersion=Trenutna verzija: %s
|
|||||||
preferences.updates.autoUpdateCheck=Automatski provjeri ima li ažuriranja
|
preferences.updates.autoUpdateCheck=Automatski provjeri ima li ažuriranja
|
||||||
preferences.updates.checkNowBtn=Provjeri sada
|
preferences.updates.checkNowBtn=Provjeri sada
|
||||||
preferences.updates.updateAvailable=Dostupno ažuriranje na verziju %s.
|
preferences.updates.updateAvailable=Dostupno ažuriranje na verziju %s.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -314,4 +316,8 @@ quit.lockAndQuitBtn=Zaključaj i zatvori
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Introduiu el nom de la caixa forta
|
|||||||
addvaultwizard.new.namePrompt=Nom de la caixa forta
|
addvaultwizard.new.namePrompt=Nom de la caixa forta
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=On deu emmagatzemar Cryptomator els fitxers xifrats de la vostra caixa forta?
|
addvaultwizard.new.locationInstruction=On deu emmagatzemar Cryptomator els fitxers xifrats de la vostra caixa forta?
|
||||||
|
addvaultwizard.new.locationLoading=Comprovació del sistema de fitxers locals per a trobar directoris habituals d'emmagatzematge al núvol…
|
||||||
addvaultwizard.new.locationLabel=Ubicació de l'emmagatzematge
|
addvaultwizard.new.locationLabel=Ubicació de l'emmagatzematge
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Ubicació personalitzada
|
addvaultwizard.new.directoryPickerLabel=Ubicació personalitzada
|
||||||
@@ -141,6 +142,9 @@ unlock.error.customPath.description.hideawayNotDir=El fitxer temporal "%3$s" uti
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=La caixa forta no es pot muntar en "%s". Intenteu-ho de nou o escolliu un destí diferent, si us plau.
|
unlock.error.customPath.description.couldNotBeCleaned=La caixa forta no es pot muntar en "%s". Intenteu-ho de nou o escolliu un destí diferent, si us plau.
|
||||||
unlock.error.customPath.description.notEmptyDir=El punt de muntatge "%s" no és una carpeta buida. Trieu una carpeta buida i proveu-ho de nou.
|
unlock.error.customPath.description.notEmptyDir=El punt de muntatge "%s" no és una carpeta buida. Trieu una carpeta buida i proveu-ho de nou.
|
||||||
unlock.error.customPath.description.generic=Al anar a desar la caixa forta en el lloc indicat ha fallat amb el missatge: %2$s
|
unlock.error.customPath.description.generic=Al anar a desar la caixa forta en el lloc indicat ha fallat amb el missatge: %2$s
|
||||||
|
unlock.error.restartRequired.message=No ha estat possible desblocar la caixa forta
|
||||||
|
unlock.error.restartRequired.description=Canvieu el tipus de volum en les opcions de la caixa forta o reinicieu Criptovalor.
|
||||||
|
unlock.error.title=El desblocatge de "%s" ha fallat
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=No es pot accedir a la clau del dispositiu
|
hub.noKeychain.message=No es pot accedir a la clau del dispositiu
|
||||||
hub.noKeychain.description=Per poder desblocar caixes fortes del Hub es requereix la clau d'un dispositiu, que s'emmagatzema de forma segura en un clauer. Per continuar, habiliti "%s" i seleccioni un clauer en les Preferències.
|
hub.noKeychain.description=Per poder desblocar caixes fortes del Hub es requereix la clau d'un dispositiu, que s'emmagatzema de forma segura en un clauer. Per continuar, habiliti "%s" i seleccioni un clauer en les Preferències.
|
||||||
@@ -154,19 +158,30 @@ hub.receive.message=S'està processant la resposta…
|
|||||||
hub.receive.description=Cryptomator està rebent i processant la resposta del Hub. Espereu, si us plau.
|
hub.receive.description=Cryptomator està rebent i processant la resposta del Hub. Espereu, si us plau.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Nou dispositiu
|
hub.register.message=Nou dispositiu
|
||||||
|
hub.register.description=Aquest és el primer accés a Hub d'aquest dispositiu. Si us plau, registreu-vos-hi amb la vostra Account Key.
|
||||||
hub.register.nameLabel=Nom del dispositiu
|
hub.register.nameLabel=Nom del dispositiu
|
||||||
hub.register.occupiedMsg=El nom ja està en ús
|
hub.register.invalidAccountKeyLabel=Account Key no és vàlida
|
||||||
hub.register.registerBtn=Confirma
|
hub.register.registerBtn=Registre
|
||||||
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=El nom ja està en ús
|
||||||
|
hub.register.legacy.description=Aquest és el primer accés a Hub d'aquest dispositiu. Si us plau, registreu-lo.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Unitat anomenada
|
hub.registerSuccess.message=Dispositiu registrat
|
||||||
hub.registerSuccess.description=Per a accedir a la caixa forta, el vostre dispositiu ha de ser autoritzat pel propietari de la caixa.
|
hub.registerSuccess.description=El vostre dispositiu ha estat registrat correctament. Ara podeu desblocar la caixa forta.
|
||||||
|
hub.registerSuccess.unlockBtn=Desbloqueja
|
||||||
|
hub.registerSuccess.legacy.description=Per a accedir a la caixa forta, el vostre dispositiu ha de ser autoritzat pel propietari de la caixa.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Error al nombrar el dispositiu
|
hub.registerFailed.message=El registre del dispositiu ha fallat
|
||||||
hub.registerFailed.description=S'ha produït un error en el procés de nomenament. Per més detalls vegeu el registre de l'aplicació.
|
hub.registerFailed.description.generic=S'ha produït un error en el procés de registre. Per a obtindre'n més detalls vegeu els registres de l'aplicació.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=El dispositiu ja ha estat registrat per un altre usuari. Mireu de canviar el compte d'usuari o feu servir un dispositiu diferent.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Accés denegat
|
hub.unauthorized.message=Accés denegat
|
||||||
hub.unauthorized.description=El vostre dispositiu no ha estat encara autoritzat a accedir a aquesta caixa forta. Demaneu autorització al propietari.
|
hub.unauthorized.description=El vostre dispositiu no ha estat encara autoritzat a accedir a aquesta caixa forta. Demaneu autorització al propietari.
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
|
hub.requireAccountInit.message=Acció necessària
|
||||||
|
hub.requireAccountInit.description.0=Per a continuar, si us plau, seguiu els passos necessaris en el vostre
|
||||||
|
hub.requireAccountInit.description.1=perfil d'usuari de Hub
|
||||||
|
hub.requireAccountInit.description.2=.
|
||||||
### License Exceeded
|
### License Exceeded
|
||||||
hub.invalidLicense.message=La llicència del Hub no és vàlida
|
hub.invalidLicense.message=La llicència del Hub no és vàlida
|
||||||
hub.invalidLicense.description=Aquest Cryptomator Hub no té una llicència vàlida. Informa si us plau a l'administrador perquè actualitzi o renovi la llicència.
|
hub.invalidLicense.description=Aquest Cryptomator Hub no té una llicència vàlida. Informa si us plau a l'administrador perquè actualitzi o renovi la llicència.
|
||||||
@@ -288,9 +303,11 @@ preferences.interface.showMinimizeButton=Mostra el botó 'minimitzar'
|
|||||||
preferences.interface.showTrayIcon=Mostra la icona en la barra (cal reiniciar)
|
preferences.interface.showTrayIcon=Mostra la icona en la barra (cal reiniciar)
|
||||||
## Volume
|
## Volume
|
||||||
preferences.volume=Unitat virtual
|
preferences.volume=Unitat virtual
|
||||||
|
preferences.volume.type=Tipus de volum per defecte
|
||||||
preferences.volume.type.automatic=Automàtic
|
preferences.volume.type.automatic=Automàtic
|
||||||
preferences.volume.docsTooltip=Obre la documentació per aprendre més sobre els diferents tipus de volums.
|
preferences.volume.docsTooltip=Obre la documentació per aprendre més sobre els diferents tipus de volums.
|
||||||
preferences.volume.fuseRestartRequired=Per aplicar els canvis Cryptomator necessita reiniciar-se.
|
preferences.volume.fuseRestartRequired=Per aplicar els canvis Cryptomator necessita reiniciar-se.
|
||||||
|
preferences.volume.tcp.port=Port TCP per defecte
|
||||||
preferences.volume.supportedFeatures=El tipus de volum escollit suporta les següents característiques:
|
preferences.volume.supportedFeatures=El tipus de volum escollit suporta les següents característiques:
|
||||||
preferences.volume.feature.mountAuto=Selecció automàtica del punt de muntatge
|
preferences.volume.feature.mountAuto=Selecció automàtica del punt de muntatge
|
||||||
preferences.volume.feature.mountToDir=Directori personalitzat com a punt de muntatge
|
preferences.volume.feature.mountToDir=Directori personalitzat com a punt de muntatge
|
||||||
@@ -303,6 +320,7 @@ preferences.updates.currentVersion=Versió actual: %s
|
|||||||
preferences.updates.autoUpdateCheck=Comprova automàticament si hi ha actualitzacions
|
preferences.updates.autoUpdateCheck=Comprova automàticament si hi ha actualitzacions
|
||||||
preferences.updates.checkNowBtn=Comprova-ho ara
|
preferences.updates.checkNowBtn=Comprova-ho ara
|
||||||
preferences.updates.updateAvailable=L'actualització a la versió %s es troba disponible.
|
preferences.updates.updateAvailable=L'actualització a la versió %s es troba disponible.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Doneu-nos suport
|
preferences.contribute=Doneu-nos suport
|
||||||
preferences.contribute.registeredFor=Certificat de col·laborador registrat per a %s
|
preferences.contribute.registeredFor=Certificat de col·laborador registrat per a %s
|
||||||
@@ -375,6 +393,7 @@ main.vaultDetail.unlockBtn=Desbloca…
|
|||||||
main.vaultDetail.unlockNowBtn=Desbloqueja ara
|
main.vaultDetail.unlockNowBtn=Desbloqueja ara
|
||||||
main.vaultDetail.optionsBtn=Opcions de la caixa forta
|
main.vaultDetail.optionsBtn=Opcions de la caixa forta
|
||||||
main.vaultDetail.passwordSavedInKeychain=Contrasenya desada
|
main.vaultDetail.passwordSavedInKeychain=Contrasenya desada
|
||||||
|
main.vaultDetail.share=Compateix…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=DESBLOQUEJADA
|
main.vaultDetail.unlockedStatus=DESBLOQUEJADA
|
||||||
main.vaultDetail.accessLocation=Els continguts de la vostra caixa forta són accessibles aquí:
|
main.vaultDetail.accessLocation=Els continguts de la vostra caixa forta són accessibles aquí:
|
||||||
@@ -429,6 +448,7 @@ vaultOptions.general.startHealthCheckBtn=Inicia la comprovació
|
|||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Muntatge
|
vaultOptions.mount=Muntatge
|
||||||
|
vaultOptions.mount.info=Obriu les preferències de la unitat virtual per a canviar les preferències per defecte.
|
||||||
vaultOptions.mount.readonly=Només lectura
|
vaultOptions.mount.readonly=Només lectura
|
||||||
vaultOptions.mount.customMountFlags=Senyaladors de muntatge personalitzats
|
vaultOptions.mount.customMountFlags=Senyaladors de muntatge personalitzats
|
||||||
vaultOptions.mount.winDriveLetterOccupied=ocupat
|
vaultOptions.mount.winDriveLetterOccupied=ocupat
|
||||||
@@ -438,6 +458,10 @@ vaultOptions.mount.mountPoint.driveLetter=Utilitza la lletra de la unitat assign
|
|||||||
vaultOptions.mount.mountPoint.custom=Faci servir el directori escollit
|
vaultOptions.mount.mountPoint.custom=Faci servir el directori escollit
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Trieu…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Trieu…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Triï un directori
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Triï un directori
|
||||||
|
vaultOptions.mount.volumeType.default=Per defecte (%s)
|
||||||
|
vaultOptions.mount.volumeType.restartRequired=Per a fer servir aquest tipus de volum cal reiniciar Cryptomator.
|
||||||
|
vaultOptions.mount.volume.tcp.port=Port TCP
|
||||||
|
vaultOptions.mount.volume.type=Tipus de volum
|
||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey=Contrasenya
|
vaultOptions.masterkey=Contrasenya
|
||||||
vaultOptions.masterkey.changePasswordBtn=Canvi de contrasenya
|
vaultOptions.masterkey.changePasswordBtn=Canvi de contrasenya
|
||||||
@@ -507,4 +531,27 @@ updateReminder.message=Comprova si hi ha actualitzacions?
|
|||||||
updateReminder.description=Per estar actualitzat amb funcions noves, correccions d'errors i millores de seguretat recomanem comprovar les actualitzacions automàticament.
|
updateReminder.description=Per estar actualitzat amb funcions noves, correccions d'errors i millores de seguretat recomanem comprovar les actualitzacions automàticament.
|
||||||
updateReminder.notNow=Ara no
|
updateReminder.notNow=Ara no
|
||||||
updateReminder.yesOnce=Sí, una vegada
|
updateReminder.yesOnce=Sí, una vegada
|
||||||
updateReminder.yesAutomatically=Sí, automàticament
|
updateReminder.yesAutomatically=Sí, automàticament
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Obrir les Preferències
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Comparteix la caixa forta
|
||||||
|
shareVault.message=Voleu compartir la vostra caixa forta amb altres persones?
|
||||||
|
shareVault.description=Aneu amb molt de compte quan compartiu la vostra caixa forta amb altres persones. En resum, seguiu aquests passos:
|
||||||
|
shareVault.instruction.1=1. Compartiu l'accés a la carpeta via emmagatzematge en el núvol.
|
||||||
|
shareVault.instruction.2=2. Compartiu la contrasenya de la caixa forta per un mitjà segur.
|
||||||
|
shareVault.remarkBestPractices=Si en voleu més informació, feu una ullada als suggeriments que trobareu a la nostra documentació.
|
||||||
|
shareVault.docsTooltip=Obre la documentació per aprendre més sobre compartir caixes fortes.
|
||||||
|
shareVault.hubAd.description=La forma segura de treballar en equip
|
||||||
|
shareVault.hubAd.keyManagement=* Gestió sense divulgació de mots de pas
|
||||||
|
shareVault.hubAd.authentication=* Autenticació forta
|
||||||
|
shareVault.hubAd.encryption=Xifratge d'extrem a extrem
|
||||||
|
shareVault.visitHub=Visita Cryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Com compartir una caixa forta al Hub
|
||||||
|
shareVault.hub.description=Per tal de compartir el contingut de la caixa forta amb un altre membre de l'equip, heu de seguir dos passos:
|
||||||
|
shareVault.hub.instruction.1=1. Compartiu l'accés a la carpeta via emmagatzematge en el núvol.
|
||||||
|
shareVault.hub.instruction.2=2. Doneu accés al membre de l'equip a Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Obre Cryptomator Hub
|
||||||
@@ -23,6 +23,8 @@ error.technicalDetails=Podrobnosti:
|
|||||||
error.existingSolutionDescription=Cryptomator neočekával, že se tak stane. Našli jsme však existující řešení pro tuto chybu. Podívejte se prosím na následující odkaz.
|
error.existingSolutionDescription=Cryptomator neočekával, že se tak stane. Našli jsme však existující řešení pro tuto chybu. Podívejte se prosím na následující odkaz.
|
||||||
error.hyperlink.solution=Podívejte se na řešení
|
error.hyperlink.solution=Podívejte se na řešení
|
||||||
error.lookupPermissionMessage=Cryptomator může najít řešení tohoto problému online. To odešle žádost do naší databáze problémů z vaší IP adresy.
|
error.lookupPermissionMessage=Cryptomator může najít řešení tohoto problému online. To odešle žádost do naší databáze problémů z vaší IP adresy.
|
||||||
|
error.dismiss=Zrušit
|
||||||
|
error.lookUpSolution=Vyhledat řešení
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Trezor
|
defaults.vault.vaultName=Trezor
|
||||||
@@ -39,11 +41,13 @@ traymenu.vault.reveal=Zobrazit
|
|||||||
# Add Vault Wizard
|
# Add Vault Wizard
|
||||||
addvaultwizard.title=Přidat trezor
|
addvaultwizard.title=Přidat trezor
|
||||||
## New
|
## New
|
||||||
|
addvaultwizard.new.title=Přidat nový trezor
|
||||||
### Name
|
### Name
|
||||||
addvaultwizard.new.nameInstruction=Zvolte jméno trezoru
|
addvaultwizard.new.nameInstruction=Zvolte jméno trezoru
|
||||||
addvaultwizard.new.namePrompt=Název trezoru
|
addvaultwizard.new.namePrompt=Název trezoru
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Kde by měl Cryptomator ukládat šifrované soubory vašeho trezoru?
|
addvaultwizard.new.locationInstruction=Kde by měl Cryptomator ukládat šifrované soubory vašeho trezoru?
|
||||||
|
addvaultwizard.new.locationLoading=Kontroluji lokální souborový systém pro výchozí cloudové úložiště…
|
||||||
addvaultwizard.new.locationLabel=Umístění úložiště
|
addvaultwizard.new.locationLabel=Umístění úložiště
|
||||||
addvaultwizard.new.locationPrompt=...
|
addvaultwizard.new.locationPrompt=...
|
||||||
addvaultwizard.new.directoryPickerLabel=Vlastní umístění
|
addvaultwizard.new.directoryPickerLabel=Vlastní umístění
|
||||||
@@ -88,6 +92,7 @@ addvault.new.readme.accessLocation.2=Toto je místo přístupu vašeho trezoru.
|
|||||||
addvault.new.readme.accessLocation.3=Všechny soubory přidané do tohoto svazku budou šifrovány Cryptomatorem. Můžete na něm pracovat na jiném disku/složce. Toto je pouze dešifrovaný pohled na jeho obsah, vaše soubory zůstávají na pevném disku stále zašifrovány.
|
addvault.new.readme.accessLocation.3=Všechny soubory přidané do tohoto svazku budou šifrovány Cryptomatorem. Můžete na něm pracovat na jiném disku/složce. Toto je pouze dešifrovaný pohled na jeho obsah, vaše soubory zůstávají na pevném disku stále zašifrovány.
|
||||||
addvault.new.readme.accessLocation.4=Tento soubor můžete odstranit.
|
addvault.new.readme.accessLocation.4=Tento soubor můžete odstranit.
|
||||||
## Existing
|
## Existing
|
||||||
|
addvaultwizard.existing.title=Přidat existující trezor
|
||||||
addvaultwizard.existing.instruction=Vyberte soubor "vault.cryptomator" z existujícího trezoru. Pokud existuje pouze soubor s názvem "masterkey.cryptomator", vyberte jej.
|
addvaultwizard.existing.instruction=Vyberte soubor "vault.cryptomator" z existujícího trezoru. Pokud existuje pouze soubor s názvem "masterkey.cryptomator", vyberte jej.
|
||||||
addvaultwizard.existing.chooseBtn=Vybrat...
|
addvaultwizard.existing.chooseBtn=Vybrat...
|
||||||
addvaultwizard.existing.filePickerTitle=Vyberte soubor trezoru
|
addvaultwizard.existing.filePickerTitle=Vyberte soubor trezoru
|
||||||
@@ -132,8 +137,12 @@ unlock.success.revealBtn=Zobrazit jednotku
|
|||||||
unlock.error.customPath.message=Nelze připojit trezor k vlastní cestě
|
unlock.error.customPath.message=Nelze připojit trezor k vlastní cestě
|
||||||
unlock.error.customPath.description.notSupported=Pokud chcete pokračovat v používání vlastní cesty, přejděte do nastavení a vyberte typ hlasitosti, který ji podporuje. V opačném případě přejděte do možností trezoru a vyberte podporovaný přípojný bod.
|
unlock.error.customPath.description.notSupported=Pokud chcete pokračovat v používání vlastní cesty, přejděte do nastavení a vyberte typ hlasitosti, který ji podporuje. V opačném případě přejděte do možností trezoru a vyberte podporovaný přípojný bod.
|
||||||
unlock.error.customPath.description.notExists=Cesta k připojení neexistuje. Buď ji vytvořte ve vašem lokálním souborovém systému, nebo ji změňte v možnostech trezoru.
|
unlock.error.customPath.description.notExists=Cesta k připojení neexistuje. Buď ji vytvořte ve vašem lokálním souborovém systému, nebo ji změňte v možnostech trezoru.
|
||||||
|
unlock.error.restartRequired.message=Nelze odemknout trezor
|
||||||
|
unlock.error.restartRequired.description=Změňte typ svazku v možnostech trezoru nebo restartujte Cryptomator.
|
||||||
|
unlock.error.title=Odemknutí "%s" selhalo
|
||||||
## Hub
|
## Hub
|
||||||
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.openBtn=Otevřít předvolby
|
hub.noKeychain.openBtn=Otevřít předvolby
|
||||||
### Waiting
|
### Waiting
|
||||||
hub.auth.message=Čekání na ověření…
|
hub.auth.message=Čekání na ověření…
|
||||||
@@ -141,19 +150,33 @@ hub.auth.description=Měli byste být automaticky přesměrováni na přihlašov
|
|||||||
hub.auth.loginLink=Nebyli jste přesměrováni? Klikněte zde pro otevření.
|
hub.auth.loginLink=Nebyli jste přesměrováni? Klikněte zde pro otevření.
|
||||||
### Receive Key
|
### Receive Key
|
||||||
hub.receive.message=Zpracovávání odezvy…
|
hub.receive.message=Zpracovávání odezvy…
|
||||||
|
hub.receive.description=Cryptomator přijímá a zpracovává odpověď od Hubu. Počkejte prosím.
|
||||||
### Register Device
|
### Register Device
|
||||||
|
hub.register.message=Nové zařízení
|
||||||
|
hub.register.description=Toto je první přístup k Hub z tohoto zařízení. Zaregistrujte ho pomocí vašeho Account Key.
|
||||||
hub.register.nameLabel=Název zařízení
|
hub.register.nameLabel=Název zařízení
|
||||||
hub.register.occupiedMsg=Jméno je již používáno
|
hub.register.invalidAccountKeyLabel=Neplatný Account Key
|
||||||
hub.register.registerBtn=Potvrdit
|
hub.register.registerBtn=Registrovat
|
||||||
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Jméno je již používáno
|
||||||
|
hub.register.legacy.description=Toto je první přístup k Hubu z tohoto zařízení. Zaregistrujte ho.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Jméno zařízení
|
hub.registerSuccess.message=Zařízení registrováno
|
||||||
hub.registerSuccess.description=Pro přístup k trezoru musí být vaše zařízení autorizováno majitelem trezoru.
|
hub.registerSuccess.description=Vaše zařízení je úspěšně zaregistrováno. Nyní můžete pokračovat v odemknutí trezoru.
|
||||||
|
hub.registerSuccess.unlockBtn=Odemknout
|
||||||
|
hub.registerSuccess.legacy.description=Pro přístup k trezoru musí být vaše zařízení autorizováno majitelem trezoru.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Pojmenování zařízení se nezdařilo
|
hub.registerFailed.message=Registrace zařízení se nezdařila
|
||||||
|
hub.registerFailed.description.generic=Došlo k chybě v registračním procesu. Pro více detailů se podívejte do logu aplikace.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Toto zařízení je již registrováno pro jiného uživatele. Zkuste změnit uživatelský účet nebo použijte jiné zařízení.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Přístup odepřen
|
hub.unauthorized.message=Přístup odepřen
|
||||||
hub.unauthorized.description=Vaše zařízení dosud nebylo oprávněno k přístupu k tomuto trezoru. Požádejte vlastníka trezoru, aby jej autorizoval.
|
hub.unauthorized.description=Vaše zařízení dosud nebylo oprávněno k přístupu k tomuto trezoru. Požádejte vlastníka trezoru, aby jej autorizoval.
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
|
hub.requireAccountInit.message=Požadována akce
|
||||||
|
hub.requireAccountInit.description.0=Chcete-li pokračovat, vyplňte prosím požadované kroky ve vašem
|
||||||
|
hub.requireAccountInit.description.1=Uživatelský profil Hubu
|
||||||
|
hub.requireAccountInit.description.2=.
|
||||||
### License Exceeded
|
### License Exceeded
|
||||||
hub.invalidLicense.message=Licence Hubu je neplatná
|
hub.invalidLicense.message=Licence Hubu je neplatná
|
||||||
|
|
||||||
@@ -233,6 +256,7 @@ health.result.severityFilter.good=Dobré
|
|||||||
health.result.severityFilter.info=Informace
|
health.result.severityFilter.info=Informace
|
||||||
health.result.severityFilter.warn=Varování
|
health.result.severityFilter.warn=Varování
|
||||||
health.result.severityFilter.crit=Kritické
|
health.result.severityFilter.crit=Kritické
|
||||||
|
health.result.fixStateFilter.all=Stav opravy - Vše
|
||||||
health.result.fixStateFilter.fixable=Opravitelné
|
health.result.fixStateFilter.fixable=Opravitelné
|
||||||
health.result.fixStateFilter.notFixable=Ne opravitelné
|
health.result.fixStateFilter.notFixable=Ne opravitelné
|
||||||
health.result.fixStateFilter.fixing=Opravování…
|
health.result.fixStateFilter.fixing=Opravování…
|
||||||
@@ -248,6 +272,7 @@ preferences.title=Nastavení
|
|||||||
## General
|
## General
|
||||||
preferences.general=Obecné
|
preferences.general=Obecné
|
||||||
preferences.general.startHidden=Skrýt okno Cryptomatoru při spuštění
|
preferences.general.startHidden=Skrýt okno Cryptomatoru při spuštění
|
||||||
|
preferences.general.autoCloseVaults=Zamknout trezory automaticky při ukončení aplikace
|
||||||
preferences.general.debugLogging=Ladicí režim
|
preferences.general.debugLogging=Ladicí režim
|
||||||
preferences.general.debugDirectory=Ukázat soubory se záznamy událostí (log)
|
preferences.general.debugDirectory=Ukázat soubory se záznamy událostí (log)
|
||||||
preferences.general.autoStart=Spustit Cryptomator při spuštění systému
|
preferences.general.autoStart=Spustit Cryptomator při spuštění systému
|
||||||
@@ -268,7 +293,12 @@ preferences.interface.showMinimizeButton=Zobrazit tlačítko minimalizovat
|
|||||||
preferences.interface.showTrayIcon=Zobrazit ikonu v liště (vyžaduje restart)
|
preferences.interface.showTrayIcon=Zobrazit ikonu v liště (vyžaduje restart)
|
||||||
## Volume
|
## Volume
|
||||||
preferences.volume=Virtuální jednotky
|
preferences.volume=Virtuální jednotky
|
||||||
|
preferences.volume.type=Výchozí typ jednotky
|
||||||
preferences.volume.type.automatic=Automatické
|
preferences.volume.type.automatic=Automatické
|
||||||
|
preferences.volume.docsTooltip=Otevřete dokumentaci, abyste se dozvěděli více o různých typech svazků.
|
||||||
|
preferences.volume.fuseRestartRequired=Chcete-li použít změny, Cryptomator musí být restartován.
|
||||||
|
preferences.volume.tcp.port=Výchozí TCP port
|
||||||
|
preferences.volume.supportedFeatures=Zvolený typ svazku podporuje následující funkce:
|
||||||
preferences.volume.feature.mountFlags=Vlastní možnosti připojení disku
|
preferences.volume.feature.mountFlags=Vlastní možnosti připojení disku
|
||||||
preferences.volume.feature.readOnly=Připojení disku pouze pro čtení
|
preferences.volume.feature.readOnly=Připojení disku pouze pro čtení
|
||||||
## Updates
|
## Updates
|
||||||
@@ -277,6 +307,7 @@ preferences.updates.currentVersion=Aktuální verze: %s
|
|||||||
preferences.updates.autoUpdateCheck=Automaticky kontrolovat aktualizace
|
preferences.updates.autoUpdateCheck=Automaticky kontrolovat aktualizace
|
||||||
preferences.updates.checkNowBtn=Zkontrolovat nyní
|
preferences.updates.checkNowBtn=Zkontrolovat nyní
|
||||||
preferences.updates.updateAvailable=Dostupná nová verze %s.
|
preferences.updates.updateAvailable=Dostupná nová verze %s.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Podpořte nás
|
preferences.contribute=Podpořte nás
|
||||||
preferences.contribute.registeredFor=Certifikát podporovatele byl registrován pro %s
|
preferences.contribute.registeredFor=Certifikát podporovatele byl registrován pro %s
|
||||||
@@ -338,6 +369,8 @@ main.vaultlist.contextMenu.unlockNow=Odemknout nyní
|
|||||||
main.vaultlist.contextMenu.vaultoptions=Zobrazit možnosti trezoru
|
main.vaultlist.contextMenu.vaultoptions=Zobrazit možnosti trezoru
|
||||||
main.vaultlist.contextMenu.reveal=Zobrazit jednotku
|
main.vaultlist.contextMenu.reveal=Zobrazit jednotku
|
||||||
main.vaultlist.addVaultBtn=Přidat
|
main.vaultlist.addVaultBtn=Přidat
|
||||||
|
main.vaultlist.addVaultBtn.menuItemNew=Nový trezor...
|
||||||
|
main.vaultlist.addVaultBtn.menuItemExisting=Existující trezor...
|
||||||
## Vault Detail
|
## Vault Detail
|
||||||
### Welcome
|
### Welcome
|
||||||
main.vaultDetail.welcomeOnboarding=Děkujeme, že jste si vybrali Cryptomator pro ochranu vašich souborů. Pokud potřebujete pomoc, podívejte se na naše návody:
|
main.vaultDetail.welcomeOnboarding=Děkujeme, že jste si vybrali Cryptomator pro ochranu vašich souborů. Pokud potřebujete pomoc, podívejte se na naše návody:
|
||||||
@@ -347,6 +380,7 @@ main.vaultDetail.unlockBtn=Odemknout…
|
|||||||
main.vaultDetail.unlockNowBtn=Odemknout nyní
|
main.vaultDetail.unlockNowBtn=Odemknout nyní
|
||||||
main.vaultDetail.optionsBtn=Možnosti trezoru
|
main.vaultDetail.optionsBtn=Možnosti trezoru
|
||||||
main.vaultDetail.passwordSavedInKeychain=Heslo uloženo
|
main.vaultDetail.passwordSavedInKeychain=Heslo uloženo
|
||||||
|
main.vaultDetail.share=Sdílet…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=ODEMKNUTO
|
main.vaultDetail.unlockedStatus=ODEMKNUTO
|
||||||
main.vaultDetail.accessLocation=Obsah vašeho trezoru je dostupný:
|
main.vaultDetail.accessLocation=Obsah vašeho trezoru je dostupný:
|
||||||
@@ -360,7 +394,9 @@ main.vaultDetail.throughput.kbps=%.1f KiB/s
|
|||||||
main.vaultDetail.throughput.mbps=%.1f MiB/s
|
main.vaultDetail.throughput.mbps=%.1f MiB/s
|
||||||
main.vaultDetail.stats=Statistiky trezoru
|
main.vaultDetail.stats=Statistiky trezoru
|
||||||
main.vaultDetail.locateEncryptedFileBtn=Najít šifrovaný soubor
|
main.vaultDetail.locateEncryptedFileBtn=Najít šifrovaný soubor
|
||||||
|
main.vaultDetail.locateEncryptedFileBtn.tooltip=Vyberte soubor z vašeho trezoru, abyste našli jeho šifrovaný protějšek
|
||||||
main.vaultDetail.encryptedPathsCopied=Cesta souboru byla zkopírována do schránky!
|
main.vaultDetail.encryptedPathsCopied=Cesta souboru byla zkopírována do schránky!
|
||||||
|
main.vaultDetail.filePickerTitle=Vyberte soubor uvnitř trezoru
|
||||||
### Missing
|
### Missing
|
||||||
main.vaultDetail.missing.info=Cryptomator nemohl najít trezor na této cestě.
|
main.vaultDetail.missing.info=Cryptomator nemohl najít trezor na této cestě.
|
||||||
main.vaultDetail.missing.recheck=Znovu zkontrolovat
|
main.vaultDetail.missing.recheck=Znovu zkontrolovat
|
||||||
@@ -405,8 +441,12 @@ vaultOptions.mount.winDriveLetterOccupied=obsazeno
|
|||||||
vaultOptions.mount.mountPoint=Přípojný bod
|
vaultOptions.mount.mountPoint=Přípojný bod
|
||||||
vaultOptions.mount.mountPoint.auto=Automaticky vybrat vhodné místo
|
vaultOptions.mount.mountPoint.auto=Automaticky vybrat vhodné místo
|
||||||
vaultOptions.mount.mountPoint.driveLetter=Použít zvolenou jednotku
|
vaultOptions.mount.mountPoint.driveLetter=Použít zvolenou jednotku
|
||||||
|
vaultOptions.mount.mountPoint.custom=Použít vybraný adresář
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Vybrat...
|
vaultOptions.mount.mountPoint.directoryPickerButton=Vybrat...
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Vyberte složku
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Vyberte složku
|
||||||
|
vaultOptions.mount.volumeType.default=Výchozí (%s)
|
||||||
|
vaultOptions.mount.volume.tcp.port=TCP port
|
||||||
|
vaultOptions.mount.volume.type=Typ jednotky
|
||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey=Heslo
|
vaultOptions.masterkey=Heslo
|
||||||
vaultOptions.masterkey.changePasswordBtn=Změnit heslo
|
vaultOptions.masterkey.changePasswordBtn=Změnit heslo
|
||||||
@@ -429,14 +469,23 @@ recoveryKey.display.StorageHints=Uchovejte ho někde velmi bezpečně, např.\n
|
|||||||
## Reset Password
|
## Reset Password
|
||||||
### Enter Recovery Key
|
### Enter Recovery Key
|
||||||
recoveryKey.recover.title=Resetovat heslo
|
recoveryKey.recover.title=Resetovat heslo
|
||||||
|
recoveryKey.recover.prompt=Zadejte obnovovací klíč pro "%s":
|
||||||
recoveryKey.recover.correctKey=Toto je platný obnovovací klíč
|
recoveryKey.recover.correctKey=Toto je platný obnovovací klíč
|
||||||
|
recoveryKey.recover.wrongKey=Tento klíč pro obnovení partří k jinému trezoru
|
||||||
|
recoveryKey.recover.invalidKey=Tento klíč pro obnovení není platný
|
||||||
recoveryKey.printout.heading=Obnovovací klíč Cryptomator\n"%s"\n
|
recoveryKey.printout.heading=Obnovovací klíč Cryptomator\n"%s"\n
|
||||||
### Reset Password
|
### Reset Password
|
||||||
recoveryKey.recover.resetBtn=Resetovat
|
recoveryKey.recover.resetBtn=Resetovat
|
||||||
### Recovery Key Password Reset Success
|
### Recovery Key Password Reset Success
|
||||||
recoveryKey.recover.resetSuccess.message=Resetování hesla bylo úspěšné
|
recoveryKey.recover.resetSuccess.message=Resetování hesla bylo úspěšné
|
||||||
|
recoveryKey.recover.resetSuccess.description=Můžete odemknout váš trezor pomocí nového hesla.
|
||||||
|
|
||||||
# Convert Vault
|
# Convert Vault
|
||||||
|
convertVault.title=Převést trezor
|
||||||
|
convertVault.convert.convertBtn.before=Převést
|
||||||
|
convertVault.convert.convertBtn.processing=Převádění…
|
||||||
|
convertVault.success.message=Konverze byla úspěšná
|
||||||
|
convertVault.hubToPassword.success.description=Nyní můžete odemknout trezor zvoleným heslem bez nutnosti přístupu k Hubu.
|
||||||
|
|
||||||
# New Password
|
# New Password
|
||||||
newPassword.promptText=Zadejte nové heslo
|
newPassword.promptText=Zadejte nové heslo
|
||||||
@@ -465,4 +514,28 @@ updateReminder.message=Zkontrolovat aktualizace?
|
|||||||
updateReminder.description=Získejte aktuální informace o nových funkcích, opravách chyb a vylepšeních zabezpečení. Doporučujeme automaticky kontrolovat aktualizace.
|
updateReminder.description=Získejte aktuální informace o nových funkcích, opravách chyb a vylepšeních zabezpečení. Doporučujeme automaticky kontrolovat aktualizace.
|
||||||
updateReminder.notNow=Nyní ne
|
updateReminder.notNow=Nyní ne
|
||||||
updateReminder.yesOnce=Ano, jednou
|
updateReminder.yesOnce=Ano, jednou
|
||||||
updateReminder.yesAutomatically=Ano, automaticky
|
updateReminder.yesAutomatically=Ano, automaticky
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Oznámení o zastaralosti
|
||||||
|
dokanySupportEnd.message=Konec podpory pro Dokany
|
||||||
|
dokanySupportEnd.preferencesBtn=Otevřít předvolby
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Sdílet trezor
|
||||||
|
shareVault.message=Chcete sdílet svůj trezor s ostatními?
|
||||||
|
shareVault.description=Vždy buďte opatrní při sdílení vašeho trezoru s ostatními lidmi. Stručně řečeno, postupujte podle těchto kroků:
|
||||||
|
shareVault.instruction.1=1. Sdílejte přístup ke šifrované složce trezoru prostřednictvím cloudového úložiště.
|
||||||
|
shareVault.instruction.2=2. Sdílejte heslo trezoru bezpečným způsobem.
|
||||||
|
shareVault.remarkBestPractices=Pro více informací se podívejte na návrhy osvědčených postupů v našich dokumentech.
|
||||||
|
shareVault.docsTooltip=Otevřete dokumentaci a dozvíte se více o sdílení trezorů.
|
||||||
|
shareVault.hubAd.description=Bezpečný způsob práce v týmech
|
||||||
|
shareVault.hubAd.authentication=• Silné ověření
|
||||||
|
shareVault.hubAd.encryption=• End-to-end šifrování
|
||||||
|
shareVault.visitHub=Navštivte Cryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Jak sdílet Hub trezor
|
||||||
|
shareVault.hub.description=Chcete-li sdílet obsah trezoru s jiným členem týmu, musíte provést dva kroky:
|
||||||
|
shareVault.hub.instruction.1=1. Sdílejte přístup ke šifrované složce trezoru prostřednictvím cloudového úložiště.
|
||||||
|
shareVault.hub.instruction.2=2. Udělte přístup členovi týmu v Cryptomator Hubu.
|
||||||
|
shareVault.hub.openHub=Otevřít Cryptomator Hub
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Vælg et navn til boksen
|
|||||||
addvaultwizard.new.namePrompt=Boks-navn
|
addvaultwizard.new.namePrompt=Boks-navn
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Hvor skal Cryptomator gemme de krypterede filer af din boks?
|
addvaultwizard.new.locationInstruction=Hvor skal Cryptomator gemme de krypterede filer af din boks?
|
||||||
|
addvaultwizard.new.locationLoading=Tjekker lokalt filsystem for standard mappe til opbevaring i skyen…
|
||||||
addvaultwizard.new.locationLabel=Dataplacering
|
addvaultwizard.new.locationLabel=Dataplacering
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Vælg placering
|
addvaultwizard.new.directoryPickerLabel=Vælg placering
|
||||||
@@ -141,6 +142,9 @@ unlock.error.customPath.description.hideawayNotDir=Den midlertidige, skjulte fil
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Din boks kunne ikke monteres på stien "%s". Prøv venligst igen eller vælg en anden sti.
|
unlock.error.customPath.description.couldNotBeCleaned=Din boks kunne ikke monteres på stien "%s". Prøv venligst igen eller vælg en anden sti.
|
||||||
unlock.error.customPath.description.notEmptyDir=Den brugerdefinerede monteringssti "%s" er ikke en tom mappe. Vælg venligst en tom mappe og prøv igen.
|
unlock.error.customPath.description.notEmptyDir=Den brugerdefinerede monteringssti "%s" er ikke en tom mappe. Vælg venligst en tom mappe og prøv igen.
|
||||||
unlock.error.customPath.description.generic=Du har valgt en brugerdefineret monteringssti til denne boks, men det mislykkedes med følgende besked: %2$s
|
unlock.error.customPath.description.generic=Du har valgt en brugerdefineret monteringssti til denne boks, men det mislykkedes med følgende besked: %2$s
|
||||||
|
unlock.error.restartRequired.message=Kan ikke låse boks op
|
||||||
|
unlock.error.restartRequired.description=Skift drev typen i boksindstillinger eller genstart Cryptomator.
|
||||||
|
unlock.error.title=Oplåsning af "%s" mislykkedes
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Kan ikke tilgå enhedsnøgle
|
hub.noKeychain.message=Kan ikke tilgå enhedsnøgle
|
||||||
hub.noKeychain.description=En enhedsnøgle er påkrævet for at låse Hub bokse op. Enhedsnøglen er sikret i en nøglering. For at fortsætte, aktivér “%s” og vælg en nøglering i indstillingerne.
|
hub.noKeychain.description=En enhedsnøgle er påkrævet for at låse Hub bokse op. Enhedsnøglen er sikret i en nøglering. For at fortsætte, aktivér “%s” og vælg en nøglering i indstillingerne.
|
||||||
@@ -154,19 +158,30 @@ hub.receive.message=Behandler svar…
|
|||||||
hub.receive.description=Cryptomator modtager og behandler svaret fra hubben. Vent venligst.
|
hub.receive.description=Cryptomator modtager og behandler svaret fra hubben. Vent venligst.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Ny Enhed
|
hub.register.message=Ny Enhed
|
||||||
|
hub.register.description=Det er første gang Hub tilgås fra denne enhed. Registrer den venligst ved at anvende din Account Key.
|
||||||
hub.register.nameLabel=Enheds-navn
|
hub.register.nameLabel=Enheds-navn
|
||||||
hub.register.occupiedMsg=Navnet er allerede i brug
|
hub.register.invalidAccountKeyLabel=Ugyldig Account Key
|
||||||
hub.register.registerBtn=Bekræft
|
hub.register.registerBtn=Registrer
|
||||||
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Navnet er allerede i brug
|
||||||
|
hub.register.legacy.description=Det er første gang Hub tilgås fra denne enhed. Registrer den venligst.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Enhed navngivet
|
hub.registerSuccess.message=Enhed registreret
|
||||||
hub.registerSuccess.description=For at tilgå boksen, skal din enhed godkendes af boks-ejeren.
|
hub.registerSuccess.description=Din enhed er registreret. Du kan nu fortsætte med at låse boksen op.
|
||||||
|
hub.registerSuccess.unlockBtn=Lås op
|
||||||
|
hub.registerSuccess.legacy.description=For at få adgang til boksen, skal din enhed desuden være godkendt af boksens ejer.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Navngivning af enhed mislykkedes
|
hub.registerFailed.message=Enheds registrering mislykkedes
|
||||||
hub.registerFailed.description=Der opstod en fejl i navngivnings-processen. Kig i applikations-loggen for flere detaljer.
|
hub.registerFailed.description.generic=Der opstod en fejl i registreringsprocessen. Kig i applikations-loggen for flere detaljer.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Denne enhed er allerede registreret af en anden bruger. Prøv at ændre brugerkontoen eller brug en anden enhed.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Adgang nægtet
|
hub.unauthorized.message=Adgang nægtet
|
||||||
hub.unauthorized.description=Din enhed er endnu ikke blevet godkendt til at få adgang til denne boks. Spørg boks-ejeren om godkendelse.
|
hub.unauthorized.description=Din enhed er endnu ikke blevet godkendt til at få adgang til denne boks. Spørg boks-ejeren om godkendelse.
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
|
hub.requireAccountInit.message=Handling påkrævet
|
||||||
|
hub.requireAccountInit.description.0=For at fortsætte, skal du fuldføre de nødvendige trin i din
|
||||||
|
hub.requireAccountInit.description.1=Hub brugerprofil
|
||||||
|
hub.requireAccountInit.description.2=.
|
||||||
### License Exceeded
|
### License Exceeded
|
||||||
hub.invalidLicense.message=Ugyldig Hub-licens
|
hub.invalidLicense.message=Ugyldig Hub-licens
|
||||||
hub.invalidLicense.description=Din Cryptomator Hub har en ugyldig licens. Få venligst en Hub administrator til at opgradere eller forny licensen.
|
hub.invalidLicense.description=Din Cryptomator Hub har en ugyldig licens. Få venligst en Hub administrator til at opgradere eller forny licensen.
|
||||||
@@ -288,9 +303,11 @@ preferences.interface.showMinimizeButton=Vis knap til minimering
|
|||||||
preferences.interface.showTrayIcon=Vis ikon i system-bakken (kræver genstart)
|
preferences.interface.showTrayIcon=Vis ikon i system-bakken (kræver genstart)
|
||||||
## Volume
|
## Volume
|
||||||
preferences.volume=Virtuelt drev
|
preferences.volume=Virtuelt drev
|
||||||
|
preferences.volume.type=Standard Drev Type
|
||||||
preferences.volume.type.automatic=Automatisk
|
preferences.volume.type.automatic=Automatisk
|
||||||
preferences.volume.docsTooltip=Åbn dokumentationen for at lære mere om de forskellige typer drev.
|
preferences.volume.docsTooltip=Åbn dokumentationen for at lære mere om de forskellige typer drev.
|
||||||
preferences.volume.fuseRestartRequired=For at anvende ændringerne skal Cryptomator genstartes.
|
preferences.volume.fuseRestartRequired=For at anvende ændringerne skal Cryptomator genstartes.
|
||||||
|
preferences.volume.tcp.port=Standard TCP- Port
|
||||||
preferences.volume.supportedFeatures=Den valgte type drev understøtter følgende funktioner:
|
preferences.volume.supportedFeatures=Den valgte type drev understøtter følgende funktioner:
|
||||||
preferences.volume.feature.mountAuto=Automatisk valg af monteringspunkt
|
preferences.volume.feature.mountAuto=Automatisk valg af monteringspunkt
|
||||||
preferences.volume.feature.mountToDir=Brugerdefineret mappe som monteringspunkt
|
preferences.volume.feature.mountToDir=Brugerdefineret mappe som monteringspunkt
|
||||||
@@ -303,6 +320,7 @@ preferences.updates.currentVersion=Nuværende version: %s
|
|||||||
preferences.updates.autoUpdateCheck=Søg automatisk efter opdateringer
|
preferences.updates.autoUpdateCheck=Søg automatisk efter opdateringer
|
||||||
preferences.updates.checkNowBtn=Kontrollér nu
|
preferences.updates.checkNowBtn=Kontrollér nu
|
||||||
preferences.updates.updateAvailable=Opdatering til version %s er tilgængelig.
|
preferences.updates.updateAvailable=Opdatering til version %s er tilgængelig.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Støt os
|
preferences.contribute=Støt os
|
||||||
preferences.contribute.registeredFor=Registreret supporter-certifikat for %s
|
preferences.contribute.registeredFor=Registreret supporter-certifikat for %s
|
||||||
@@ -375,6 +393,7 @@ main.vaultDetail.unlockBtn=Lås op…
|
|||||||
main.vaultDetail.unlockNowBtn=Lås op nu
|
main.vaultDetail.unlockNowBtn=Lås op nu
|
||||||
main.vaultDetail.optionsBtn=Boksindstillinger
|
main.vaultDetail.optionsBtn=Boksindstillinger
|
||||||
main.vaultDetail.passwordSavedInKeychain=Adgangskode gemt
|
main.vaultDetail.passwordSavedInKeychain=Adgangskode gemt
|
||||||
|
main.vaultDetail.share=Del…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=LÅST OP
|
main.vaultDetail.unlockedStatus=LÅST OP
|
||||||
main.vaultDetail.accessLocation=Boksens indhold er tilgængeligt her:
|
main.vaultDetail.accessLocation=Boksens indhold er tilgængeligt her:
|
||||||
@@ -429,6 +448,7 @@ vaultOptions.general.startHealthCheckBtn=Start sunhedstjek
|
|||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Montering
|
vaultOptions.mount=Montering
|
||||||
|
vaultOptions.mount.info=Åbn indstillinger for virtuelle drev for at ændre standardindstillinger.
|
||||||
vaultOptions.mount.readonly=Skrivebeskyttet
|
vaultOptions.mount.readonly=Skrivebeskyttet
|
||||||
vaultOptions.mount.customMountFlags=Brugerdefinerede monterings-flag
|
vaultOptions.mount.customMountFlags=Brugerdefinerede monterings-flag
|
||||||
vaultOptions.mount.winDriveLetterOccupied=optaget
|
vaultOptions.mount.winDriveLetterOccupied=optaget
|
||||||
@@ -438,6 +458,10 @@ vaultOptions.mount.mountPoint.driveLetter=Brug et ledigt drevbogstav
|
|||||||
vaultOptions.mount.mountPoint.custom=Brug en valgt mappe
|
vaultOptions.mount.mountPoint.custom=Brug en valgt mappe
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Vælg…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Vælg…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Vælg en mappe
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Vælg en mappe
|
||||||
|
vaultOptions.mount.volumeType.default=Standard (%s)
|
||||||
|
vaultOptions.mount.volumeType.restartRequired=For bruge denne drev type skal Cryptomator genstartes.
|
||||||
|
vaultOptions.mount.volume.tcp.port=TCP Port
|
||||||
|
vaultOptions.mount.volume.type=Drev Type
|
||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey=Adgangskode
|
vaultOptions.masterkey=Adgangskode
|
||||||
vaultOptions.masterkey.changePasswordBtn=Skift adgangskode
|
vaultOptions.masterkey.changePasswordBtn=Skift adgangskode
|
||||||
@@ -507,4 +531,27 @@ updateReminder.message=Tjek for opdateringer?
|
|||||||
updateReminder.description=Hold dig opdateret med nye funktioner, fejlrettelser og sikkerhedsforbedringer. Vi anbefaler automatisk at søge efter opdateringer.
|
updateReminder.description=Hold dig opdateret med nye funktioner, fejlrettelser og sikkerhedsforbedringer. Vi anbefaler automatisk at søge efter opdateringer.
|
||||||
updateReminder.notNow=Ikke nu
|
updateReminder.notNow=Ikke nu
|
||||||
updateReminder.yesOnce=Ja, én gang
|
updateReminder.yesOnce=Ja, én gang
|
||||||
updateReminder.yesAutomatically=Ja, automatisk
|
updateReminder.yesAutomatically=Ja, automatisk
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Åbn Indstillinger
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Del Boks
|
||||||
|
shareVault.message=Vil du dele din boks med andre?
|
||||||
|
shareVault.description=Vær altid forsigtig, når du deler din boks med andre. Kort sagt, følg disse trin:
|
||||||
|
shareVault.instruction.1=1. Del adgang til den krypterede boks-mappe via opbevaring i skyen.
|
||||||
|
shareVault.instruction.2=2. Del boksens adgangskode på en sikker måde.
|
||||||
|
shareVault.remarkBestPractices=For mere information, tjek best practice forslag i vores dokumenter.
|
||||||
|
shareVault.docsTooltip=Åbn dokumentationen for at lære mere om deling af bokse.
|
||||||
|
shareVault.hubAd.description=Den sikre måde at arbejde i hold
|
||||||
|
shareVault.hubAd.keyManagement=Zero-knowledge nøgle håndtering
|
||||||
|
shareVault.hubAd.authentication=Stærk autentifikation
|
||||||
|
shareVault.hubAd.encryption=End-to-end-kryptering
|
||||||
|
shareVault.visitHub=Besøg Kryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Sådan deler du en Hub boks
|
||||||
|
shareVault.hub.description=For at dele indholdet i boksen med et andet holdmedlem skal du udføre to trin:
|
||||||
|
shareVault.hub.instruction.1=1. Del adgang til den krypterede boks-mappe vha. opbevaring i skyen.
|
||||||
|
shareVault.hub.instruction.2=2. Giv adgang til holdmedlem i Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Åben Cryptomator Hub
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Wähle einen Namen für den Tresor
|
|||||||
addvaultwizard.new.namePrompt=Tresorname
|
addvaultwizard.new.namePrompt=Tresorname
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Wo soll Cryptomator die verschlüsselten Dateien deines Tresors ablegen?
|
addvaultwizard.new.locationInstruction=Wo soll Cryptomator die verschlüsselten Dateien deines Tresors ablegen?
|
||||||
|
addvaultwizard.new.locationLoading=Lokales Dateisystem wird auf Standard-Cloud-Verzeichnisse überprüft …
|
||||||
addvaultwizard.new.locationLabel=Speicherort
|
addvaultwizard.new.locationLabel=Speicherort
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Eigener Ort
|
addvaultwizard.new.directoryPickerLabel=Eigener Ort
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Die temporäre, versteckte Da
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Dein Tresor konnte nicht in den Pfad „%s“ eingehängt werden. Bitte versuche es erneut oder wähle einen anderen Pfad aus.
|
unlock.error.customPath.description.couldNotBeCleaned=Dein Tresor konnte nicht in den Pfad „%s“ eingehängt werden. Bitte versuche es erneut oder wähle einen anderen Pfad aus.
|
||||||
unlock.error.customPath.description.notEmptyDir=Der benutzerdefinierte Einhängepunkt „%s“ ist kein leerer Ordner. Bitte wähle einen leeren Ordner und versuche es erneut.
|
unlock.error.customPath.description.notEmptyDir=Der benutzerdefinierte Einhängepunkt „%s“ ist kein leerer Ordner. Bitte wähle einen leeren Ordner und versuche es erneut.
|
||||||
unlock.error.customPath.description.generic=Du hast für diesen Tresor einen benutzerdefinierten Einhängepunkt ausgewählt, aber dessen Verwendung ist mit folgender Meldung fehlgeschlagen: %2$s
|
unlock.error.customPath.description.generic=Du hast für diesen Tresor einen benutzerdefinierten Einhängepunkt ausgewählt, aber dessen Verwendung ist mit folgender Meldung fehlgeschlagen: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Tresor konnte nicht entsperrt werden
|
unlock.error.restartRequired.message=Tresor konnte nicht entsperrt werden
|
||||||
unlock.error.fuseRestartRequired.description=Ändere den Laufwerkstyp in den Tresoroptionen oder starte Cryptomator neu.
|
unlock.error.restartRequired.description=Ändere den Laufwerkstyp in den Tresoroptionen oder starte Cryptomator neu.
|
||||||
unlock.error.title=„%s“ konnte nicht entsperrt werden
|
unlock.error.title=„%s“ konnte nicht entsperrt werden
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Zugriff auf Geräteschlüssel nicht möglich
|
hub.noKeychain.message=Zugriff auf Geräteschlüssel nicht möglich
|
||||||
@@ -157,17 +158,22 @@ hub.receive.message=Antwort wird verarbeitet …
|
|||||||
hub.receive.description=Cryptomator empfängt und verarbeitet gerade die Antwort vom Hub. Bitte warten.
|
hub.receive.description=Cryptomator empfängt und verarbeitet gerade die Antwort vom Hub. Bitte warten.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Neues Gerät
|
hub.register.message=Neues Gerät
|
||||||
hub.register.description=Dies ist der erste Hub-Zugriff von diesem Gerät. Bitte autorisiere dich mit deinem Account Key.
|
hub.register.description=Dies ist der erste Hub-Zugriff von diesem Gerät. Bitte registriere es mit deinem Account Key.
|
||||||
hub.register.nameLabel=Gerätename
|
hub.register.nameLabel=Gerätename
|
||||||
hub.register.invalidAccountKeyLabel=Ungültiger Account Key
|
hub.register.invalidAccountKeyLabel=Ungültiger Account Key
|
||||||
hub.register.occupiedMsg=Name bereits in Verwendung
|
hub.register.registerBtn=Registrieren
|
||||||
hub.register.registerBtn=Bestätigen
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Name wird bereits verwendet
|
||||||
|
hub.register.legacy.description=Dies ist der erste Hub-Zugriff von diesem Gerät. Bitte registriere es.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Gerät wurde benannt
|
hub.registerSuccess.message=Gerät registriert
|
||||||
hub.registerSuccess.description=Für Zugriff auf den Tresor muss dein Gerät vom Tresorbesitzer autorisiert werden.
|
hub.registerSuccess.description=Dein Gerät ist erfolgreich registriert. Du kannst den Tresor jetzt entsperren.
|
||||||
|
hub.registerSuccess.unlockBtn=Entsperren
|
||||||
|
hub.registerSuccess.legacy.description=Für den Zugriff auf den Tresor muss dein Gerät zusätzlich vom Tresoreigentümer autorisiert werden.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Gerät konnte kein Name gegeben werden
|
hub.registerFailed.message=Gerät konnte nicht registriert werden
|
||||||
hub.registerFailed.description=Während der Namensvergabe wurde ein Fehler ausgelöst. Weitere Details findest du im Anwendungsprotokoll.
|
hub.registerFailed.description.generic=Im Registrierungsprozess ist ein Fehler aufgetreten. Weitere Details findest du im Anwendungsprotokoll.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Dieses Gerät ist bereits für einen anderen Benutzer registriert. Ändere das Benutzerkonto oder verwende ein anderes Gerät.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Zugriff verweigert
|
hub.unauthorized.message=Zugriff verweigert
|
||||||
hub.unauthorized.description=Dein Gerät wurde noch nicht für den Zugriff auf diesen Tresor autorisiert. Bitte den Tresorbesitzer, dein Gerät zu autorisieren.
|
hub.unauthorized.description=Dein Gerät wurde noch nicht für den Zugriff auf diesen Tresor autorisiert. Bitte den Tresorbesitzer, dein Gerät zu autorisieren.
|
||||||
@@ -314,6 +320,14 @@ preferences.updates.currentVersion=Aktuelle Version: %s
|
|||||||
preferences.updates.autoUpdateCheck=Automatisch nach Updates suchen
|
preferences.updates.autoUpdateCheck=Automatisch nach Updates suchen
|
||||||
preferences.updates.checkNowBtn=Jetzt prüfen
|
preferences.updates.checkNowBtn=Jetzt prüfen
|
||||||
preferences.updates.updateAvailable=Update auf Version %s verfügbar.
|
preferences.updates.updateAvailable=Update auf Version %s verfügbar.
|
||||||
|
preferences.updates.lastUpdateCheck=Letzte Überprüfung: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=nie
|
||||||
|
preferences.updates.lastUpdateCheck.recently=kürzlich
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=vor %s Tagen
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=vor %s Stunden
|
||||||
|
preferences.updates.checkFailed=Die Suche nach Updates ist fehlgeschlagen. Bitte überprüfe deine Internetverbindung oder versuche es später erneut.
|
||||||
|
preferences.updates.upToDate=Cryptomator ist aktuell.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Unterstütze uns
|
preferences.contribute=Unterstütze uns
|
||||||
preferences.contribute.registeredFor=Supporter-Zertifikat registriert für %s
|
preferences.contribute.registeredFor=Supporter-Zertifikat registriert für %s
|
||||||
@@ -386,6 +400,7 @@ main.vaultDetail.unlockBtn=Entsperren …
|
|||||||
main.vaultDetail.unlockNowBtn=Jetzt entsperren
|
main.vaultDetail.unlockNowBtn=Jetzt entsperren
|
||||||
main.vaultDetail.optionsBtn=Tresoroptionen
|
main.vaultDetail.optionsBtn=Tresoroptionen
|
||||||
main.vaultDetail.passwordSavedInKeychain=Passwort gespeichert
|
main.vaultDetail.passwordSavedInKeychain=Passwort gespeichert
|
||||||
|
main.vaultDetail.share=Teilen …
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=ENTSPERRT
|
main.vaultDetail.unlockedStatus=ENTSPERRT
|
||||||
main.vaultDetail.accessLocation=Deine Tresorinhalte sind hier erreichbar:
|
main.vaultDetail.accessLocation=Deine Tresorinhalte sind hier erreichbar:
|
||||||
@@ -451,7 +466,7 @@ vaultOptions.mount.mountPoint.custom=Gewähltes Verzeichnis verwenden
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Durchsuchen …
|
vaultOptions.mount.mountPoint.directoryPickerButton=Durchsuchen …
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Wähle ein Verzeichnis
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Wähle ein Verzeichnis
|
||||||
vaultOptions.mount.volumeType.default=Standard (%s)
|
vaultOptions.mount.volumeType.default=Standard (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Um diesen Laufwerkstyp verwenden zu können, muss Cryptomator neu gestartet werden.
|
vaultOptions.mount.volumeType.restartRequired=Um diesen Laufwerkstyp verwenden zu können, muss Cryptomator neu gestartet werden.
|
||||||
vaultOptions.mount.volume.tcp.port=TCP-Port
|
vaultOptions.mount.volume.tcp.port=TCP-Port
|
||||||
vaultOptions.mount.volume.type=Laufwerkstyp
|
vaultOptions.mount.volume.type=Laufwerkstyp
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -523,4 +538,27 @@ updateReminder.message=Nach Updates suchen?
|
|||||||
updateReminder.description=Bleib auf dem Laufenden mit neuen Funktionen, Fehlerbehebungen und Sicherheitsverbesserungen. Wir empfehlen, automatisch nach Updates zu suchen.
|
updateReminder.description=Bleib auf dem Laufenden mit neuen Funktionen, Fehlerbehebungen und Sicherheitsverbesserungen. Wir empfehlen, automatisch nach Updates zu suchen.
|
||||||
updateReminder.notNow=Nicht jetzt
|
updateReminder.notNow=Nicht jetzt
|
||||||
updateReminder.yesOnce=Ja, einmalig
|
updateReminder.yesOnce=Ja, einmalig
|
||||||
updateReminder.yesAutomatically=Ja, automatisch
|
updateReminder.yesAutomatically=Ja, automatisch
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Einstellungen öffnen
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Tresor teilen
|
||||||
|
shareVault.message=Möchtest du deinen Tresor mit anderen teilen?
|
||||||
|
shareVault.description=Sei immer vorsichtig, wenn du deinen Tresor mit anderen Personen teilst. Kurz gesagt, befolge diese Schritte:
|
||||||
|
shareVault.instruction.1=1. Teile den Zugriff auf den verschlüsselten Tresorordner über den Cloud-Speicher.
|
||||||
|
shareVault.instruction.2=2. Teile das Tresorpasswort auf einem sicheren Weg.
|
||||||
|
shareVault.remarkBestPractices=Weitere Informationen findest du in den Vorschlägen für bewährte Verfahren in unserer Dokumentation.
|
||||||
|
shareVault.docsTooltip=Öffne die Dokumentation, um mehr über das Teilen von Tresoren zu erfahren.
|
||||||
|
shareVault.hubAd.description=Die sichere Art der Teamarbeit
|
||||||
|
shareVault.hubAd.keyManagement=• Zero-knowledge-Schlüsselverwaltung
|
||||||
|
shareVault.hubAd.authentication=• Starke Authentifizierung
|
||||||
|
shareVault.hubAd.encryption=• Ende-zu-Ende-Verschlüsselung
|
||||||
|
shareVault.visitHub=Besuche Cryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Teilen eines Hub-Tresors
|
||||||
|
shareVault.hub.description=Zur Freigabe des Tresorinhalts für ein anderes Teammitglied sind zwei Schritte erforderlich:
|
||||||
|
shareVault.hub.instruction.1=1. Teile den Zugriff auf den verschlüsselten Tresorordner über den Cloud-Speicher.
|
||||||
|
shareVault.hub.instruction.2=2. Füge das Teammitglied in Cryptomator Hub als Tresormitglied hinzu.
|
||||||
|
shareVault.hub.openHub=Cryptomator Hub öffnen
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Διαλέξτε ένα όνομα για τ
|
|||||||
addvaultwizard.new.namePrompt=Όνομα Κρύπτης
|
addvaultwizard.new.namePrompt=Όνομα Κρύπτης
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Που θα πρέπει να αποθηκεύσει το Cryptomator τα κωδικοποιημένα αρχεία της κρύπτης σου;
|
addvaultwizard.new.locationInstruction=Που θα πρέπει να αποθηκεύσει το Cryptomator τα κωδικοποιημένα αρχεία της κρύπτης σου;
|
||||||
|
addvaultwizard.new.locationLoading=Έλεγχος τοπικού συστήματος αρχείων για προεπιλεγμένους καταλόγους αποθήκευσης cloud…
|
||||||
addvaultwizard.new.locationLabel=Θέση αποθήκευσης
|
addvaultwizard.new.locationLabel=Θέση αποθήκευσης
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Προσαρμοσμένη τοποθεσία
|
addvaultwizard.new.directoryPickerLabel=Προσαρμοσμένη τοποθεσία
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Το προσωρινό, κρ
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Η κρύπτη σας δεν μπορεί να τοποθετηθεί στη διαδρομή "%s". Παρακαλώ δοκιμάστε ξανά ή επιλέξτε διαφορετική διαδρομή.
|
unlock.error.customPath.description.couldNotBeCleaned=Η κρύπτη σας δεν μπορεί να τοποθετηθεί στη διαδρομή "%s". Παρακαλώ δοκιμάστε ξανά ή επιλέξτε διαφορετική διαδρομή.
|
||||||
unlock.error.customPath.description.notEmptyDir=Η προσαρμοσμένη διαδρομή προσάρτησης "%s" δεν είναι ένας άδειος φάκελος. Παρακαλώ επιλέξτε έναν άδειο φάκελο και προσπαθήστε ξανά.
|
unlock.error.customPath.description.notEmptyDir=Η προσαρμοσμένη διαδρομή προσάρτησης "%s" δεν είναι ένας άδειος φάκελος. Παρακαλώ επιλέξτε έναν άδειο φάκελο και προσπαθήστε ξανά.
|
||||||
unlock.error.customPath.description.generic=Έχετε επιλέξει μια προσαρμοσμένη διαδρομή προσάρτησης για αυτή την κρύπτη, αλλά η χρήση της απέτυχε με το μήνυμα: %2$s
|
unlock.error.customPath.description.generic=Έχετε επιλέξει μια προσαρμοσμένη διαδρομή προσάρτησης για αυτή την κρύπτη, αλλά η χρήση της απέτυχε με το μήνυμα: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Αδυναμία ξεκλειδώματος κρύπτης
|
unlock.error.restartRequired.message=Αδυναμία ξεκλειδώματος κρύπτης
|
||||||
unlock.error.fuseRestartRequired.description=Αλλάξτε τον τύπο τόμου στις επιλογές κρύπτης ή επανεκκινήστε το Cryptomator.
|
unlock.error.restartRequired.description=Αλλάξτε τον τύπο τόμου στις επιλογές κρύπτης ή επανεκκινήστε το Cryptomator.
|
||||||
unlock.error.title=Ξεκλείδωμα "%s" απέτυχε
|
unlock.error.title=Ξεκλείδωμα "%s" απέτυχε
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Δεν είναι δυνατή η πρόσβαση στο κλειδί της συσκευής
|
hub.noKeychain.message=Δεν είναι δυνατή η πρόσβαση στο κλειδί της συσκευής
|
||||||
@@ -157,17 +158,22 @@ hub.receive.message=Επεξεργασία απάντησης…
|
|||||||
hub.receive.description=Το Cryptomator λαμβάνει και επεξεργάζεται την απάντηση από το Hub. Παρακαλώ περιμένετε.
|
hub.receive.description=Το Cryptomator λαμβάνει και επεξεργάζεται την απάντηση από το Hub. Παρακαλώ περιμένετε.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Νέα Συσκευή
|
hub.register.message=Νέα Συσκευή
|
||||||
hub.register.description=Αυτή είναι η πρώτη πρόσβαση Hub από αυτήν τη συσκευή. Παρακαλούμε εξουσιοδοτήστε την χρησιμοποιώντας το κλειδί του λογαριασμού σας.
|
hub.register.description=Αυτή είναι η πρώτη πρόσβαση Hub από αυτήν τη συσκευή. Εγγραφείτε χρησιμοποιώντας το Κλειδί του Λογαριασμού σας.
|
||||||
hub.register.nameLabel=Όνομα Συσκευής
|
hub.register.nameLabel=Όνομα Συσκευής
|
||||||
hub.register.invalidAccountKeyLabel=Μη Έγκυρο Κλειδί Λογαριασμού
|
hub.register.invalidAccountKeyLabel=Μη Έγκυρο Κλειδί Λογαριασμού
|
||||||
hub.register.occupiedMsg=Το όνομα χρησιμοποιείται ήδη
|
hub.register.registerBtn=Εγγραφή
|
||||||
hub.register.registerBtn=Επιβεβαίωση
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Το όνομα χρησιμοποιείται ήδη
|
||||||
|
hub.register.legacy.description=Αυτή είναι η πρώτη πρόσβαση Hub από αυτήν τη συσκευή. Παρακαλούμε καταχωρήστε τη.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Η συσκευή ονομάστηκε
|
hub.registerSuccess.message=Η συσκευή καταχωρήθηκε
|
||||||
hub.registerSuccess.description=Για να αποκτήσετε πρόσβαση στην κρύπτη, η συσκευή σας πρέπει να είναι εξουσιοδοτημένη από τον κάτοχο της κρύπτης.
|
hub.registerSuccess.description=Η συσκευή σας καταχωρήθηκε με επιτυχία. Τώρα μπορείτε να συνεχίσετε να ξεκλειδώσετε την κρύπτη.
|
||||||
|
hub.registerSuccess.unlockBtn=Ξεκλείδωμα
|
||||||
|
hub.registerSuccess.legacy.description=Για να αποκτήσετε πρόσβαση στην κρύπτη, η συσκευή σας πρέπει να έχει επιπλέον εξουσιοδότηση από τον κάτοχο της κρύπτης.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Η ονομασία της συσκευής απέτυχε
|
hub.registerFailed.message=Η εγγραφή της συσκευής απέτυχε
|
||||||
hub.registerFailed.description=Παρουσιάστηκε σφάλμα στη διαδικασία ονομασίας. Για περισσότερες λεπτομέρειες, ανατρέξτε στο αρχείο καταγραφής της εφαρμογής.
|
hub.registerFailed.description.generic=Παρουσιάστηκε σφάλμα στη διαδικασία εγγραφής. Για περισσότερες λεπτομέρειες, ανατρέξτε στο αρχείο καταγραφής της εφαρμογής.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Αυτή η συσκευή είναι ήδη εγγεγραμμένη για διαφορετικό χρήστη. Προσπαθήστε να αλλάξετε τον λογαριασμό χρήστη ή να χρησιμοποιήσετε διαφορετική συσκευή.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Δεν επιτρέπεται η πρόσβαση
|
hub.unauthorized.message=Δεν επιτρέπεται η πρόσβαση
|
||||||
hub.unauthorized.description=Η συσκευή σας δεν έχει ακόμη εξουσιοδοτηθεί να έχει πρόσβαση σε αυτή την κρύπτη. Ζητήστε από τον κάτοχο της κρύπτης να την εξουσιοδοτήσει.
|
hub.unauthorized.description=Η συσκευή σας δεν έχει ακόμη εξουσιοδοτηθεί να έχει πρόσβαση σε αυτή την κρύπτη. Ζητήστε από τον κάτοχο της κρύπτης να την εξουσιοδοτήσει.
|
||||||
@@ -314,6 +320,14 @@ preferences.updates.currentVersion=Τρέχουσα έκδοση: %s
|
|||||||
preferences.updates.autoUpdateCheck=Αυτόματος έλεγχος για ενημερώσεις
|
preferences.updates.autoUpdateCheck=Αυτόματος έλεγχος για ενημερώσεις
|
||||||
preferences.updates.checkNowBtn=Έλεγχος τώρα
|
preferences.updates.checkNowBtn=Έλεγχος τώρα
|
||||||
preferences.updates.updateAvailable=Η ενημέρωση για την έκδοση %s είναι διαθέσιμη.
|
preferences.updates.updateAvailable=Η ενημέρωση για την έκδοση %s είναι διαθέσιμη.
|
||||||
|
preferences.updates.lastUpdateCheck=Τελευταίος έλεγχος: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=ποτέ
|
||||||
|
preferences.updates.lastUpdateCheck.recently=πρόσφατα
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s ημέρες πριν
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s ώρες πριν
|
||||||
|
preferences.updates.checkFailed=Η αναζήτηση ενημερώσεων απέτυχε. Ελέγξτε τη σύνδεσή σας στο διαδίκτυο ή δοκιμάστε ξανά αργότερα.
|
||||||
|
preferences.updates.upToDate=Το Cryptomator είναι ενημερωμένο.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Υποστηρίξτε μας
|
preferences.contribute=Υποστηρίξτε μας
|
||||||
preferences.contribute.registeredFor=Το πιστοποιητικό υποστήριξης καταχωρήθηκε για %s
|
preferences.contribute.registeredFor=Το πιστοποιητικό υποστήριξης καταχωρήθηκε για %s
|
||||||
@@ -386,6 +400,7 @@ main.vaultDetail.unlockBtn=Ξεκλείδωμα…
|
|||||||
main.vaultDetail.unlockNowBtn=Ξεκλείδωμα τώρα
|
main.vaultDetail.unlockNowBtn=Ξεκλείδωμα τώρα
|
||||||
main.vaultDetail.optionsBtn=Επιλογές vault
|
main.vaultDetail.optionsBtn=Επιλογές vault
|
||||||
main.vaultDetail.passwordSavedInKeychain=Ο κωδικός αποθηκεύτηκε
|
main.vaultDetail.passwordSavedInKeychain=Ο κωδικός αποθηκεύτηκε
|
||||||
|
main.vaultDetail.share=Κοινοποίηση…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=ΞΕΚΛΕΙΔΩΜΕΝΟ
|
main.vaultDetail.unlockedStatus=ΞΕΚΛΕΙΔΩΜΕΝΟ
|
||||||
main.vaultDetail.accessLocation=Τα δεδομένα του vault σας είναι διαθέσιμα εδώ:
|
main.vaultDetail.accessLocation=Τα δεδομένα του vault σας είναι διαθέσιμα εδώ:
|
||||||
@@ -451,7 +466,7 @@ vaultOptions.mount.mountPoint.custom=Χρήση επιλεγμένου κατα
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Επιλογή…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Επιλογή…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Επιλέξτε έναν κατάλογο
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Επιλέξτε έναν κατάλογο
|
||||||
vaultOptions.mount.volumeType.default=Προεπιλογή (%s)
|
vaultOptions.mount.volumeType.default=Προεπιλογή (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Για να χρησιμοποιήσετε αυτόν τον τύπο τόμου, πρέπει να γίνει επανεκκίνηση του Cryptomator.
|
vaultOptions.mount.volumeType.restartRequired=Για να χρησιμοποιήσετε αυτόν τον τύπο τόμου, το Cryptomator πρέπει να επανεκκινηθεί.
|
||||||
vaultOptions.mount.volume.tcp.port=Θύρα TCP
|
vaultOptions.mount.volume.tcp.port=Θύρα TCP
|
||||||
vaultOptions.mount.volume.type=Τύπος Τόμου
|
vaultOptions.mount.volume.type=Τύπος Τόμου
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -523,4 +538,30 @@ updateReminder.message=Έλεγχος για ενημερώσεις;
|
|||||||
updateReminder.description=Μείνετε ενημερωμένοι με νέες δυνατότητες, διορθώσεις σφαλμάτων και βελτιώσεις ασφάλειας. Συνιστούμε τον αυτόματο έλεγχο για ενημερώσεις.
|
updateReminder.description=Μείνετε ενημερωμένοι με νέες δυνατότητες, διορθώσεις σφαλμάτων και βελτιώσεις ασφάλειας. Συνιστούμε τον αυτόματο έλεγχο για ενημερώσεις.
|
||||||
updateReminder.notNow=Όχι Τώρα
|
updateReminder.notNow=Όχι Τώρα
|
||||||
updateReminder.yesOnce=Ναι, Μία Φορά
|
updateReminder.yesOnce=Ναι, Μία Φορά
|
||||||
updateReminder.yesAutomatically=Ναι, Αυτόματα
|
updateReminder.yesAutomatically=Ναι, Αυτόματα
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Ειδοποίηση κατάργησης
|
||||||
|
dokanySupportEnd.message=Τέλος υποστήριξης για Dokany
|
||||||
|
dokanySupportEnd.description=Ο τύπος τόμου Dokany δεν υποστηρίζεται πλέον από το Cryptomator. Οι ρυθμίσεις σας έχουν προσαρμοστεί για να χρησιμοποιούν τον προεπιλεγμένο τύπο τόμου. Μπορείτε να δείτε τον προεπιλεγμένο τύπο στις προτιμήσεις.
|
||||||
|
dokanySupportEnd.preferencesBtn=Άνοιγμα Προτιμήσεων
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Κοινή χρήση Κρύπτης
|
||||||
|
shareVault.message=Θα θέλατε να μοιραστείτε την κρύπτη σας με άλλους;
|
||||||
|
shareVault.description=Να είστε πάντα προσεκτικοί όταν μοιράζεστε την κρύπτη σας με άλλα άτομα. Εν ολίγοις, ακολουθήστε τα παρακάτω βήματα:
|
||||||
|
shareVault.instruction.1=1. Μοιραστείτε την πρόσβαση στον κρυπτογραφημένο φάκελο κρύπτης μέσω του χώρου αποθήκευσης στο cloud.
|
||||||
|
shareVault.instruction.2=2. Μοιραστείτε τον κωδικό πρόσβασης της κρύπτης με ασφαλή τρόπο.
|
||||||
|
shareVault.remarkBestPractices=Για περισσότερες πληροφορίες, ανατρέξτε στις προτάσεις βέλτιστων πρακτικών στα έγγραφά μας.
|
||||||
|
shareVault.docsTooltip=Ανοίξτε τις οδηγίες για να μάθετε περισσότερα σχετικά με την κοινή χρήση κρυπτών.
|
||||||
|
shareVault.hubAd.description=Ο ασφαλής τρόπος εργασίας σε ομάδες
|
||||||
|
shareVault.hubAd.keyManagement=• Διαχείριση κλειδιών μηδενικής γνώσης
|
||||||
|
shareVault.hubAd.authentication=• Ισχυρός έλεγχος ταυτότητας
|
||||||
|
shareVault.hubAd.encryption=• Κρυπτογράφηση από άκρο σε άκρο
|
||||||
|
shareVault.visitHub=Επισκεφτείτε το Cryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Πώς να μοιραστείτε μια κρύπτη Hub
|
||||||
|
shareVault.hub.description=Για να μοιραστείτε το περιεχόμενο της κρύπτης με άλλο μέλος της ομάδας, πρέπει να εκτελέσετε δύο βήματα:
|
||||||
|
shareVault.hub.instruction.1=1. Μοιραστείτε την πρόσβαση στον κρυπτογραφημένο φάκελο κρύπτης μέσω του χώρου αποθήκευσης στο cloud.
|
||||||
|
shareVault.hub.instruction.2=2. Παραχωρήστε πρόσβαση σε μέλος της ομάδας στο Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Ανοίξτε το Cryptomator Hub
|
||||||
@@ -24,7 +24,7 @@ error.existingSolutionDescription=Cryptomator no esperaba que esto ocurriera, pe
|
|||||||
error.hyperlink.solution=Buscar la solución
|
error.hyperlink.solution=Buscar la solución
|
||||||
error.lookupPermissionMessage=Cryptomator puede buscar una solución en línea para este problema. Esto enviará una solicitud a nuestra base de datos de problemas desde su dirección IP.
|
error.lookupPermissionMessage=Cryptomator puede buscar una solución en línea para este problema. Esto enviará una solicitud a nuestra base de datos de problemas desde su dirección IP.
|
||||||
error.dismiss=Descartar
|
error.dismiss=Descartar
|
||||||
error.lookUpSolution=Buscar solución
|
error.lookUpSolution=Buscar una solución
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Bóveda
|
defaults.vault.vaultName=Bóveda
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Elegir un nombre para la bóveda
|
|||||||
addvaultwizard.new.namePrompt=Nombre de la bóveda
|
addvaultwizard.new.namePrompt=Nombre de la bóveda
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=¿Dónde se deben almacenar los archivos cifrados de la bóveda?
|
addvaultwizard.new.locationInstruction=¿Dónde se deben almacenar los archivos cifrados de la bóveda?
|
||||||
|
addvaultwizard.new.locationLoading=Comprobando el sistema de archivos local en busca de los directorios de almacenamiento en la nube por defecto…
|
||||||
addvaultwizard.new.locationLabel=Lugar de almacenamiento
|
addvaultwizard.new.locationLabel=Lugar de almacenamiento
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Ubicación personalizada
|
addvaultwizard.new.directoryPickerLabel=Ubicación personalizada
|
||||||
@@ -61,7 +62,7 @@ addvaultwizard.new.validName=Nombre de bóveda válido
|
|||||||
addvaultwizard.new.validCharacters.message=El nombre de la bóveda puede contener los siguientes caracteres:
|
addvaultwizard.new.validCharacters.message=El nombre de la bóveda puede contener los siguientes caracteres:
|
||||||
addvaultwizard.new.validCharacters.chars=Caracteres de la palabra (por ejemplo, a, ж o 수)
|
addvaultwizard.new.validCharacters.chars=Caracteres de la palabra (por ejemplo, a, ж o 수)
|
||||||
addvaultwizard.new.validCharacters.numbers=Números
|
addvaultwizard.new.validCharacters.numbers=Números
|
||||||
addvaultwizard.new.validCharacters.dashes=Guion (%s) o subrayado (%s)
|
addvaultwizard.new.validCharacters.dashes=Guion (%s) o guion bajo (%s)
|
||||||
### Expert Settings
|
### Expert Settings
|
||||||
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=Habilitar ajustes expertos
|
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=Habilitar ajustes expertos
|
||||||
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Ingrese un valor entre 36 y 220 (por defecto 220)
|
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Ingrese un valor entre 36 y 220 (por defecto 220)
|
||||||
@@ -71,7 +72,7 @@ addvaultwizard.new.expertSettings.shorteningThreshold.valid=Válido
|
|||||||
### Password
|
### Password
|
||||||
addvaultwizard.new.createVaultBtn=Crear bóveda
|
addvaultwizard.new.createVaultBtn=Crear bóveda
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice=No podrá acceder a sus datos sin su contraseña. ¿Desea una clave de recuperación en caso de que pierda su contraseña?
|
addvaultwizard.new.generateRecoveryKeyChoice=No podrá acceder a sus datos sin su contraseña. ¿Desea una clave de recuperación en caso de que pierda su contraseña?
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice.yes=Sí, por favor
|
addvaultwizard.new.generateRecoveryKeyChoice.yes=Sí, por favor. Más vale prevenir que curar
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice.no=No, gracias
|
addvaultwizard.new.generateRecoveryKeyChoice.no=No, gracias
|
||||||
### Information
|
### Information
|
||||||
addvault.new.readme.storageLocation.fileName=IMPORTANTE.rtf
|
addvault.new.readme.storageLocation.fileName=IMPORTANTE.rtf
|
||||||
@@ -129,7 +130,7 @@ unlock.chooseMasterkey.filePickerTitle=Seleccione el archivo de la clave maestra
|
|||||||
unlock.chooseMasterkey.filePickerMimeDesc=Clave maestra de Cryptomator
|
unlock.chooseMasterkey.filePickerMimeDesc=Clave maestra de Cryptomator
|
||||||
## Success
|
## Success
|
||||||
unlock.success.message=Desbloqueo exitoso
|
unlock.success.message=Desbloqueo exitoso
|
||||||
unlock.success.description=El contenido de la bóveda "%s" ahora es accesible a través de su punto de montaje.
|
unlock.success.description=El contenido de la caja fuerte "%s" ahora es accesible a través de su punto de montaje.
|
||||||
unlock.success.rememberChoice=Recordar opción y no mostrar de nuevo
|
unlock.success.rememberChoice=Recordar opción y no mostrar de nuevo
|
||||||
unlock.success.revealBtn=Revelar unidad
|
unlock.success.revealBtn=Revelar unidad
|
||||||
## Failure
|
## Failure
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=El archivo oculto temporal "%
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Su bóveda no se pudo montar en la ruta "%s". Intente de nuevo o elija una ruta diferente.
|
unlock.error.customPath.description.couldNotBeCleaned=Su bóveda no se pudo montar en la ruta "%s". Intente de nuevo o elija una ruta diferente.
|
||||||
unlock.error.customPath.description.notEmptyDir=La ruta de montaje personalizada "%s" no es una carpeta vacía. Elija una carpeta vacía y vuelva a intentarlo.
|
unlock.error.customPath.description.notEmptyDir=La ruta de montaje personalizada "%s" no es una carpeta vacía. Elija una carpeta vacía y vuelva a intentarlo.
|
||||||
unlock.error.customPath.description.generic=Seleccionó una ruta de montaje personalizada para esta bóveda, pero falló al usarla con el mensaje: %2$s
|
unlock.error.customPath.description.generic=Seleccionó una ruta de montaje personalizada para esta bóveda, pero falló al usarla con el mensaje: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=No se puede desbloquear la bóveda
|
unlock.error.restartRequired.message=No se puede desbloquear la bóveda
|
||||||
unlock.error.fuseRestartRequired.description=Cambie el tipo de volumen en las opciones de la bóveda o reinicie Cryptomator.
|
unlock.error.restartRequired.description=Cambie el tipo de volumen en las opciones de la bóveda o reinicie Cryptomator.
|
||||||
unlock.error.title=Error al desbloquear "%s"
|
unlock.error.title=Error al desbloquear "%s"
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=No se puede acceder a la clave del dispositivo
|
hub.noKeychain.message=No se puede acceder a la clave del dispositivo
|
||||||
@@ -157,17 +158,22 @@ hub.receive.message=Procesando la respuesta…
|
|||||||
hub.receive.description=Cryptomator está recibiendo y procesando la respuesta del Hub. Por favor espere.
|
hub.receive.description=Cryptomator está recibiendo y procesando la respuesta del Hub. Por favor espere.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Nuevo dispositivo
|
hub.register.message=Nuevo dispositivo
|
||||||
hub.register.description=Este es el primer acceso al Hub desde este dispositivo. Por favor, autorícelo usando su Account Key.
|
hub.register.description=Este es el primer acceso al Hub desde este dispositivo. Por favor, regístrelo usando su Account Key.
|
||||||
hub.register.nameLabel=Nombre del dispositivo
|
hub.register.nameLabel=Nombre del dispositivo
|
||||||
hub.register.invalidAccountKeyLabel=Account Key no válida
|
hub.register.invalidAccountKeyLabel=Account Key no válida
|
||||||
hub.register.occupiedMsg=Nombre ya en uso
|
hub.register.registerBtn=Registrarse
|
||||||
hub.register.registerBtn=Confirmar
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=El nombre ya está en uso
|
||||||
|
hub.register.legacy.description=Este es el primer acceso al Hub desde este dispositivo. Por favor, regístrelo.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Dispositivo nombrado
|
hub.registerSuccess.message=Dispositivo registrado
|
||||||
hub.registerSuccess.description=Para acceder a la bóveda, su dispositivo debe ser autorizado por el propietario de la bóveda.
|
hub.registerSuccess.description=Tu dispositivo se ha registrado correctamente. Ahora puede proceder a desbloquear la bóveda.
|
||||||
|
hub.registerSuccess.unlockBtn=Desbloquear
|
||||||
|
hub.registerSuccess.legacy.description=Para acceder a la bóveda, su dispositivo debe estar autorizado por el propietario de la bóveda.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Error al nombrar el dispositivo
|
hub.registerFailed.message=El registro del dispositivo ha fallado
|
||||||
hub.registerFailed.description=Ocurrió un error en el nombramiento. 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.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Acceso denegado
|
hub.unauthorized.message=Acceso denegado
|
||||||
hub.unauthorized.description=Su dispositivo aún no ha sido autorizado para acceder a esta bóveda. Pídale al propietario de la bóveda que lo autorice.
|
hub.unauthorized.description=Su dispositivo aún no ha sido autorizado para acceder a esta bóveda. Pídale al propietario de la bóveda que lo autorice.
|
||||||
@@ -187,8 +193,8 @@ lock.forced.description=El bloqueo de "%s" fue bloqueado por operaciones pendien
|
|||||||
lock.forced.retryBtn=Reintentar
|
lock.forced.retryBtn=Reintentar
|
||||||
lock.forced.forceBtn=Forzar bloqueo
|
lock.forced.forceBtn=Forzar bloqueo
|
||||||
## Failure
|
## Failure
|
||||||
lock.fail.message=Error al bloquear la bóveda
|
lock.fail.message=Error al bloquear la caja fuerte
|
||||||
lock.fail.description=No se pudo bloquear la bóveda "%s". Asegúrese de que el trabajo no guardado se ha guardado en otro lugar y las operaciones de lectura/escritura importantes han finalizado. Para cerrar la bóveda termine el proceso de Cryptomator.
|
lock.fail.description=No se pudo bloquear la caja fuerte "%s". Asegúrese de que el trabajo no guardado se ha guardado en otro lugar y las operaciones de lectura/escritura importantes han finalizado. Para cerrar la bóveda termine el proceso de Cryptomator.
|
||||||
|
|
||||||
# Migration
|
# Migration
|
||||||
migration.title=Actualizar bóveda
|
migration.title=Actualizar bóveda
|
||||||
@@ -314,6 +320,14 @@ preferences.updates.currentVersion=Versión actual: %s
|
|||||||
preferences.updates.autoUpdateCheck=Buscar actualizaciones automáticamente
|
preferences.updates.autoUpdateCheck=Buscar actualizaciones automáticamente
|
||||||
preferences.updates.checkNowBtn=Buscar ahora
|
preferences.updates.checkNowBtn=Buscar ahora
|
||||||
preferences.updates.updateAvailable=Actualización a la versión %s disponible.
|
preferences.updates.updateAvailable=Actualización a la versión %s disponible.
|
||||||
|
preferences.updates.lastUpdateCheck=Última comprobación: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=nunca
|
||||||
|
preferences.updates.lastUpdateCheck.recently=recientemente
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=hace %s días
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=hace %s horas
|
||||||
|
preferences.updates.checkFailed=La comprobación de actualizaciones ha fallado. Compruebe su conexión a Internet o inténtelo más tarde.
|
||||||
|
preferences.updates.upToDate=Cryptomator está actualizado.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Apóyenos
|
preferences.contribute=Apóyenos
|
||||||
preferences.contribute.registeredFor=Certificado de soporte registrado para %s
|
preferences.contribute.registeredFor=Certificado de soporte registrado para %s
|
||||||
@@ -386,6 +400,7 @@ main.vaultDetail.unlockBtn=Desbloquear…
|
|||||||
main.vaultDetail.unlockNowBtn=Desbloquear ahora
|
main.vaultDetail.unlockNowBtn=Desbloquear ahora
|
||||||
main.vaultDetail.optionsBtn=Opciones de la bóveda
|
main.vaultDetail.optionsBtn=Opciones de la bóveda
|
||||||
main.vaultDetail.passwordSavedInKeychain=Contraseña guardada
|
main.vaultDetail.passwordSavedInKeychain=Contraseña guardada
|
||||||
|
main.vaultDetail.share=Compartir…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=DESBLOQUEADO
|
main.vaultDetail.unlockedStatus=DESBLOQUEADO
|
||||||
main.vaultDetail.accessLocation=El contenido de la bóveda es accesible aquí:
|
main.vaultDetail.accessLocation=El contenido de la bóveda es accesible aquí:
|
||||||
@@ -451,7 +466,7 @@ vaultOptions.mount.mountPoint.custom=Usar directorio seleccionado
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Elegir…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Elegir…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Seleccionar un directorio
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Seleccionar un directorio
|
||||||
vaultOptions.mount.volumeType.default=Predeterminado (%s)
|
vaultOptions.mount.volumeType.default=Predeterminado (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Para utilizar este tipo de volumen, debe reiniciarse Criptomator.
|
vaultOptions.mount.volumeType.restartRequired=Para utilizar este tipo de volumen debe reiniciar Cryptomator.
|
||||||
vaultOptions.mount.volume.tcp.port=Puerto TCP
|
vaultOptions.mount.volume.tcp.port=Puerto TCP
|
||||||
vaultOptions.mount.volume.type=Tipo de volumen
|
vaultOptions.mount.volume.type=Tipo de volumen
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -523,4 +538,30 @@ updateReminder.message=¿Buscar actualizaciones?
|
|||||||
updateReminder.description=Manténgase actualizado con funciones nuevas, correcciones de errores y mejoras de seguridad. Recomendamos comprobar actualizaciones automáticamente.
|
updateReminder.description=Manténgase actualizado con funciones nuevas, correcciones de errores y mejoras de seguridad. Recomendamos comprobar actualizaciones automáticamente.
|
||||||
updateReminder.notNow=Ahora no
|
updateReminder.notNow=Ahora no
|
||||||
updateReminder.yesOnce=Sí, una vez
|
updateReminder.yesOnce=Sí, una vez
|
||||||
updateReminder.yesAutomatically=Sí, automáticamente
|
updateReminder.yesAutomatically=Sí, automáticamente
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Aviso de obsolescencia
|
||||||
|
dokanySupportEnd.message=Fin de soporte para Dokany
|
||||||
|
dokanySupportEnd.description=El tipo de volumen Dokany ya no está soportado por Cryptomator. Su configuración se ajusta para utilizar el tipo de volumen predeterminado ahora. Puede ver el tipo predeterminado en las preferencias.
|
||||||
|
dokanySupportEnd.preferencesBtn=Abrir preferencias
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Compartir bóveda
|
||||||
|
shareVault.message=¿Le gustaría compartir su bóveda con alguien más?
|
||||||
|
shareVault.description=Siempre tenga cuidado cuando comparta su bóveda con otras personas. En resumen, siga estos pasos:
|
||||||
|
shareVault.instruction.1=1. Comparta el acceso a la carpeta de la bóveda cifrada a través del almacenamiento en la nube.
|
||||||
|
shareVault.instruction.2=2. Comparta la contraseña de la bóveda de manera segura.
|
||||||
|
shareVault.remarkBestPractices=Para más información, consulte las sugerencias de buenas prácticas en nuestros documentos.
|
||||||
|
shareVault.docsTooltip=Abra la documentación para conocer más sobre cómo compartir sus bóvedas.
|
||||||
|
shareVault.hubAd.description=Una manera segura de trabajar en equipos
|
||||||
|
shareVault.hubAd.keyManagement=• Administración de claves de cero conocimiento
|
||||||
|
shareVault.hubAd.authentication=• Autenticación fuerte
|
||||||
|
shareVault.hubAd.encryption=• Cifrado de extremo a extremo
|
||||||
|
shareVault.visitHub=Visite Cryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Cómo compartir una bóveda de Hub
|
||||||
|
shareVault.hub.description=Para compartir el contenido de la bóveda con otro miembro del equipo, tiene que realizar dos pasos:
|
||||||
|
shareVault.hub.instruction.1=1. Comparta el acceso a la carpeta de la bóveda cifrada a través del almacenamiento en la nube.
|
||||||
|
shareVault.hub.instruction.2=2. Conceda el acceso al miembro del equipo en Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Abrir Cryptomator Hub
|
||||||
@@ -62,7 +62,9 @@ unlock.unlockBtn=بازکردن قفل
|
|||||||
### Waiting
|
### Waiting
|
||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=بازکردن قفل
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
@@ -93,6 +95,13 @@ lock.forced.retryBtn=تلاش مجدد
|
|||||||
## Interface
|
## Interface
|
||||||
## Volume
|
## Volume
|
||||||
## Updates
|
## Updates
|
||||||
|
preferences.updates.lastUpdateCheck=آخرین بررسی: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=هرگز
|
||||||
|
preferences.updates.lastUpdateCheck.recently=به تازگی
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s روز پیش
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s ساعت قبل
|
||||||
|
preferences.updates.upToDate=Cryptomator به روز می باشد.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -145,4 +154,8 @@ vaultOptions.mount.mountPoint.directoryPickerButton=انتخاب کنید…
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -139,14 +139,10 @@ hub.receive.message=Odotetaan vastausta…
|
|||||||
hub.receive.description=Cryptomator yhdistää Hub:iin. Ole hyvä ja odota.
|
hub.receive.description=Cryptomator yhdistää Hub:iin. Ole hyvä ja odota.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.nameLabel=Laitteen Nimi
|
hub.register.nameLabel=Laitteen Nimi
|
||||||
hub.register.occupiedMsg=Tämä nimi on jo käytössä
|
### Register Device Legacy
|
||||||
hub.register.registerBtn=Vahvista
|
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Laite nimetty onnistuneesti
|
hub.registerSuccess.unlockBtn=Avaa
|
||||||
hub.registerSuccess.description=Käyttääksesi holvia, holvin omistajan on valtuutettava laitteesi.
|
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Laitteen nimeäminen epäonnistui
|
|
||||||
hub.registerFailed.description=Nimeämisprosessissa tapahtui virhe. Löydät lisää tietoja lokitiedostoista.
|
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Pääsy estetty
|
hub.unauthorized.message=Pääsy estetty
|
||||||
hub.unauthorized.description=Laitteellasi ei ole pääsyvaltuutusta tähän holviin. Pyydä holvin omistajaa lisäämän valtuutus laitteellesi.
|
hub.unauthorized.description=Laitteellasi ei ole pääsyvaltuutusta tähän holviin. Pyydä holvin omistajaa lisäämän valtuutus laitteellesi.
|
||||||
@@ -210,6 +206,7 @@ preferences.title=Asetukset
|
|||||||
## Interface
|
## Interface
|
||||||
## Volume
|
## Volume
|
||||||
## Updates
|
## Updates
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -269,4 +266,9 @@ vaultOptions.masterkey.changePasswordBtn=Vaihda salasana
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Avaa asetukset
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ unlock.error.customPath.description.hideawayNotDir=Ang pansamantalang nakatagong
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Hindi ma-mount ang iyong vault sa path na "%s". Pakisubukang muli o pumili ng ibang landas.
|
unlock.error.customPath.description.couldNotBeCleaned=Hindi ma-mount ang iyong vault sa path na "%s". Pakisubukang muli o pumili ng ibang landas.
|
||||||
unlock.error.customPath.description.notEmptyDir=Ang custom na mount path na "%s" ay hindi isang walang laman na folder. Mangyaring pumili ng isang walang laman na folder at subukang muli.
|
unlock.error.customPath.description.notEmptyDir=Ang custom na mount path na "%s" ay hindi isang walang laman na folder. Mangyaring pumili ng isang walang laman na folder at subukang muli.
|
||||||
unlock.error.customPath.description.generic=Pumili ka ng custom na mount path para sa vault na ito, ngunit nabigo ang paggamit nito sa mensaheng: %2$s
|
unlock.error.customPath.description.generic=Pumili ka ng custom na mount path para sa vault na ito, ngunit nabigo ang paggamit nito sa mensaheng: %2$s
|
||||||
|
unlock.error.title=Hindi mabuksan ang "%s"
|
||||||
## Hub
|
## Hub
|
||||||
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.
|
||||||
@@ -154,17 +155,12 @@ hub.receive.message=Pinoproseso ang tugon…
|
|||||||
hub.receive.description=Ang Cryptomator ay tumatanggap at nagpoproseso ng tugon mula sa Hub. Mangyaring maghintay.
|
hub.receive.description=Ang Cryptomator ay tumatanggap at nagpoproseso ng tugon mula sa Hub. Mangyaring maghintay.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Bagong Device
|
hub.register.message=Bagong Device
|
||||||
hub.register.description=Ito ang unang Hub access mula sa device na ito. Mangyaring pahintulutan ito gamit ang iyong Account Key.
|
|
||||||
hub.register.nameLabel=Pangalan ng device
|
hub.register.nameLabel=Pangalan ng device
|
||||||
hub.register.invalidAccountKeyLabel=Di-wastong Account Key
|
hub.register.invalidAccountKeyLabel=Di-wastong Account Key
|
||||||
hub.register.occupiedMsg=Ang pangalan ay nagamit na
|
### Register Device Legacy
|
||||||
hub.register.registerBtn=Kumpirmahin
|
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Pinangalanan ang device
|
hub.registerSuccess.unlockBtn=I-unlock
|
||||||
hub.registerSuccess.description=Para ma-access ang vault, kailangang pahintulutan ng may-ari ng vault ang iyong device.
|
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Nabigo ang pagpapangalan ng device
|
|
||||||
hub.registerFailed.description=Nagkaroon ng error sa proseso ng pagbibigay ng pangalan. Para sa higit pang mga detalye, tingnan ang log ng aplikasyon.
|
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Walang pahintulot
|
hub.unauthorized.message=Walang pahintulot
|
||||||
hub.unauthorized.description=Hindi pa pinahihintulutan ang iyong device na i-access ang vault na ito. Hilingin sa may-ari ng vault na pahintulutan ito.
|
hub.unauthorized.description=Hindi pa pinahihintulutan ang iyong device na i-access ang vault na ito. Hilingin sa may-ari ng vault na pahintulutan ito.
|
||||||
@@ -309,6 +305,7 @@ preferences.updates.currentVersion=Kasalukuyang Bersyon: %s
|
|||||||
preferences.updates.autoUpdateCheck=Awtomatikong suriin ang mga update
|
preferences.updates.autoUpdateCheck=Awtomatikong suriin ang mga update
|
||||||
preferences.updates.checkNowBtn=Tingnan ngayon
|
preferences.updates.checkNowBtn=Tingnan ngayon
|
||||||
preferences.updates.updateAvailable=Available ang update sa bersyong %s.
|
preferences.updates.updateAvailable=Available ang update sa bersyong %s.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Suportahan Kami
|
preferences.contribute=Suportahan Kami
|
||||||
preferences.contribute.registeredFor=Nakarehistro ang sertipiko ng tagasuporta para sa %s
|
preferences.contribute.registeredFor=Nakarehistro ang sertipiko ng tagasuporta para sa %s
|
||||||
@@ -513,4 +510,9 @@ updateReminder.message=I-tsek kung may bagong update?
|
|||||||
updateReminder.description=Manatiling updated sa mga bagong feature, pag-aayos ng bug, at pagpapahusay sa seguridad. Inirerekomenda naming awtomatikong suriin ang mga update.
|
updateReminder.description=Manatiling updated sa mga bagong feature, pag-aayos ng bug, at pagpapahusay sa seguridad. Inirerekomenda naming awtomatikong suriin ang mga update.
|
||||||
updateReminder.notNow=Hindi ngayon
|
updateReminder.notNow=Hindi ngayon
|
||||||
updateReminder.yesOnce=Oo, Minsan
|
updateReminder.yesOnce=Oo, Minsan
|
||||||
updateReminder.yesAutomatically=Oo, Awtomatiko
|
updateReminder.yesAutomatically=Oo, Awtomatiko
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Buksan ang Mga Kagustuhan
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Choisir un nom pour le coffre
|
|||||||
addvaultwizard.new.namePrompt=Nom du coffre
|
addvaultwizard.new.namePrompt=Nom du coffre
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Où Cryptomator doit-il stocker les fichiers chiffrés de votre coffre ?
|
addvaultwizard.new.locationInstruction=Où Cryptomator doit-il stocker les fichiers chiffrés de votre coffre ?
|
||||||
|
addvaultwizard.new.locationLoading=Vérification du système de fichiers local pour les répertoires de stockage par défaut du cloud…
|
||||||
addvaultwizard.new.locationLabel=Emplacement de stockage
|
addvaultwizard.new.locationLabel=Emplacement de stockage
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Emplacement personnalisé
|
addvaultwizard.new.directoryPickerLabel=Emplacement personnalisé
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Le fichier temporaire et cach
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Votre coffre n'a pas pu être monté au point "%s". Veuillez réessayer ou choisissez un autre point.
|
unlock.error.customPath.description.couldNotBeCleaned=Votre coffre n'a pas pu être monté au point "%s". Veuillez réessayer ou choisissez un autre point.
|
||||||
unlock.error.customPath.description.notEmptyDir=Le chemin de montage personnalisé "%s" n'est pas un dossier vide. Veuillez choisir un dossier vide et réessayez.
|
unlock.error.customPath.description.notEmptyDir=Le chemin de montage personnalisé "%s" n'est pas un dossier vide. Veuillez choisir un dossier vide et réessayez.
|
||||||
unlock.error.customPath.description.generic=Vous avez sélectionné un point de montage personnalisé pour ce coffre, mais son utilisation a échoué avec le message : %2$s
|
unlock.error.customPath.description.generic=Vous avez sélectionné un point de montage personnalisé pour ce coffre, mais son utilisation a échoué avec le message : %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Impossible de déverrouiller le coffre
|
unlock.error.restartRequired.message=Impossible de déverrouiller le volume
|
||||||
unlock.error.fuseRestartRequired.description=Changez le type de volume dans les options du coffre ou redémarrez Cryptomator.
|
unlock.error.restartRequired.description=Modifiez le type de volume dans les options du coffre ou redémarrez Cryptomator.
|
||||||
unlock.error.title=Échec du déverrouillage de "%s"
|
unlock.error.title=Échec du déverrouillage de "%s"
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Impossible d'accéder à la clé du périphérique
|
hub.noKeychain.message=Impossible d'accéder à la clé du périphérique
|
||||||
@@ -160,14 +161,19 @@ hub.register.message=Nouvel Appareil
|
|||||||
hub.register.description=Il s'agit du premier accès de cet appareil au Hub. Veuillez l'autoriser à l'aide de votre clé de compte.
|
hub.register.description=Il s'agit du premier accès de cet appareil au Hub. Veuillez l'autoriser à l'aide de votre clé de compte.
|
||||||
hub.register.nameLabel=Nom de l'appareil
|
hub.register.nameLabel=Nom de l'appareil
|
||||||
hub.register.invalidAccountKeyLabel=Clé de compte invalide
|
hub.register.invalidAccountKeyLabel=Clé de compte invalide
|
||||||
hub.register.occupiedMsg=Nom déjà utilisé
|
hub.register.registerBtn=Inscription
|
||||||
hub.register.registerBtn=Confirmer
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Nom déjà utilisé
|
||||||
|
hub.register.legacy.description=Il s'agit du premier accès de cet appareil au Hub. Veuillez l'autoriser à l'aide de votre clé de compte.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Appareil nommé
|
hub.registerSuccess.message=Appareil enregistré
|
||||||
hub.registerSuccess.description=Pour accéder au coffre, votre appareil doit être autorisé par le propriétaire du coffre.
|
hub.registerSuccess.description=Votre appareil est enregistré avec succès. Vous pouvez maintenant continuer à déverrouiller le coffre.
|
||||||
|
hub.registerSuccess.unlockBtn=Déverrouiller
|
||||||
|
hub.registerSuccess.legacy.description=Pour accéder au coffre, votre appareil doit être autorisé par le propriétaire du coffre.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Échec du nommage de l'appareil
|
hub.registerFailed.message=Echec de l'enregistrement de l'appareil
|
||||||
hub.registerFailed.description=Le processus de nommage a retourné une erreur. Pour plus de détails, regardez dans le journal de l'application.
|
hub.registerFailed.description.generic=Le processus de nommage a retourné une erreur. Pour plus de détails, regardez dans le journal de l'application.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Cet appareil est déjà enregistré pour un autre utilisateur. Essayez de changer de compte ou utilisez un autre appareil.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Accès refusé
|
hub.unauthorized.message=Accès refusé
|
||||||
hub.unauthorized.description=Votre appareil n'a pas encore été autorisé à accéder à ce coffre. Demandez au propriétaire du coffre de l'autoriser.
|
hub.unauthorized.description=Votre appareil n'a pas encore été autorisé à accéder à ce coffre. Demandez au propriétaire du coffre de l'autoriser.
|
||||||
@@ -314,6 +320,14 @@ preferences.updates.currentVersion=Version actuelle : “%s”
|
|||||||
preferences.updates.autoUpdateCheck=Vérifier automatiquement si des mises à jour sont disponibles
|
preferences.updates.autoUpdateCheck=Vérifier automatiquement si des mises à jour sont disponibles
|
||||||
preferences.updates.checkNowBtn=Vérifier maintenant
|
preferences.updates.checkNowBtn=Vérifier maintenant
|
||||||
preferences.updates.updateAvailable=Mise à jour “%s” disponible.
|
preferences.updates.updateAvailable=Mise à jour “%s” disponible.
|
||||||
|
preferences.updates.lastUpdateCheck=Dernière vérification : %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=jamais
|
||||||
|
preferences.updates.lastUpdateCheck.recently=récemment
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=Il y a %s jours
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=il y a %s heures
|
||||||
|
preferences.updates.checkFailed=La recherche de mises à jour a échoué. Veuillez vérifier votre connexion internet ou réessayez plus tard.
|
||||||
|
preferences.updates.upToDate=Cryptomator est à jour.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Nous soutenir
|
preferences.contribute=Nous soutenir
|
||||||
preferences.contribute.registeredFor=Certificat de soutien enregistré pour %s
|
preferences.contribute.registeredFor=Certificat de soutien enregistré pour %s
|
||||||
@@ -386,6 +400,7 @@ main.vaultDetail.unlockBtn=Déverrouiller…
|
|||||||
main.vaultDetail.unlockNowBtn=Déverrouiller maintenant
|
main.vaultDetail.unlockNowBtn=Déverrouiller maintenant
|
||||||
main.vaultDetail.optionsBtn=Options du volume chiffré
|
main.vaultDetail.optionsBtn=Options du volume chiffré
|
||||||
main.vaultDetail.passwordSavedInKeychain=Mot de passe enregistré
|
main.vaultDetail.passwordSavedInKeychain=Mot de passe enregistré
|
||||||
|
main.vaultDetail.share=Partager...
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=DÉVERROUILLÉ
|
main.vaultDetail.unlockedStatus=DÉVERROUILLÉ
|
||||||
main.vaultDetail.accessLocation=Le contenu de votre coffre est accessible ici :
|
main.vaultDetail.accessLocation=Le contenu de votre coffre est accessible ici :
|
||||||
@@ -451,7 +466,7 @@ vaultOptions.mount.mountPoint.custom=Utiliser le répertoire choisi
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Choisir...
|
vaultOptions.mount.mountPoint.directoryPickerButton=Choisir...
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Choisissez un répertoire
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Choisissez un répertoire
|
||||||
vaultOptions.mount.volumeType.default=Par défaut (%s)
|
vaultOptions.mount.volumeType.default=Par défaut (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Pour utiliser ce type de volume, Cryptomator doit être redémarré.
|
vaultOptions.mount.volumeType.restartRequired=Pour utiliser ce type de volume, Cryptomator doit être redémarré.
|
||||||
vaultOptions.mount.volume.tcp.port=Port TCP
|
vaultOptions.mount.volume.tcp.port=Port TCP
|
||||||
vaultOptions.mount.volume.type=Type de volume
|
vaultOptions.mount.volume.type=Type de volume
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -470,7 +485,7 @@ vaultOptions.hub.convertBtn=Convertir en coffre-fort basé sur mot de passe
|
|||||||
## Display Recovery Key
|
## Display Recovery Key
|
||||||
recoveryKey.display.title=Montrer la clé de récupération
|
recoveryKey.display.title=Montrer la clé de récupération
|
||||||
recoveryKey.create.message=Mot de passe requis
|
recoveryKey.create.message=Mot de passe requis
|
||||||
recoveryKey.create.description=Entrer le mot de passe de "%s" pour afficher sa clé de récupération.
|
recoveryKey.create.description=Entrez le mot de passe de "%s" pour afficher sa clé de récupération.
|
||||||
recoveryKey.display.description=La clé de récupération suivante peut être utilisée pour restaurer l'accès à "%s " :
|
recoveryKey.display.description=La clé de récupération suivante peut être utilisée pour restaurer l'accès à "%s " :
|
||||||
recoveryKey.display.StorageHints=Gardez-la dans un endroit sûr, par ex. :\n • Stockez-la en utilisant un gestionnaire de mots de passe\n • Enregistrez-la sur une clé USB\n • Imprimez-la
|
recoveryKey.display.StorageHints=Gardez-la dans un endroit sûr, par ex. :\n • Stockez-la en utilisant un gestionnaire de mots de passe\n • Enregistrez-la sur une clé USB\n • Imprimez-la
|
||||||
## Reset Password
|
## Reset Password
|
||||||
@@ -523,4 +538,30 @@ updateReminder.message=Rechercher des mises à jour ?
|
|||||||
updateReminder.description=Restez à jour avec de nouvelles fonctionnalités, des corrections de bugs et des améliorations de sécurité. La vérification automatique des mises à jour est recommandée.
|
updateReminder.description=Restez à jour avec de nouvelles fonctionnalités, des corrections de bugs et des améliorations de sécurité. La vérification automatique des mises à jour est recommandée.
|
||||||
updateReminder.notNow=Plus tard
|
updateReminder.notNow=Plus tard
|
||||||
updateReminder.yesOnce=Cette fois seulement
|
updateReminder.yesOnce=Cette fois seulement
|
||||||
updateReminder.yesAutomatically=Oui, automatiquement
|
updateReminder.yesAutomatically=Oui, automatiquement
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Avis d'obsolescence
|
||||||
|
dokanySupportEnd.message=Fin de la prise en charge de Dokany
|
||||||
|
dokanySupportEnd.description=Le type de volume Dokany n'est plus pris en charge par Cryptomator. Vos paramètres sont à présent ajustés pour utiliser le type de volume par défaut. Vous pouvez voir le type par défaut dans les préférences.
|
||||||
|
dokanySupportEnd.preferencesBtn=Ouvrir les préférences
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Partager le coffre
|
||||||
|
shareVault.message=Vous aimeriez partager votre coffre avec d'autres personnes ?
|
||||||
|
shareVault.description=Soyez toujours prudent lorsque vous partagez votre coffre avec d'autres personnes. En bref, suivez ces étapes :
|
||||||
|
shareVault.instruction.1=1. Partagez l'accès du dossier de coffre chiffré via le stockage cloud.
|
||||||
|
shareVault.instruction.2=2. Partagez le mot de passe du coffre de manière sécurisée.
|
||||||
|
shareVault.remarkBestPractices=Pour plus d'informations, consultez les suggestions des meilleures pratiques de notre documentation.
|
||||||
|
shareVault.docsTooltip=Ouvrez la documentation pour en savoir plus sur le partage des coffres.
|
||||||
|
shareVault.hubAd.description=La façon sécurisée de travailler en équipe
|
||||||
|
shareVault.hubAd.keyManagement=• Gestion des clés sans connaissance
|
||||||
|
shareVault.hubAd.authentication=• Authentification forte
|
||||||
|
shareVault.hubAd.encryption=Chiffrement de bout en bout
|
||||||
|
shareVault.visitHub=Visiter le Hub Cryptomator
|
||||||
|
|
||||||
|
shareVault.hub.message=Comment partager un coffre central
|
||||||
|
shareVault.hub.description=Afin de partager le contenu du coffre avec un autre membre de l'équipe, vous devez effectuer deux étapes :
|
||||||
|
shareVault.hub.instruction.1=1. Partagez l'accès du dossier de coffre chiffré via le stockage cloud.
|
||||||
|
shareVault.hub.instruction.2=2. Accorder l'accès au membre de l'équipe dans Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Ouvrir le Hub Cryptomator
|
||||||
@@ -45,6 +45,7 @@ error.message=Produciuse un erro
|
|||||||
### Waiting
|
### Waiting
|
||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
@@ -76,6 +77,7 @@ lock.forced.retryBtn=Tentar de novo
|
|||||||
## Interface
|
## Interface
|
||||||
## Volume
|
## Volume
|
||||||
## Updates
|
## Updates
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -123,4 +125,8 @@ main.closeBtn.tooltip=Pechar
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -153,14 +153,10 @@ hub.receive.message=מעבד תשובה…
|
|||||||
hub.receive.description=Cryptomator מקבל ומעבד את התשובה מה- האב. אנא המתן.
|
hub.receive.description=Cryptomator מקבל ומעבד את התשובה מה- האב. אנא המתן.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.nameLabel=שם מכשיר
|
hub.register.nameLabel=שם מכשיר
|
||||||
hub.register.occupiedMsg=שם זה נמצא כבר בשימוש
|
### Register Device Legacy
|
||||||
hub.register.registerBtn=אישור
|
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=שם המכשיר
|
hub.registerSuccess.unlockBtn=בטל נעילה
|
||||||
hub.registerSuccess.description=כדי לגשת לכספת, המכשיר שלך צריך לקבל הרשאה על ידי בעלי הכספת.
|
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=הגדרת שם למכשיר נכשלה
|
|
||||||
hub.registerFailed.description=ארעה שגיאה בתהליך עם השם. לפרטים נוספים הסתכל בלוג האפליקציה.
|
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=הגישה נדחתה
|
hub.unauthorized.message=הגישה נדחתה
|
||||||
hub.unauthorized.description=המכשיר שלך טרם אושר לגשת לכספת הזאת. יש לבקש אישור גישה מבעל הכספת.
|
hub.unauthorized.description=המכשיר שלך טרם אושר לגשת לכספת הזאת. יש לבקש אישור גישה מבעל הכספת.
|
||||||
@@ -301,6 +297,7 @@ preferences.updates.currentVersion=הגרסה הנוכחית: %s
|
|||||||
preferences.updates.autoUpdateCheck=בצע בדיקת עדכונים אוטומטית
|
preferences.updates.autoUpdateCheck=בצע בדיקת עדכונים אוטומטית
|
||||||
preferences.updates.checkNowBtn=בדוק כעת
|
preferences.updates.checkNowBtn=בדוק כעת
|
||||||
preferences.updates.updateAvailable=שדרוג לגרסה %s זמין.
|
preferences.updates.updateAvailable=שדרוג לגרסה %s זמין.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=תמוך בנו
|
preferences.contribute=תמוך בנו
|
||||||
preferences.contribute.registeredFor=אישור על תמיכה על שם %s
|
preferences.contribute.registeredFor=אישור על תמיכה על שם %s
|
||||||
@@ -495,4 +492,9 @@ quit.forced.forceAndQuitBtn=נעילה בכח ויציאה
|
|||||||
# Update Reminder
|
# Update Reminder
|
||||||
updateReminder.title=בדיקת עדכון
|
updateReminder.title=בדיקת עדכון
|
||||||
updateReminder.message=חפש עדכונים?
|
updateReminder.message=חפש עדכונים?
|
||||||
updateReminder.notNow=לא עכשיו
|
updateReminder.notNow=לא עכשיו
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=פתח העדפות
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ error.description=क्रिप्टोमेटर ने ऐसा हो
|
|||||||
error.hyperlink.lookup=इस त्रुटि को ढूंढिए
|
error.hyperlink.lookup=इस त्रुटि को ढूंढिए
|
||||||
error.hyperlink.report=त्रुटि रिपोर्ट करें
|
error.hyperlink.report=त्रुटि रिपोर्ट करें
|
||||||
error.technicalDetails=अधिक जानकारी:
|
error.technicalDetails=अधिक जानकारी:
|
||||||
|
error.hyperlink.solution=समाधान खोजें
|
||||||
|
error.dismiss=खारिज करें
|
||||||
|
error.lookUpSolution=समाधान खोजें
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=वॉल्ट
|
defaults.vault.vaultName=वॉल्ट
|
||||||
@@ -36,6 +39,7 @@ traymenu.vault.reveal=प्रत्यक्ष करें
|
|||||||
# Add Vault Wizard
|
# Add Vault Wizard
|
||||||
addvaultwizard.title=वाउल्ट डालें
|
addvaultwizard.title=वाउल्ट डालें
|
||||||
## New
|
## New
|
||||||
|
addvaultwizard.new.title=नयी तिजोरी बनाये
|
||||||
### Name
|
### Name
|
||||||
addvaultwizard.new.nameInstruction=वाउल्ट के लिए नाम चुनें
|
addvaultwizard.new.nameInstruction=वाउल्ट के लिए नाम चुनें
|
||||||
addvaultwizard.new.namePrompt=वॉल्ट का नाम
|
addvaultwizard.new.namePrompt=वॉल्ट का नाम
|
||||||
@@ -53,8 +57,15 @@ addvaultwizard.new.locationIsOk=आपकी सुरक्षित तिज
|
|||||||
addvaultwizard.new.invalidName=तिजोरी के लिए इस नाम का उपयोग नहीं किया जा सकता
|
addvaultwizard.new.invalidName=तिजोरी के लिए इस नाम का उपयोग नहीं किया जा सकता
|
||||||
addvaultwizard.new.validName=आप इस नाम का उपयोग कर सकते हैं
|
addvaultwizard.new.validName=आप इस नाम का उपयोग कर सकते हैं
|
||||||
addvaultwizard.new.validCharacters.message=नाम के लिए केवल इन वर्णों का उपयोग कर सकते हैं
|
addvaultwizard.new.validCharacters.message=नाम के लिए केवल इन वर्णों का उपयोग कर सकते हैं
|
||||||
|
addvaultwizard.new.validCharacters.chars=शब्दो के अक्षर (अ. ब., e.g. a, ж और 수)
|
||||||
addvaultwizard.new.validCharacters.numbers=नंबर
|
addvaultwizard.new.validCharacters.numbers=नंबर
|
||||||
|
addvaultwizard.new.validCharacters.dashes=हाइफ़न (%s) या अंडरस्कोर (%s)
|
||||||
### Expert Settings
|
### Expert Settings
|
||||||
|
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=विशेषज्ञ सेटिंग सक्षम करें
|
||||||
|
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=36 से 220 अक्षरोंका शब्द दर्ज करें (निर्धारित 220)
|
||||||
|
addvaultwizard.new.expertSettings.shorteningThreshold.tooltip=अधिक जानने के लिए दस्तावेज़ खोलें |
|
||||||
|
addvaultwizard.new.expertSettings.shorteningThreshold.title=एन्क्रिप्टेड फ़ाइल नामों की अधिकतम लंबाई
|
||||||
|
addvaultwizard.new.expertSettings.shorteningThreshold.valid=मान्य
|
||||||
### Password
|
### Password
|
||||||
addvaultwizard.new.createVaultBtn=वॉल्ट बनाएं
|
addvaultwizard.new.createVaultBtn=वॉल्ट बनाएं
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice=आप अपने पासवर्ड के बिना अपने डेटा तक नहीं पहुंच पाएंगे। क्या आप उस वक़्त के लिए एक पुनर्प्राप्ति कुंजी चाहते हैं जब आप अपना पासवर्ड खो देते हैं?
|
addvaultwizard.new.generateRecoveryKeyChoice=आप अपने पासवर्ड के बिना अपने डेटा तक नहीं पहुंच पाएंगे। क्या आप उस वक़्त के लिए एक पुनर्प्राप्ति कुंजी चाहते हैं जब आप अपना पासवर्ड खो देते हैं?
|
||||||
@@ -77,6 +88,7 @@ addvault.new.readme.accessLocation.2=आप अपनी वॉल्ट यह
|
|||||||
addvault.new.readme.accessLocation.3=इस वॉल्यूम में कोई नई फाइल डालने पर क्रिप्टोमैटोर उसे एन्क्रिप्ट करदेगा। आप इसे कोई भी सामान्य फोल्डर की तरह समझ के काम कर सकते हैं। यह सिर्फ डेक्रिप्टेड व्यू है, हार्ड डिस्क पर आपकी फाइल्स हर समय एन्क्रिप्टेड रहेंगी।
|
addvault.new.readme.accessLocation.3=इस वॉल्यूम में कोई नई फाइल डालने पर क्रिप्टोमैटोर उसे एन्क्रिप्ट करदेगा। आप इसे कोई भी सामान्य फोल्डर की तरह समझ के काम कर सकते हैं। यह सिर्फ डेक्रिप्टेड व्यू है, हार्ड डिस्क पर आपकी फाइल्स हर समय एन्क्रिप्टेड रहेंगी।
|
||||||
addvault.new.readme.accessLocation.4=आप इस फाइल को बेझिझक डिलीट कर सकते हैं।
|
addvault.new.readme.accessLocation.4=आप इस फाइल को बेझिझक डिलीट कर सकते हैं।
|
||||||
## Existing
|
## Existing
|
||||||
|
addvaultwizard.existing.title=मौजूदा तिजोरी को जोड़ें
|
||||||
addvaultwizard.existing.chooseBtn=चुनें…
|
addvaultwizard.existing.chooseBtn=चुनें…
|
||||||
addvaultwizard.existing.filePickerTitle=तिजोरी फ़ाइल चुनें
|
addvaultwizard.existing.filePickerTitle=तिजोरी फ़ाइल चुनें
|
||||||
addvaultwizard.existing.filePickerMimeDesc=क्रिप्टोमेटर वॉल्ट
|
addvaultwizard.existing.filePickerMimeDesc=क्रिप्टोमेटर वॉल्ट
|
||||||
@@ -98,6 +110,7 @@ changepassword.finalConfirmation=मैं समझता/समझती ह
|
|||||||
# Forget Password
|
# Forget Password
|
||||||
forgetPassword.title=पासवर्ड भूल गए
|
forgetPassword.title=पासवर्ड भूल गए
|
||||||
forgetPassword.message=पासवर्ड भूल गए?
|
forgetPassword.message=पासवर्ड भूल गए?
|
||||||
|
forgetPassword.description=यह आपके तिजोरी का सहेजा गया पासवर्ड सिस्टम कीचेन से हटा देगा।
|
||||||
forgetPassword.confirmBtn=पासवर्ड भूल गए
|
forgetPassword.confirmBtn=पासवर्ड भूल गए
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
@@ -106,25 +119,43 @@ unlock.passwordPrompt="%s" का पासवर्ड दर्ज करे
|
|||||||
unlock.savePassword=पासवर्ड याद रखें
|
unlock.savePassword=पासवर्ड याद रखें
|
||||||
unlock.unlockBtn=अनलॉक करें
|
unlock.unlockBtn=अनलॉक करें
|
||||||
## Select
|
## Select
|
||||||
|
unlock.chooseMasterkey.message=मास्टरकी फ़ाइल नहीं मिली
|
||||||
unlock.chooseMasterkey.description=क्रिप्टोमेटर "%s" की मास्टर-चाबी नहीं ढूंढ पाया। कृपया उस फाइल को हाथ से ढूंढे।
|
unlock.chooseMasterkey.description=क्रिप्टोमेटर "%s" की मास्टर-चाबी नहीं ढूंढ पाया। कृपया उस फाइल को हाथ से ढूंढे।
|
||||||
|
unlock.chooseMasterkey.filePickerTitle=मास्टरकी फ़ाइल का चयन करें
|
||||||
|
unlock.chooseMasterkey.filePickerMimeDesc=क्रिप्टोमेटर मास्टरकी
|
||||||
## Success
|
## Success
|
||||||
unlock.success.message=अनलॉक सफल हुआ
|
unlock.success.message=अनलॉक सफल हुआ
|
||||||
unlock.success.rememberChoice=विकल्प याद रखें, दोबारा ना दिखाएं
|
unlock.success.rememberChoice=विकल्प याद रखें, दोबारा ना दिखाएं
|
||||||
unlock.success.revealBtn=फोल्डर खोलें
|
unlock.success.revealBtn=फोल्डर खोलें
|
||||||
## Failure
|
## Failure
|
||||||
|
unlock.error.customPath.message=तिजोरी को विशिष्ट स्थान पर प्रस्थापित करने में असमर्थ
|
||||||
|
unlock.error.customPath.description.notSupported=यदि आप विशिष्ट स्थान का उपयोग जारी रखना चाहते हैं, तो कृपया प्राथमिकताओं पर जाएं और एक ग्रन्थ (वॉल्यूम) प्रकार चुनें जो इसका समर्थन करता हो। अन्यथा, तिजोरी के विकल्पों पर जाएं और एक समर्थित प्रस्थापित स्थान (माउंट पॉइंट) चुनें।
|
||||||
|
unlock.error.customPath.description.notExists=विशिष्ट प्रस्थापित स्थान (कस्टम माउंट पाथ) मौजूद नहीं है. या तो इसे अपने स्थानीय फ़ाइल प्रणाली में बनाएं या तिजोरी के विकल्पों को बदलें।
|
||||||
|
unlock.error.customPath.description.hideawayNotDir=तिजोरी खोलने के के लिए उपयोग की गई अस्थायी, छिपी हुई फ़ाइल "%3$s" को हटाया नहीं जा सका। कृपया फ़ाइल की जाँच करें और फिर इसे स्वतः हटा दें।
|
||||||
|
unlock.error.customPath.description.couldNotBeCleaned=आपका तिजोरी "%s" स्थान पर स्थापित नहीं किया जा सका। कृपया पुनः प्रयास करें या कोई अलग रास्ता चुनें।
|
||||||
|
unlock.error.title="%s" तिजोरी खोलना विफल रहा
|
||||||
## Hub
|
## Hub
|
||||||
|
hub.noKeychain.message=उपकरण के कुंजी तक पहुंचने में असमर्थ
|
||||||
|
hub.noKeychain.openBtn=प्राथमिकताएँ खोलें
|
||||||
### Waiting
|
### Waiting
|
||||||
|
hub.auth.message=प्रमाणन के लिए इंतज़ार कर रहे...
|
||||||
|
hub.auth.description=आपको स्वचालित रूप से लॉगिन पृष्ठ पर पुनः निर्देशित किया जाना चाहिए।
|
||||||
|
hub.auth.loginLink=पुनर्निर्देशित नहीं किया गया? इसे खोलने के लिए यहां क्लिक करें.
|
||||||
### Receive Key
|
### Receive Key
|
||||||
hub.receive.message=अभी संसाधित किया जा रहा है
|
hub.receive.message=अभी संसाधित किया जा रहा है
|
||||||
### Register Device
|
### Register Device
|
||||||
|
hub.register.message=नया उपकरण
|
||||||
hub.register.nameLabel=डिवाइस का नाम
|
hub.register.nameLabel=डिवाइस का नाम
|
||||||
hub.register.occupiedMsg=नाम पहले से प्रयोग में है
|
### Register Device Legacy
|
||||||
hub.register.registerBtn=पुष्टि करें
|
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=अनलॉक करें
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=प्रवेश अस्वीकृत
|
hub.unauthorized.message=प्रवेश अस्वीकृत
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
|
hub.requireAccountInit.message=कार्रवाई आवश्यक है
|
||||||
|
hub.requireAccountInit.description.0=आगे बढ़ने के लिए, कृपया अपने आवश्यक चरणों को पूरा करें
|
||||||
|
hub.requireAccountInit.description.2=.
|
||||||
### License Exceeded
|
### License Exceeded
|
||||||
|
|
||||||
# Lock
|
# Lock
|
||||||
@@ -185,6 +216,7 @@ preferences.updates=नवीनीकरण
|
|||||||
preferences.updates.currentVersion=वर्तमान संस्करण: %s
|
preferences.updates.currentVersion=वर्तमान संस्करण: %s
|
||||||
preferences.updates.checkNowBtn=अभी जाँचें
|
preferences.updates.checkNowBtn=अभी जाँचें
|
||||||
preferences.updates.updateAvailable=संस्करण %s की तरफ नवीनीकरण उपलब्ध है।
|
preferences.updates.updateAvailable=संस्करण %s की तरफ नवीनीकरण उपलब्ध है।
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=हमें सपोर्ट करें
|
preferences.contribute=हमें सपोर्ट करें
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
@@ -210,6 +242,7 @@ main.vaultlist.contextMenu.unlock=अनलॉक करें...
|
|||||||
main.vaultlist.contextMenu.unlockNow=अब अनलॉक करें
|
main.vaultlist.contextMenu.unlockNow=अब अनलॉक करें
|
||||||
main.vaultlist.contextMenu.vaultoptions=वॉल्ट के विकल्प दिखाए
|
main.vaultlist.contextMenu.vaultoptions=वॉल्ट के विकल्प दिखाए
|
||||||
main.vaultlist.contextMenu.reveal=फोल्डर खोलें
|
main.vaultlist.contextMenu.reveal=फोल्डर खोलें
|
||||||
|
main.vaultlist.addVaultBtn=जोड़िये
|
||||||
## Vault Detail
|
## Vault Detail
|
||||||
### Welcome
|
### Welcome
|
||||||
main.vaultDetail.welcomeOnboarding=Cryptomator को अपनी फाइल्स सिराक्षित रखने को चुनने के लिए धन्यवाद। अगर आपको सहायता चाइये, तो हमारी गेटिंग स्टार्टेड गाइगाइड्स देखिये:
|
main.vaultDetail.welcomeOnboarding=Cryptomator को अपनी फाइल्स सिराक्षित रखने को चुनने के लिए धन्यवाद। अगर आपको सहायता चाइये, तो हमारी गेटिंग स्टार्टेड गाइगाइड्स देखिये:
|
||||||
@@ -277,4 +310,9 @@ quit.title=एप्लीकेशन को बंद करें
|
|||||||
# Forced Quit
|
# Forced Quit
|
||||||
quit.forced.message=कुछ वॉल्ट्स लॉक नहीं हो पायी
|
quit.forced.message=कुछ वॉल्ट्स लॉक नहीं हो पायी
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=प्राथमिकताएँ खोलें
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -115,8 +115,9 @@ unlock.success.revealBtn=Otkrij pogon
|
|||||||
### Waiting
|
### Waiting
|
||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.registerBtn=Potvrdi
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=Otključaj
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
@@ -223,6 +224,7 @@ preferences.updates.currentVersion=Trenutna verzija: %s
|
|||||||
preferences.updates.autoUpdateCheck=Automatski provjeri nadogradnje
|
preferences.updates.autoUpdateCheck=Automatski provjeri nadogradnje
|
||||||
preferences.updates.checkNowBtn=Provjeri sada
|
preferences.updates.checkNowBtn=Provjeri sada
|
||||||
preferences.updates.updateAvailable=Nadogradnja na verziju %s dostupna.
|
preferences.updates.updateAvailable=Nadogradnja na verziju %s dostupna.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Podržite nas
|
preferences.contribute=Podržite nas
|
||||||
preferences.contribute.registeredFor=Certifikat podržavatelja registriran za %s
|
preferences.contribute.registeredFor=Certifikat podržavatelja registriran za %s
|
||||||
@@ -379,4 +381,8 @@ quit.lockAndQuitBtn=Zaključaj i napusti
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -154,17 +154,13 @@ hub.receive.message=Válasz feldolgozása…
|
|||||||
hub.receive.description=Cryptomator fogadja és feldolgozza a Hub válaszát. Kérem, várjon.
|
hub.receive.description=Cryptomator fogadja és feldolgozza a Hub válaszát. Kérem, várjon.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Új eszköz
|
hub.register.message=Új eszköz
|
||||||
hub.register.description=Ez az első Hub-hozzáférés erről az eszközről. Kérjük, engedélyezd a Fiókkulcsoddal.
|
|
||||||
hub.register.nameLabel=Készülék neve
|
hub.register.nameLabel=Készülék neve
|
||||||
hub.register.invalidAccountKeyLabel=Érvénytelen fiókkulcs
|
hub.register.invalidAccountKeyLabel=Érvénytelen fiókkulcs
|
||||||
hub.register.occupiedMsg=Ez a név már használatban van
|
hub.register.registerBtn=Regisztráció
|
||||||
hub.register.registerBtn=Megerősítés
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Eszköz elnevezve
|
hub.registerSuccess.unlockBtn=Feloldás
|
||||||
hub.registerSuccess.description=A széf hozzáféréséhez a széf tulajdonosának hitelesítenie kell az eszközét.
|
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Az eszköz elnevezése sikertelen volt
|
|
||||||
hub.registerFailed.description=Hiba állt fel az elnevezési folyamatban. További részletekért tekintse meg az alkalmazásnaplót.
|
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Hozzáférés megtagadva
|
hub.unauthorized.message=Hozzáférés megtagadva
|
||||||
hub.unauthorized.description=Eszköze még nem kapott engedélyt ehhez a széfhez. Kérje a széf tulajdonosát, hogy engedélyezze a hozzáférést.
|
hub.unauthorized.description=Eszköze még nem kapott engedélyt ehhez a széfhez. Kérje a széf tulajdonosát, hogy engedélyezze a hozzáférést.
|
||||||
@@ -307,6 +303,7 @@ preferences.updates.currentVersion=Jelenlegi verzió: %s
|
|||||||
preferences.updates.autoUpdateCheck=Frissítések autómatikus keresése
|
preferences.updates.autoUpdateCheck=Frissítések autómatikus keresése
|
||||||
preferences.updates.checkNowBtn=Ellenőrzés most
|
preferences.updates.checkNowBtn=Ellenőrzés most
|
||||||
preferences.updates.updateAvailable=Frissítés a %s verzióra elérhető.
|
preferences.updates.updateAvailable=Frissítés a %s verzióra elérhető.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Támogasson bennünket
|
preferences.contribute=Támogasson bennünket
|
||||||
preferences.contribute.registeredFor=Támogatói igazolás regisztrálva neki: %s
|
preferences.contribute.registeredFor=Támogatói igazolás regisztrálva neki: %s
|
||||||
@@ -511,4 +508,12 @@ updateReminder.message=Frissítések ellenőrzése?
|
|||||||
updateReminder.description=Maradjon naprakész az új funkciókkal, hibajavításokkal és biztonsági fejlesztésekkel. Javasoljuk, hogy automatikusan ellenőrizze a frissítéseket.
|
updateReminder.description=Maradjon naprakész az új funkciókkal, hibajavításokkal és biztonsági fejlesztésekkel. Javasoljuk, hogy automatikusan ellenőrizze a frissítéseket.
|
||||||
updateReminder.notNow=Most nem
|
updateReminder.notNow=Most nem
|
||||||
updateReminder.yesOnce=Igen, egyszer
|
updateReminder.yesOnce=Igen, egyszer
|
||||||
updateReminder.yesAutomatically=Igen, automatikusan
|
updateReminder.yesAutomatically=Igen, automatikusan
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Értesítés elavulásról
|
||||||
|
dokanySupportEnd.message=Vége a Dokany támogatásának
|
||||||
|
dokanySupportEnd.description=A Cryptomator nem támogatja tovább a Dokany kötettípust. A beállítások az alapértelmezett kötettípus használatára lettek állítva. Az alapértelmezett típust a beállítások közt tekintheted meg.
|
||||||
|
dokanySupportEnd.preferencesBtn=Beállítások megnyitása
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -20,6 +20,11 @@ error.description=Ups! Cryptomator tidak menyangka hal ini terjadi. Anda dapat m
|
|||||||
error.hyperlink.lookup=Cari error berikut
|
error.hyperlink.lookup=Cari error berikut
|
||||||
error.hyperlink.report=Laporkan error berikut
|
error.hyperlink.report=Laporkan error berikut
|
||||||
error.technicalDetails=Rincian:
|
error.technicalDetails=Rincian:
|
||||||
|
error.existingSolutionDescription=Maaf, Cryptomator tiba-tiba berhenti. Tapi telah ditemukan sebuah jawaban untuk masalah ini. Silahkan lihat tautan berikut.
|
||||||
|
error.hyperlink.solution=Cari tahu solusinya
|
||||||
|
error.lookupPermissionMessage=Cryptomator bisa mencari solusinya secara daring. Ini akan meneruskan pesan ke direktori masalah kami dengan alamat IP Anda.
|
||||||
|
error.dismiss=Tutup
|
||||||
|
error.lookUpSolution=Cari tahu solusinya
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Vault
|
defaults.vault.vaultName=Vault
|
||||||
@@ -34,13 +39,15 @@ traymenu.vault.lock=Kunci
|
|||||||
traymenu.vault.reveal=Perlihatkan
|
traymenu.vault.reveal=Perlihatkan
|
||||||
|
|
||||||
# Add Vault Wizard
|
# Add Vault Wizard
|
||||||
addvaultwizard.title=Tambah Vault
|
addvaultwizard.title=Tambah Brankas
|
||||||
## New
|
## New
|
||||||
|
addvaultwizard.new.title=Tambah Vault baru
|
||||||
### Name
|
### Name
|
||||||
addvaultwizard.new.nameInstruction=Beri nama untuk vault berikut
|
addvaultwizard.new.nameInstruction=Buat sebuah nama untuk brankas
|
||||||
addvaultwizard.new.namePrompt=Nama Vault
|
addvaultwizard.new.namePrompt=Nama Brankas
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Dimana Cryptomator seharusnya menyimpan vault berisi file enkripsi Anda?
|
addvaultwizard.new.locationInstruction=Dimana Cryptomator seharusnya menyimpan vault berisi file enkripsi Anda?
|
||||||
|
addvaultwizard.new.locationLoading=Memeriksa sistem file lokal untuk direktori default penyimpanan cloud…
|
||||||
addvaultwizard.new.locationLabel=Lokasi penyimpanan
|
addvaultwizard.new.locationLabel=Lokasi penyimpanan
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Lokasi khusus
|
addvaultwizard.new.directoryPickerLabel=Lokasi khusus
|
||||||
@@ -50,7 +57,18 @@ addvaultwizard.new.fileAlreadyExists=Sudah ada file atau direktori dengan nama v
|
|||||||
addvaultwizard.new.locationDoesNotExist=Direktori pada path yang dipilih tidak tersedia atau tidak dapat diakses
|
addvaultwizard.new.locationDoesNotExist=Direktori pada path yang dipilih tidak tersedia atau tidak dapat diakses
|
||||||
addvaultwizard.new.locationIsNotWritable=Anda tidak memiliki hak akses untuk menulis pada path yang dipilih
|
addvaultwizard.new.locationIsNotWritable=Anda tidak memiliki hak akses untuk menulis pada path yang dipilih
|
||||||
addvaultwizard.new.locationIsOk=Lokasi yang sesuai dengan vault Anda
|
addvaultwizard.new.locationIsOk=Lokasi yang sesuai dengan vault Anda
|
||||||
|
addvaultwizard.new.invalidName=Nama Vault tidak valid
|
||||||
|
addvaultwizard.new.validName=Nama vault yang valid
|
||||||
|
addvaultwizard.new.validCharacters.message=Nama vault mungkin berisi karakter berikut:
|
||||||
|
addvaultwizard.new.validCharacters.chars=Karakter kata (mis. a, ж or 수)
|
||||||
|
addvaultwizard.new.validCharacters.numbers=Angka
|
||||||
|
addvaultwizard.new.validCharacters.dashes=Tanda hubung (%s) atau garis bawah (%s)
|
||||||
### Expert Settings
|
### Expert Settings
|
||||||
|
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=Aktifkan pengaturan ahli
|
||||||
|
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Masukkan nilai antara 36 dan 220 (default 220)
|
||||||
|
addvaultwizard.new.expertSettings.shorteningThreshold.tooltip=Buka dokumentasi untuk mempelajari lebih lanjut.
|
||||||
|
addvaultwizard.new.expertSettings.shorteningThreshold.title=Panjang maksimum nama file terenkripsi
|
||||||
|
addvaultwizard.new.expertSettings.shorteningThreshold.valid=Valid
|
||||||
### Password
|
### Password
|
||||||
addvaultwizard.new.createVaultBtn=Buat Vault
|
addvaultwizard.new.createVaultBtn=Buat Vault
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice=Anda tidak dapat mengakses data tanpa kata sandi yang Anda miliki. Apa Anda ingin sebuah kunci pemulihan untuk berjaga-jaga jika seandainya Anda kehilangan kata sandi?
|
addvaultwizard.new.generateRecoveryKeyChoice=Anda tidak dapat mengakses data tanpa kata sandi yang Anda miliki. Apa Anda ingin sebuah kunci pemulihan untuk berjaga-jaga jika seandainya Anda kehilangan kata sandi?
|
||||||
@@ -74,6 +92,7 @@ addvault.new.readme.accessLocation.2=Ini adalah lokasi akses dari vault Anda.
|
|||||||
addvault.new.readme.accessLocation.3=Seluruh file yang ditambahkan ke volume ini akan dienkripsi oleh Cryptomator. Anda dapat mempergunakan isi vault seperti dalam folder/drive lain pada umumnya. Tampilan yang saat ini Anda lihat adalah tampilan dalam bentuk terdekripsi, yang sebenarnya terjadi adalah file-file Anda selalu dalam kondisi terenkripsi di dalam hard drive Anda.
|
addvault.new.readme.accessLocation.3=Seluruh file yang ditambahkan ke volume ini akan dienkripsi oleh Cryptomator. Anda dapat mempergunakan isi vault seperti dalam folder/drive lain pada umumnya. Tampilan yang saat ini Anda lihat adalah tampilan dalam bentuk terdekripsi, yang sebenarnya terjadi adalah file-file Anda selalu dalam kondisi terenkripsi di dalam hard drive Anda.
|
||||||
addvault.new.readme.accessLocation.4=Anda dapat menghapus file ini.
|
addvault.new.readme.accessLocation.4=Anda dapat menghapus file ini.
|
||||||
## Existing
|
## Existing
|
||||||
|
addvaultwizard.existing.title=Tambahkan Vault yang Ada
|
||||||
addvaultwizard.existing.instruction=Pilih file "vault.cryptomator" Anda dari vault yang ada. Jika hanya ada file bernama "masterkey.cryptomator", pilih file tersebut.
|
addvaultwizard.existing.instruction=Pilih file "vault.cryptomator" Anda dari vault yang ada. Jika hanya ada file bernama "masterkey.cryptomator", pilih file tersebut.
|
||||||
addvaultwizard.existing.chooseBtn=Pilih…
|
addvaultwizard.existing.chooseBtn=Pilih…
|
||||||
addvaultwizard.existing.filePickerTitle=Pilih File Vault
|
addvaultwizard.existing.filePickerTitle=Pilih File Vault
|
||||||
@@ -84,6 +103,7 @@ addvaultwizard.success.unlockNow=Buka Kunci Sekarang
|
|||||||
|
|
||||||
# Remove Vault
|
# Remove Vault
|
||||||
removeVault.title=Hapus Vault
|
removeVault.title=Hapus Vault
|
||||||
|
removeVault.message=Hapus vault?
|
||||||
removeVault.description=Tindakan ini hanya akan membuat Cryptomator melupakan vault ini. Anda dapat menambahkan vault ini lagi nanti. File yang telah dienkripsi tidak akan dihapus dari hard drive Anda.
|
removeVault.description=Tindakan ini hanya akan membuat Cryptomator melupakan vault ini. Anda dapat menambahkan vault ini lagi nanti. File yang telah dienkripsi tidak akan dihapus dari hard drive Anda.
|
||||||
removeVault.confirmBtn=Hapus Vault
|
removeVault.confirmBtn=Hapus Vault
|
||||||
|
|
||||||
@@ -94,6 +114,7 @@ changepassword.finalConfirmation=Saya mengerti bahwa saya tidak akan dapat menga
|
|||||||
|
|
||||||
# Forget Password
|
# Forget Password
|
||||||
forgetPassword.title=Lupa Kata Sandi
|
forgetPassword.title=Lupa Kata Sandi
|
||||||
|
forgetPassword.message=Lupakan kata sandi yang disimpan?
|
||||||
forgetPassword.description=Tindakan ini akan menghapus kata sandi vault berikut yang tersimpan dari sistem keychain Anda.
|
forgetPassword.description=Tindakan ini akan menghapus kata sandi vault berikut yang tersimpan dari sistem keychain Anda.
|
||||||
forgetPassword.confirmBtn=Lupa Kata Sandi
|
forgetPassword.confirmBtn=Lupa Kata Sandi
|
||||||
|
|
||||||
@@ -103,24 +124,67 @@ unlock.passwordPrompt=Masukkan kata sandi "%s":
|
|||||||
unlock.savePassword=Ingat Kata Sandi
|
unlock.savePassword=Ingat Kata Sandi
|
||||||
unlock.unlockBtn=Buka Kunci
|
unlock.unlockBtn=Buka Kunci
|
||||||
## Select
|
## Select
|
||||||
|
unlock.chooseMasterkey.message=File masterkey tidak ditemukan
|
||||||
unlock.chooseMasterkey.description=Tidak dapat menemukan file masterkey untuk vault ini pada lokasi yang dicari. Mohon pilih file kunci secara manual.
|
unlock.chooseMasterkey.description=Tidak dapat menemukan file masterkey untuk vault ini pada lokasi yang dicari. Mohon pilih file kunci secara manual.
|
||||||
unlock.chooseMasterkey.filePickerTitle=Pilih File Masterkey
|
unlock.chooseMasterkey.filePickerTitle=Pilih File Masterkey
|
||||||
unlock.chooseMasterkey.filePickerMimeDesc=MasterKey Cryptomator
|
unlock.chooseMasterkey.filePickerMimeDesc=MasterKey Cryptomator
|
||||||
## Success
|
## Success
|
||||||
|
unlock.success.message=Buka kunci berhasil
|
||||||
unlock.success.description="%s" berhasil dibuka! Vault Anda sekarang dapat diakses melalui drive virtual.
|
unlock.success.description="%s" berhasil dibuka! Vault Anda sekarang dapat diakses melalui drive virtual.
|
||||||
unlock.success.rememberChoice=Ingat pilihan saya, jangan perlihatkan lagi
|
unlock.success.rememberChoice=Ingat pilihan saya, jangan perlihatkan lagi
|
||||||
unlock.success.revealBtn=Tampilkan Drive
|
unlock.success.revealBtn=Tampilkan Drive
|
||||||
## Failure
|
## Failure
|
||||||
|
unlock.error.customPath.message=Tidak dapat memasang vault ke path kustom
|
||||||
|
unlock.error.customPath.description.notSupported=Jika Anda ingin tetap menggunakan path kustom, silakan buka preferensi dan pilih jenis volume yang mendukungnya. Jika tidak, buka opsi vault dan pilih titik mount yang didukung.
|
||||||
|
unlock.error.customPath.description.notExists=Jalur pemasangan kustom tidak ada. Baik membuatnya di sistem file lokal Anda atau mengubahnya di opsi vault.
|
||||||
|
unlock.error.customPath.description.inUse=Huruf drive atau jalur pemasangan kustom "%s" sudah digunakan.
|
||||||
|
unlock.error.customPath.description.hideawayNotDir=File sementara dan tersembunyi "%3$s" yang digunakan untuk membuka kunci tidak dapat dihapus. Silakan periksa file dan kemudian hapus secara manual.
|
||||||
|
unlock.error.customPath.description.couldNotBeCleaned=Vault Anda tidak dapat dipasang ke path "%s". Silakan coba lagi atau pilih path yang berbeda.
|
||||||
|
unlock.error.customPath.description.notEmptyDir=Path kustom pemasangan "%s" bukan folder kosong. Silakan pilih folder kosong dan coba lagi.
|
||||||
|
unlock.error.customPath.description.generic=Anda telah memilih kustom path pemasangan untuk vault ini, tetapi gagal menggunakannya dengan pesan:%2$s
|
||||||
|
unlock.error.restartRequired.message=Tidak dapat membuka kunci vault
|
||||||
|
unlock.error.restartRequired.description=Ubah jenis volume di opsi vault atau restart Cryptomator.
|
||||||
|
unlock.error.title=Gagal membuka kunci "%s"
|
||||||
## Hub
|
## Hub
|
||||||
|
hub.noKeychain.message=Tidak dapat mengakses perangkat kunci
|
||||||
|
hub.noKeychain.description=Untuk membuka kunci Hub vault, diperlukan perangkat kunci, yang diamankan menggunakan keychain. Untuk melanjutkan, aktifkan “%s” dan pilih keychain di preferensi.
|
||||||
|
hub.noKeychain.openBtn=Buka Preferensi
|
||||||
### Waiting
|
### Waiting
|
||||||
|
hub.auth.message=Menunggu otentikasi…
|
||||||
|
hub.auth.description=Anda secara otomatis akan diarahkan ke halaman login.
|
||||||
|
hub.auth.loginLink=Tidak diarahkan? Klik di sini untuk membukanya.
|
||||||
### Receive Key
|
### Receive Key
|
||||||
|
hub.receive.message=Respons pemrosesan…
|
||||||
|
hub.receive.description=Cryptomator menerima dan memproses respons dari Hub. Harap tunggu.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.registerBtn=Konfirmasi
|
hub.register.message=Perangkat Baru
|
||||||
|
hub.register.description=Ini adalah akses Hub pertama dari perangkat ini. Silakan daftarkan menggunakan Kunci Akun Anda.
|
||||||
|
hub.register.nameLabel=Nama Perangkat
|
||||||
|
hub.register.invalidAccountKeyLabel=Kunci Akun Tidak Valid
|
||||||
|
hub.register.registerBtn=Daftar
|
||||||
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Nama sudah digunakan
|
||||||
|
hub.register.legacy.description=Ini adalah akses Hub pertama dari perangkat ini. Silakan daftarkan.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.message=Perangkat terdaftar
|
||||||
|
hub.registerSuccess.description=Perangkat Anda berhasil terdaftar. Sekarang Anda dapat membuka kunci vault.
|
||||||
|
hub.registerSuccess.unlockBtn=Buka Kunci
|
||||||
|
hub.registerSuccess.legacy.description=Untuk mengakses vault, perangkat Anda harus diberi wewenang tambahan oleh pemilik vault.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
|
hub.registerFailed.message=Registrasi perangkat gagal
|
||||||
|
hub.registerFailed.description.generic=Kesalahan terjadi dalam proses pendaftaran. Untuk detail lebih lanjut, lihat log aplikasi.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Perangkat ini sudah terdaftar untuk pengguna lain. Cobalah menggunakan akun pengguna atau perangkat yang berbeda.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
|
hub.unauthorized.message=Akses ditolak
|
||||||
|
hub.unauthorized.description=Perangkat Anda belum diizinkan mengakses vault ini. Mintalah pemilik vault untuk mengizinkannya.
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
|
hub.requireAccountInit.message=Tindakan diperlukan
|
||||||
|
hub.requireAccountInit.description.0=Untuk melanjutkan, silakan lengkapi langkah-langkah yang diperlukan
|
||||||
|
hub.requireAccountInit.description.1=Hub profil pengguna
|
||||||
|
hub.requireAccountInit.description.2=.
|
||||||
### License Exceeded
|
### License Exceeded
|
||||||
|
hub.invalidLicense.message=Lisensi Hub tidak valid
|
||||||
|
hub.invalidLicense.description=Instans Cryptomator Hub Anda memiliki lisensi yang tidak valid. Harap informasikan kepada administrator Hub untuk meningkatkan atau memperbarui lisensi.
|
||||||
|
|
||||||
# Lock
|
# Lock
|
||||||
## Force
|
## Force
|
||||||
@@ -136,6 +200,11 @@ lock.fail.description=Vault "%s" tidak dapat dikunci. Pastikan bahwa file yang b
|
|||||||
migration.title=Tingkatkan Vault
|
migration.title=Tingkatkan Vault
|
||||||
## Start
|
## Start
|
||||||
migration.start.header=Tingkatkan Vault
|
migration.start.header=Tingkatkan Vault
|
||||||
|
migration.start.text=Untuk membuka vault Anda "%s" di Cryptomator versi baru ini, vault harus ditingkatkan ke format yang lebih baru. Sebelum melakukan ini, Anda harus tahu hal berikut:
|
||||||
|
migration.start.remarkUndone=Pembaruan ini tidak dapat dibatalkan.
|
||||||
|
migration.start.remarkVersions=Cryptomator versi yang lebih lama tidak akan dapat membuka vault yang ditingkatkan.
|
||||||
|
migration.start.remarkCanRun=Anda harus yakin bahwa setiap perangkat tempat Anda mengakses vault dapat menjalankan versi Cryptomator ini.
|
||||||
|
migration.start.remarkSynced=Anda harus yakin bahwa vault Anda sepenuhnya disinkronkan pada perangkat ini, dan pada perangkat Anda yang lain, sebelum memutakhirkannya.
|
||||||
migration.start.confirm=Saya telah membaca dan memahami informasi di atas
|
migration.start.confirm=Saya telah membaca dan memahami informasi di atas
|
||||||
## Run
|
## Run
|
||||||
migration.run.enterPassword=Masukkan kata sandi untuk "%s"
|
migration.run.enterPassword=Masukkan kata sandi untuk "%s"
|
||||||
@@ -184,8 +253,25 @@ health.check.detail.checkFinished=Pemeriksaan berhasil dilakukan.
|
|||||||
health.check.detail.checkFinishedAndFound=Pemeriksaan selesai. Silahkan tinjau hasilnya.
|
health.check.detail.checkFinishedAndFound=Pemeriksaan selesai. Silahkan tinjau hasilnya.
|
||||||
health.check.detail.checkFailed=Pemeriksaan terhenti karena terjadi kesalahan.
|
health.check.detail.checkFailed=Pemeriksaan terhenti karena terjadi kesalahan.
|
||||||
health.check.detail.checkCancelled=Pemeriksaan dibatalkan.
|
health.check.detail.checkCancelled=Pemeriksaan dibatalkan.
|
||||||
|
health.check.detail.listFilters.label=Filter
|
||||||
|
health.check.detail.fixAllSpecificBtn=Pemulihan semua jenis
|
||||||
health.check.exportBtn=Ekspor Laporan
|
health.check.exportBtn=Ekspor Laporan
|
||||||
## Result view
|
## Result view
|
||||||
|
health.result.severityFilter.all=Tingkat Keparahan - Semua
|
||||||
|
health.result.severityFilter.good=Baik
|
||||||
|
health.result.severityFilter.info=Info
|
||||||
|
health.result.severityFilter.warn=Peringatan
|
||||||
|
health.result.severityFilter.crit=Kritikal
|
||||||
|
health.result.severityTip.good=Keparahan: Baik\nStruktur vault normal.
|
||||||
|
health.result.severityTip.info=Keparahan: Info\nStruktur vault utuh, perbaikan disarankan.
|
||||||
|
health.result.severityTip.warn=Keparahan: Peringatan\nStruktur vault rusak, sangat disarankan untuk perbaikan.
|
||||||
|
health.result.severityTip.crit=Keparahan: Kritkal\nStruktur vault rusak, kemungkinan kehilangan data.
|
||||||
|
health.result.fixStateFilter.all=Status pemulihan - Semua
|
||||||
|
health.result.fixStateFilter.fixable=Dapat dipulihkan
|
||||||
|
health.result.fixStateFilter.notFixable=Tidak dapat dipulihkan
|
||||||
|
health.result.fixStateFilter.fixing=Memulihkan…
|
||||||
|
health.result.fixStateFilter.fixed=Dipulihkan
|
||||||
|
health.result.fixStateFilter.fixFailed=Pemulihan gagal
|
||||||
## Fix Application
|
## Fix Application
|
||||||
health.fix.fixBtn=Perbaiki
|
health.fix.fixBtn=Perbaiki
|
||||||
health.fix.successTip=Perbaikan berhasil
|
health.fix.successTip=Perbaikan berhasil
|
||||||
@@ -196,6 +282,7 @@ preferences.title=Preferensi
|
|||||||
## General
|
## General
|
||||||
preferences.general=Umum
|
preferences.general=Umum
|
||||||
preferences.general.startHidden=Sembunyikan jendela saat memulai Cryptomator
|
preferences.general.startHidden=Sembunyikan jendela saat memulai Cryptomator
|
||||||
|
preferences.general.autoCloseVaults=Kunci vault yang terbuka secara otomatis saat aplikasi dihentikan
|
||||||
preferences.general.debugLogging=Aktifkan pencatatan debug
|
preferences.general.debugLogging=Aktifkan pencatatan debug
|
||||||
preferences.general.debugDirectory=Perlihatkan file log
|
preferences.general.debugDirectory=Perlihatkan file log
|
||||||
preferences.general.autoStart=Jalankan Cryptomator saat sistem dimulai
|
preferences.general.autoStart=Jalankan Cryptomator saat sistem dimulai
|
||||||
@@ -216,13 +303,24 @@ preferences.interface.showMinimizeButton=Tampilkan tombol perkecil
|
|||||||
preferences.interface.showTrayIcon=Tampilkan ikon tray (aplikasi perlu dimuat ulang)
|
preferences.interface.showTrayIcon=Tampilkan ikon tray (aplikasi perlu dimuat ulang)
|
||||||
## Volume
|
## Volume
|
||||||
preferences.volume=Drive Virtual
|
preferences.volume=Drive Virtual
|
||||||
|
preferences.volume.type=Jenis Default Volume
|
||||||
preferences.volume.type.automatic=Otomatis
|
preferences.volume.type.automatic=Otomatis
|
||||||
|
preferences.volume.docsTooltip=Buka dokumentasi untuk mempelajari lebih lanjut tentang berbagai jenis volume.
|
||||||
|
preferences.volume.fuseRestartRequired=Untuk menerapkan perubahan, Cryptomator perlu dimulai kembali.
|
||||||
|
preferences.volume.tcp.port=TCP Port Default
|
||||||
|
preferences.volume.supportedFeatures=Jenis volume yang dipilih mendukung fitur-fitur berikut ini:
|
||||||
|
preferences.volume.feature.mountAuto=Pemilihan titik pemasangan secara otomatis
|
||||||
|
preferences.volume.feature.mountToDir=Direktori kustom sebagai titik pemasangan
|
||||||
|
preferences.volume.feature.mountToDriveLetter=Huruf drive sebagai titik pemasangan
|
||||||
|
preferences.volume.feature.mountFlags=Opsi pemasangan kustom
|
||||||
|
preferences.volume.feature.readOnly=Pemasangan hanya baca saja
|
||||||
## Updates
|
## Updates
|
||||||
preferences.updates=Pembaharuan
|
preferences.updates=Pembaharuan
|
||||||
preferences.updates.currentVersion=Versi Saat Ini: %s
|
preferences.updates.currentVersion=Versi Saat Ini: %s
|
||||||
preferences.updates.autoUpdateCheck=Otomatis periksa update
|
preferences.updates.autoUpdateCheck=Otomatis periksa update
|
||||||
preferences.updates.checkNowBtn=Periksa Sekarang
|
preferences.updates.checkNowBtn=Periksa Sekarang
|
||||||
preferences.updates.updateAvailable=Pembaharuan ke versi %s tersedia.
|
preferences.updates.updateAvailable=Pembaharuan ke versi %s tersedia.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Dukung Kami
|
preferences.contribute=Dukung Kami
|
||||||
preferences.contribute.registeredFor=Sertifikat supporter terdaftar atas nama %s
|
preferences.contribute.registeredFor=Sertifikat supporter terdaftar atas nama %s
|
||||||
@@ -239,26 +337,34 @@ stats.title=Statistik untuk %s
|
|||||||
stats.cacheHitRate=Tingkat Hit Cache
|
stats.cacheHitRate=Tingkat Hit Cache
|
||||||
## Read
|
## Read
|
||||||
stats.read.throughput.idle=Baca: diam
|
stats.read.throughput.idle=Baca: diam
|
||||||
|
stats.read.throughput.kibs=Membaca: %.2f KiB/s
|
||||||
stats.read.throughput.mibs=Baca: %.2f MiB/detik
|
stats.read.throughput.mibs=Baca: %.2f MiB/detik
|
||||||
stats.read.total.data.none=Data dibaca: -
|
stats.read.total.data.none=Data dibaca: -
|
||||||
|
stats.read.total.data.kib=Data yang dibaca: %.1f KiB
|
||||||
stats.read.total.data.mib=Data dibaca: %.1f MiB
|
stats.read.total.data.mib=Data dibaca: %.1f MiB
|
||||||
stats.read.total.data.gib=Data dibaca: %.1f GiB
|
stats.read.total.data.gib=Data dibaca: %.1f GiB
|
||||||
stats.decr.total.data.none=Data terdekripsi: -
|
stats.decr.total.data.none=Data terdekripsi: -
|
||||||
|
stats.decr.total.data.kib=Data yang didekripsi: %.1f KiB
|
||||||
stats.decr.total.data.mib=Data terdeksripsi: %.1f MiB
|
stats.decr.total.data.mib=Data terdeksripsi: %.1f MiB
|
||||||
stats.decr.total.data.gib=Data terdeksripsi: %.1f GiB
|
stats.decr.total.data.gib=Data terdeksripsi: %.1f GiB
|
||||||
stats.read.accessCount=Total dibaca: %d
|
stats.read.accessCount=Total dibaca: %d
|
||||||
## Write
|
## Write
|
||||||
stats.write.throughput.idle=Tulis: diam
|
stats.write.throughput.idle=Tulis: diam
|
||||||
|
stats.write.throughput.kibs=Menulis: %.2f KiB/s
|
||||||
stats.write.throughput.mibs=Tulis: %.2f MiB/detik
|
stats.write.throughput.mibs=Tulis: %.2f MiB/detik
|
||||||
stats.write.total.data.none=Data tertulis: -
|
stats.write.total.data.none=Data tertulis: -
|
||||||
|
stats.write.total.data.kib=Data yang ditulis: %.1f KiB
|
||||||
stats.write.total.data.mib=Data tertulis: %.1f MiB
|
stats.write.total.data.mib=Data tertulis: %.1f MiB
|
||||||
stats.write.total.data.gib=Data tertulis: %.1f GiB
|
stats.write.total.data.gib=Data tertulis: %.1f GiB
|
||||||
stats.encr.total.data.none=Data terenkripsi: -
|
stats.encr.total.data.none=Data terenkripsi: -
|
||||||
|
stats.encr.total.data.kib=Data yang dienkripsi: %.1f KiB
|
||||||
stats.encr.total.data.mib=Data terenkripsi: %.1f MiB
|
stats.encr.total.data.mib=Data terenkripsi: %.1f MiB
|
||||||
stats.encr.total.data.gib=Data terenkripsi: %.1f GiB
|
stats.encr.total.data.gib=Data terenkripsi: %.1f GiB
|
||||||
stats.write.accessCount=Total ditulis: %d
|
stats.write.accessCount=Total ditulis: %d
|
||||||
|
|
||||||
## Accesses
|
## Accesses
|
||||||
|
stats.access.current=Akses: %d
|
||||||
|
stats.access.total=Total yang akses: %d
|
||||||
|
|
||||||
|
|
||||||
# Main Window
|
# Main Window
|
||||||
@@ -275,6 +381,9 @@ main.vaultlist.contextMenu.unlock=Buka Kunci…
|
|||||||
main.vaultlist.contextMenu.unlockNow=Buka Kunci Sekarang
|
main.vaultlist.contextMenu.unlockNow=Buka Kunci Sekarang
|
||||||
main.vaultlist.contextMenu.vaultoptions=Tampilkan Opsi Vault
|
main.vaultlist.contextMenu.vaultoptions=Tampilkan Opsi Vault
|
||||||
main.vaultlist.contextMenu.reveal=Buka Drive
|
main.vaultlist.contextMenu.reveal=Buka Drive
|
||||||
|
main.vaultlist.addVaultBtn=Tambah
|
||||||
|
main.vaultlist.addVaultBtn.menuItemNew=Vault Baru...
|
||||||
|
main.vaultlist.addVaultBtn.menuItemExisting=Vault yang ada...
|
||||||
## Vault Detail
|
## Vault Detail
|
||||||
### Welcome
|
### Welcome
|
||||||
main.vaultDetail.welcomeOnboarding=Terima kasih telah memilih Cryptomator untuk melindungi file Anda. Jika Anda memerlukan bantuan, lihat panduan awal kami:
|
main.vaultDetail.welcomeOnboarding=Terima kasih telah memilih Cryptomator untuk melindungi file Anda. Jika Anda memerlukan bantuan, lihat panduan awal kami:
|
||||||
@@ -284,16 +393,23 @@ main.vaultDetail.unlockBtn=Buka Kunci…
|
|||||||
main.vaultDetail.unlockNowBtn=Buka Kunci Sekarang
|
main.vaultDetail.unlockNowBtn=Buka Kunci Sekarang
|
||||||
main.vaultDetail.optionsBtn=Opsi Vault
|
main.vaultDetail.optionsBtn=Opsi Vault
|
||||||
main.vaultDetail.passwordSavedInKeychain=Kata Sandi tersimpan
|
main.vaultDetail.passwordSavedInKeychain=Kata Sandi tersimpan
|
||||||
|
main.vaultDetail.share=Bagikan…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=TERBUKA
|
main.vaultDetail.unlockedStatus=TERBUKA
|
||||||
main.vaultDetail.accessLocation=Konten vault Anda dapat diakses di sini:
|
main.vaultDetail.accessLocation=Konten vault Anda dapat diakses di sini:
|
||||||
main.vaultDetail.revealBtn=Buka Drive
|
main.vaultDetail.revealBtn=Buka Drive
|
||||||
|
main.vaultDetail.copyUri=Salin URI
|
||||||
main.vaultDetail.lockBtn=Gembok
|
main.vaultDetail.lockBtn=Gembok
|
||||||
main.vaultDetail.bytesPerSecondRead=Read:
|
main.vaultDetail.bytesPerSecondRead=Read:
|
||||||
main.vaultDetail.bytesPerSecondWritten=Write:
|
main.vaultDetail.bytesPerSecondWritten=Write:
|
||||||
main.vaultDetail.throughput.idle=idle
|
main.vaultDetail.throughput.idle=idle
|
||||||
|
main.vaultDetail.throughput.kbps=%.1f KiB/s
|
||||||
main.vaultDetail.throughput.mbps=%.1f MiB/detik
|
main.vaultDetail.throughput.mbps=%.1f MiB/detik
|
||||||
main.vaultDetail.stats=Statistik Vault
|
main.vaultDetail.stats=Statistik Vault
|
||||||
|
main.vaultDetail.locateEncryptedFileBtn=Temukan File yang Dienkripsi
|
||||||
|
main.vaultDetail.locateEncryptedFileBtn.tooltip=Pilih file dari vault Anda untuk menemukan mitra enkripsinya
|
||||||
|
main.vaultDetail.encryptedPathsCopied=Path Disalin ke Clipboard!
|
||||||
|
main.vaultDetail.filePickerTitle=Pilih File Didalam Vault
|
||||||
### Missing
|
### Missing
|
||||||
main.vaultDetail.missing.info=Cryptomator tidak dapat menemukan vault di path ini.
|
main.vaultDetail.missing.info=Cryptomator tidak dapat menemukan vault di path ini.
|
||||||
main.vaultDetail.missing.recheck=Periksa kembali
|
main.vaultDetail.missing.recheck=Periksa kembali
|
||||||
@@ -332,34 +448,59 @@ vaultOptions.general.startHealthCheckBtn=Mulai Pemeriksaan Kesehatan
|
|||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Pemasangan
|
vaultOptions.mount=Pemasangan
|
||||||
|
vaultOptions.mount.info=Buka preferensi drive virtual untuk mengubah pengaturan default.
|
||||||
vaultOptions.mount.readonly=Read-Only
|
vaultOptions.mount.readonly=Read-Only
|
||||||
vaultOptions.mount.customMountFlags=Custom Mount Flags
|
vaultOptions.mount.customMountFlags=Custom Mount Flags
|
||||||
vaultOptions.mount.winDriveLetterOccupied=terpakai
|
vaultOptions.mount.winDriveLetterOccupied=terpakai
|
||||||
vaultOptions.mount.mountPoint=Titik Pasang
|
vaultOptions.mount.mountPoint=Titik Pasang
|
||||||
vaultOptions.mount.mountPoint.auto=Secara otomatis memilih lokasi yang sesuai
|
vaultOptions.mount.mountPoint.auto=Secara otomatis memilih lokasi yang sesuai
|
||||||
vaultOptions.mount.mountPoint.driveLetter=Gunakan drive letter yang sudah ditetapkan
|
vaultOptions.mount.mountPoint.driveLetter=Gunakan drive letter yang sudah ditetapkan
|
||||||
|
vaultOptions.mount.mountPoint.custom=Gunakan direktori yang dipilih
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Pilih…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Pilih…
|
||||||
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Pilih directori
|
||||||
|
vaultOptions.mount.volumeType.default=Default (%s)
|
||||||
|
vaultOptions.mount.volumeType.restartRequired=Untuk menggunakan tipe volume ini, Cryptomator perlu dimulai ulang.
|
||||||
|
vaultOptions.mount.volume.tcp.port=Port TCP
|
||||||
|
vaultOptions.mount.volume.type=Jenis Volume
|
||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey=Kata Sandi
|
vaultOptions.masterkey=Kata Sandi
|
||||||
vaultOptions.masterkey.changePasswordBtn=Ubah Kata Sandi
|
vaultOptions.masterkey.changePasswordBtn=Ubah Kata Sandi
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Lupa Kata Sandi
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Lupa Kata Sandi
|
||||||
vaultOptions.masterkey.recoveryKeyExplanation=Kunci pemulihan adalah satu-satunya cara Anda untuk memulihkan akses ke vault jika Anda kehilangan kata sandi.
|
vaultOptions.masterkey.recoveryKeyExplanation=Kunci pemulihan adalah satu-satunya cara Anda untuk memulihkan akses ke vault jika Anda kehilangan kata sandi.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Tampilkan Kunci Pemulihan
|
vaultOptions.masterkey.showRecoveryKeyBtn=Tampilkan Kunci Pemulihan
|
||||||
|
vaultOptions.masterkey.recoverPasswordBtn=Atur Ulang Kata Sandi
|
||||||
## Hub
|
## Hub
|
||||||
|
vaultOptions.hub=Pemulihan
|
||||||
|
vaultOptions.hub.convertInfo=Anda dapat menggunakan kunci pemulihan untuk mengonversi Hub vault ini ke vault berbasis kata sandi dalam keadaan darurat.
|
||||||
|
vaultOptions.hub.convertBtn=Konversi ke Vault Berbasis Kata Sandi
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
## Display Recovery Key
|
## Display Recovery Key
|
||||||
|
recoveryKey.display.title=Tampilkan Kunci Pemulihan
|
||||||
|
recoveryKey.create.message=Diperlukan kata sandi
|
||||||
recoveryKey.create.description=Masukkan kata sandi untuk menampilkan kunci pemulikan untuk "%s":
|
recoveryKey.create.description=Masukkan kata sandi untuk menampilkan kunci pemulikan untuk "%s":
|
||||||
recoveryKey.display.description=Kunci pemulihan berikut dapat digunakan untuk memulihkan akses ke "%s":
|
recoveryKey.display.description=Kunci pemulihan berikut dapat digunakan untuk memulihkan akses ke "%s":
|
||||||
recoveryKey.display.StorageHints=Simpan di tempat yang sangat aman, misal.:\n • Simpan menggunakan password manager\n • Simpan di USB\n • cetak di kertas
|
recoveryKey.display.StorageHints=Simpan di tempat yang sangat aman, misal.:\n • Simpan menggunakan password manager\n • Simpan di USB\n • cetak di kertas
|
||||||
## Reset Password
|
## Reset Password
|
||||||
### Enter Recovery Key
|
### Enter Recovery Key
|
||||||
|
recoveryKey.recover.title=Atur Ulang Kata Sandi
|
||||||
|
recoveryKey.recover.prompt=Masukkan kunci pemulihan untuk "%s":
|
||||||
recoveryKey.recover.correctKey=Ini adalah kunci pemulihan yang valid
|
recoveryKey.recover.correctKey=Ini adalah kunci pemulihan yang valid
|
||||||
|
recoveryKey.recover.wrongKey=Kunci pemulihan ini milik vault yang lain
|
||||||
|
recoveryKey.recover.invalidKey=Kunci pemulihan ini tidak valid
|
||||||
recoveryKey.printout.heading=Kunci Pemulihan Cryptomator\n"%s"\n
|
recoveryKey.printout.heading=Kunci Pemulihan Cryptomator\n"%s"\n
|
||||||
### Reset Password
|
### Reset Password
|
||||||
|
recoveryKey.recover.resetBtn=Atur ulang
|
||||||
### Recovery Key Password Reset Success
|
### Recovery Key Password Reset Success
|
||||||
|
recoveryKey.recover.resetSuccess.message=Atur ulang kata sandi berhasil
|
||||||
|
recoveryKey.recover.resetSuccess.description=Anda dapat membuka kunci vault Anda dengan kata sandi baru.
|
||||||
|
|
||||||
# Convert Vault
|
# Convert Vault
|
||||||
|
convertVault.title=Konversi Vault
|
||||||
|
convertVault.convert.convertBtn.before=Konversi
|
||||||
|
convertVault.convert.convertBtn.processing=Mengonversi…
|
||||||
|
convertVault.success.message=Konversi berhasil
|
||||||
|
convertVault.hubToPassword.success.description=Anda sekarang dapat membuka kunci vault dengan kata sandi yang dipilih tanpa memerlukan akses Hub.
|
||||||
|
|
||||||
# New Password
|
# New Password
|
||||||
newPassword.promptText=Masukkan kata sandi baru
|
newPassword.promptText=Masukkan kata sandi baru
|
||||||
@@ -374,8 +515,43 @@ passwordStrength.messageLabel.3=Kuat
|
|||||||
passwordStrength.messageLabel.4=Sangat kuat
|
passwordStrength.messageLabel.4=Sangat kuat
|
||||||
|
|
||||||
# Quit
|
# Quit
|
||||||
|
quit.title=Hentikan Aplikasi
|
||||||
|
quit.message=Ada vault yang tidak dikunci
|
||||||
|
quit.description=Beri konfirmasi bila Anda ingin berhenti. Cryptomator akan mengunci semua vault yang terbuka agar mencegah kehilangan data.
|
||||||
quit.lockAndQuitBtn=Kunci dan Keluar
|
quit.lockAndQuitBtn=Kunci dan Keluar
|
||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
quit.forced.message=Beberapa vault tidak bisa dikunci
|
||||||
|
quit.forced.description=Penguncian vault diblokir oleh operasi yang tertunda atau file yang terbuka. Anda bisa memaksa mengunci brankas yang tersisa, namun mengganggu I/O dapat mengakibatkan hilangnya data yang belum disimpan.
|
||||||
|
quit.forced.forceAndQuitBtn=Paksa dan Berhenti
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
updateReminder.title=Periksa Pembaruan
|
||||||
|
updateReminder.message=Periksa Pembaruan?
|
||||||
|
updateReminder.description=Tetap perbarui dengan fitur baru, perbaikan bug, dan peningkatan keamanan. Kami sarankan untuk memeriksa pembaruan secara otomatis.
|
||||||
|
updateReminder.notNow=Jangan Sekarang
|
||||||
|
updateReminder.yesOnce=Ya, Sekali
|
||||||
|
updateReminder.yesAutomatically=Ya, Secara Otomatis
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Buka Preferensi
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Bagikan Vault
|
||||||
|
shareVault.message=Apakah Anda ingin berbagi vault dengan orang lain?
|
||||||
|
shareVault.description=Selalu berhati-hati saat berbagi vault dengan orang lain. Singkatnya, ikuti langkah-langkah ini:
|
||||||
|
shareVault.instruction.1=1. Bagikan akses folder vault terenkripsi melalui penyimpanan cloud.
|
||||||
|
shareVault.instruction.2=2. Bagikan kata sandi vault dengan cara yang aman.
|
||||||
|
shareVault.remarkBestPractices=Untuk informasi lebih lanjut, lihat saran praktik terbaik di dokumentasi kami.
|
||||||
|
shareVault.docsTooltip=Buka dokumentasi untuk mempelajari lebih lanjut tentang berbagi vault.
|
||||||
|
shareVault.hubAd.description=Cara aman untuk bekerja dalam tim
|
||||||
|
shareVault.hubAd.keyManagement=• Manajemen kunci tanpa pengetahuan
|
||||||
|
shareVault.hubAd.authentication=• Otentikasi yang kuat
|
||||||
|
shareVault.hubAd.encryption=• Enkripsi end-to-end
|
||||||
|
shareVault.visitHub=Kunjungi Cryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Cara berbagi Hub vault
|
||||||
|
shareVault.hub.description=Untuk berbagi isi vault dengan anggota tim lain, Anda harus melakukan dua langkah:
|
||||||
|
shareVault.hub.instruction.1=1. Bagikan akses folder vault terenkripsi melalui penyimpanan cloud.
|
||||||
|
shareVault.hub.instruction.2=2. Berikan akses ke anggota tim di Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Buka Cryptomator Hub
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Scegli un nome per la cassaforte
|
|||||||
addvaultwizard.new.namePrompt=Nome della Cassaforte
|
addvaultwizard.new.namePrompt=Nome della Cassaforte
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Dove dovrebbe memorizzare Cryptomator i file crittografati della tua cassaforte?
|
addvaultwizard.new.locationInstruction=Dove dovrebbe memorizzare Cryptomator i file crittografati della tua cassaforte?
|
||||||
|
addvaultwizard.new.locationLoading=Controllo del filesystem locale per le cartelle predefinite di archiviazione cloud…
|
||||||
addvaultwizard.new.locationLabel=Posizione archivio
|
addvaultwizard.new.locationLabel=Posizione archivio
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Posizione personalizzata
|
addvaultwizard.new.directoryPickerLabel=Posizione personalizzata
|
||||||
@@ -88,7 +89,7 @@ addvault.new.readme.storageLocation.10=Se hai bisogno di aiuto, leggi la documen
|
|||||||
addvault.new.readme.accessLocation.fileName=BENVENUTO.rtf
|
addvault.new.readme.accessLocation.fileName=BENVENUTO.rtf
|
||||||
addvault.new.readme.accessLocation.1=🔐 VOLUME CRITTOGRAFATO 🔐
|
addvault.new.readme.accessLocation.1=🔐 VOLUME CRITTOGRAFATO 🔐
|
||||||
addvault.new.readme.accessLocation.2=Questa è la posizione d'accesso della tua cassaforte.
|
addvault.new.readme.accessLocation.2=Questa è la posizione d'accesso della tua cassaforte.
|
||||||
addvault.new.readme.accessLocation.3=Ogni file aggiunto a questo volume sarà crittografato da Cryptomator. Puoi lavorarci come su ogni altra unità/cartella. Questa è solo una vista decrittografata del suo contenuto, i tuoi file restano sempre crittografati sul tuo disco rigido.
|
addvault.new.readme.accessLocation.3=Ogni file aggiunto a questo volume sarà crittografato da Cryptomator. Puoi lavorarci come su ogni altro disco/cartella. Questa è solo una vista decrittografata del suo contenuto, i tuoi file restano sempre crittografati sul tuo disco rigido.
|
||||||
addvault.new.readme.accessLocation.4=Sentiti libero di rimuovere questo file.
|
addvault.new.readme.accessLocation.4=Sentiti libero di rimuovere questo file.
|
||||||
## Existing
|
## Existing
|
||||||
addvaultwizard.existing.title=Aggiungi una Cassaforte Esistente
|
addvaultwizard.existing.title=Aggiungi una Cassaforte Esistente
|
||||||
@@ -131,7 +132,7 @@ unlock.chooseMasterkey.filePickerMimeDesc=Chiave principale di Cryptomator
|
|||||||
unlock.success.message=Sbloccato con successo
|
unlock.success.message=Sbloccato con successo
|
||||||
unlock.success.description="%s" sbloccato correttamente! La tua cassaforte è ora accessibile tramite la sua unità virtuale.
|
unlock.success.description="%s" sbloccato correttamente! La tua cassaforte è ora accessibile tramite la sua unità virtuale.
|
||||||
unlock.success.rememberChoice=Ricorda la scelta, non mostrarmelo più
|
unlock.success.rememberChoice=Ricorda la scelta, non mostrarmelo più
|
||||||
unlock.success.revealBtn=Rivela l'Unità
|
unlock.success.revealBtn=Rivela Unità
|
||||||
## Failure
|
## Failure
|
||||||
unlock.error.customPath.message=Impossibile montare la cassaforte sul percorso personalizzato
|
unlock.error.customPath.message=Impossibile montare la cassaforte sul percorso personalizzato
|
||||||
unlock.error.customPath.description.notSupported=Se desideri continuare a utilizzare il percorso personalizzato, vai alle preferenze e seleziona un tipo di volume che lo supporta. Altrimenti, vai alle opzioni della cassaforte e scegli un punto di montaggio supportato.
|
unlock.error.customPath.description.notSupported=Se desideri continuare a utilizzare il percorso personalizzato, vai alle preferenze e seleziona un tipo di volume che lo supporta. Altrimenti, vai alle opzioni della cassaforte e scegli un punto di montaggio supportato.
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Impossibile rimuovere il file
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=La tua cassaforte non può essere montata sul percorso "%s". Riprova o scegli un percorso diverso.
|
unlock.error.customPath.description.couldNotBeCleaned=La tua cassaforte non può essere montata sul percorso "%s". Riprova o scegli un percorso diverso.
|
||||||
unlock.error.customPath.description.notEmptyDir=Il percorso di montaggio selezionato "%s" non è una cartella vuota. Scegli una cartella vuota e riprova.
|
unlock.error.customPath.description.notEmptyDir=Il percorso di montaggio selezionato "%s" non è una cartella vuota. Scegli una cartella vuota e riprova.
|
||||||
unlock.error.customPath.description.generic=Hai selezionato un percorso di montaggio personalizzato per questa cassaforte, ma il suo utilizzo non è riuscito con il messaggio: %2$s
|
unlock.error.customPath.description.generic=Hai selezionato un percorso di montaggio personalizzato per questa cassaforte, ma il suo utilizzo non è riuscito con il messaggio: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Impossibile sbloccare la cassaforte
|
unlock.error.restartRequired.message=Impossibile sbloccare la cassaforte
|
||||||
unlock.error.fuseRestartRequired.description=Cambia il tipo di unità nelle opzioni della cassaforte o riavvia Cryptomator.
|
unlock.error.restartRequired.description=Cambia il tipo di unità nelle opzioni della cassaforte o riavvia Cryptomator.
|
||||||
unlock.error.title=Sblocco "%s" non riuscito
|
unlock.error.title=Sblocco "%s" non riuscito
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Impossibile accedere alla chiave del dispositivo
|
hub.noKeychain.message=Impossibile accedere alla chiave del dispositivo
|
||||||
@@ -160,14 +161,19 @@ hub.register.message=Nuovo dispositivo
|
|||||||
hub.register.description=Questo è il primo accesso all'Hub da questo dispositivo. Per favore autorizzalo utilizzando la tua chiave dell'account.
|
hub.register.description=Questo è il primo accesso all'Hub da questo dispositivo. Per favore autorizzalo utilizzando la tua chiave dell'account.
|
||||||
hub.register.nameLabel=Nome Del Dispositivo
|
hub.register.nameLabel=Nome Del Dispositivo
|
||||||
hub.register.invalidAccountKeyLabel=Chiave dell'account non valida
|
hub.register.invalidAccountKeyLabel=Chiave dell'account non valida
|
||||||
hub.register.occupiedMsg=Nome già in uso
|
hub.register.registerBtn=Registrati
|
||||||
hub.register.registerBtn=Conferma
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Nome già in uso
|
||||||
|
hub.register.legacy.description=Questo è il primo accesso all'Hub da questo dispositivo. Per favore autorizzalo utilizzando la tua chiave dell'account.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Dispositivo nominato
|
hub.registerSuccess.message=Dispositivo autorizzato
|
||||||
hub.registerSuccess.description=Per accedere al vault, il tuo dispositivo deve essere autorizzato dal proprietario del vault.
|
hub.registerSuccess.description=Il tuo dispositivo è stato autorizzato correttamente. Ora puoi continuare a sbloccare la cassaforte.
|
||||||
|
hub.registerSuccess.unlockBtn=Sblocca
|
||||||
|
hub.registerSuccess.legacy.description=Per accedere alla cassaforte, il tuo dispositivo deve essere anche autorizzato dal proprietario.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Assegnazione del nome al dispositivo fallita
|
hub.registerFailed.message=Registrazione dispositivo fallita
|
||||||
hub.registerFailed.description=Si è verificato un errore nel processo di nomina. Per maggiori dettagli, consultare il registro delle applicazioni.
|
hub.registerFailed.description.generic=Si è verificato un errore nel processo di registrazione. Per maggiori dettagli, consulta il registro delle applicazioni.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Questo dispositivo è già registrato per un utente diverso. Prova a cambiare l'account utente o usa un altro dispositivo.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Accesso negato
|
hub.unauthorized.message=Accesso negato
|
||||||
hub.unauthorized.description=Il tuo dispositivo non è ancora stato autorizzato ad accedere a questa cassaforte. Chiedi al proprietario della cassaforte di autorizzarlo.
|
hub.unauthorized.description=Il tuo dispositivo non è ancora stato autorizzato ad accedere a questa cassaforte. Chiedi al proprietario della cassaforte di autorizzarlo.
|
||||||
@@ -314,6 +320,14 @@ preferences.updates.currentVersion=Versione Corrente: %s
|
|||||||
preferences.updates.autoUpdateCheck=Cerca automaticamente gli aggiornamenti
|
preferences.updates.autoUpdateCheck=Cerca automaticamente gli aggiornamenti
|
||||||
preferences.updates.checkNowBtn=Controlla Ora
|
preferences.updates.checkNowBtn=Controlla Ora
|
||||||
preferences.updates.updateAvailable=Aggiornamento alla versione %s disponibile.
|
preferences.updates.updateAvailable=Aggiornamento alla versione %s disponibile.
|
||||||
|
preferences.updates.lastUpdateCheck=Ultimo controllo: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=mai
|
||||||
|
preferences.updates.lastUpdateCheck.recently=recentemente
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s giorni fa
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s ore fa
|
||||||
|
preferences.updates.checkFailed=Ricerca aggiornamenti non riuscita. Controlla la tua connessione internet o riprova più tardi.
|
||||||
|
preferences.updates.upToDate=Cryptomator è aggiornato.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Supportaci
|
preferences.contribute=Supportaci
|
||||||
preferences.contribute.registeredFor=Certificato del sostenitore registrato per %s
|
preferences.contribute.registeredFor=Certificato del sostenitore registrato per %s
|
||||||
@@ -386,6 +400,7 @@ main.vaultDetail.unlockBtn=Sblocca…
|
|||||||
main.vaultDetail.unlockNowBtn=Sblocca Ora
|
main.vaultDetail.unlockNowBtn=Sblocca Ora
|
||||||
main.vaultDetail.optionsBtn=Opzioni della Cassaforte
|
main.vaultDetail.optionsBtn=Opzioni della Cassaforte
|
||||||
main.vaultDetail.passwordSavedInKeychain=Password salvata
|
main.vaultDetail.passwordSavedInKeychain=Password salvata
|
||||||
|
main.vaultDetail.share=Condividi…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=SBLOCCATA
|
main.vaultDetail.unlockedStatus=SBLOCCATA
|
||||||
main.vaultDetail.accessLocation=I contenuti della tua cassaforte sono accessibili qui:
|
main.vaultDetail.accessLocation=I contenuti della tua cassaforte sono accessibili qui:
|
||||||
@@ -405,7 +420,7 @@ main.vaultDetail.filePickerTitle=Seleziona File Nella Cassaforte
|
|||||||
### Missing
|
### Missing
|
||||||
main.vaultDetail.missing.info=Cryptomator non è riuscito a trovare una cassaforte in questo percorso.
|
main.vaultDetail.missing.info=Cryptomator non è riuscito a trovare una cassaforte in questo percorso.
|
||||||
main.vaultDetail.missing.recheck=Ricontrolla
|
main.vaultDetail.missing.recheck=Ricontrolla
|
||||||
main.vaultDetail.missing.remove=Rimuovi dall'Elenco di Cassaforti…
|
main.vaultDetail.missing.remove=Rimuovi dall'elenco delle casseforti…
|
||||||
main.vaultDetail.missing.changeLocation=Cambia la Posizione della Cassaforte…
|
main.vaultDetail.missing.changeLocation=Cambia la Posizione della Cassaforte…
|
||||||
### Needs Migration
|
### Needs Migration
|
||||||
main.vaultDetail.migrateButton=Aggiorna la Cassaforte
|
main.vaultDetail.migrateButton=Aggiorna la Cassaforte
|
||||||
@@ -451,9 +466,9 @@ vaultOptions.mount.mountPoint.custom=Usa la directory scelta
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Scegli…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Scegli…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Scegli una directory
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Scegli una directory
|
||||||
vaultOptions.mount.volumeType.default=Predefinito (%s)
|
vaultOptions.mount.volumeType.default=Predefinito (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Per utilizzare questo tipo di unità, Cryptomator deve essere riavviato.
|
vaultOptions.mount.volumeType.restartRequired=Per utilizzare questo tipo di volume, Cryptomator deve essere riavviato.
|
||||||
vaultOptions.mount.volume.tcp.port=Porta TCP
|
vaultOptions.mount.volume.tcp.port=Porta TCP
|
||||||
vaultOptions.mount.volume.type=Tipo di Unità
|
vaultOptions.mount.volume.type=Tipo di Volume
|
||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey=Password
|
vaultOptions.masterkey=Password
|
||||||
vaultOptions.masterkey.changePasswordBtn=Modifica password
|
vaultOptions.masterkey.changePasswordBtn=Modifica password
|
||||||
@@ -472,7 +487,7 @@ recoveryKey.display.title=Mostra Chiave Di Recupero
|
|||||||
recoveryKey.create.message=Password richiesta
|
recoveryKey.create.message=Password richiesta
|
||||||
recoveryKey.create.description=Inserisci la password per visualizzare la chiave di recupero per "%s":
|
recoveryKey.create.description=Inserisci la password per visualizzare la chiave di recupero per "%s":
|
||||||
recoveryKey.display.description=La seguente chiave di recupero può essere utilizzata per ripristinare l'accesso a %s":
|
recoveryKey.display.description=La seguente chiave di recupero può essere utilizzata per ripristinare l'accesso a %s":
|
||||||
recoveryKey.display.StorageHints=Mantienilo da qualche parte molto sicuro, ad es.\n • Archivialo usando un gestore di password\n • Salvarlo su un'unità flash USB\n • Stamparlo su carta
|
recoveryKey.display.StorageHints=Conservala da qualche parte in modo sicuro, es.\n • Archiviarla usando un gestore di password\n • Salvarla su un'unità flash USB\n • Stamparla su carta
|
||||||
## Reset Password
|
## Reset Password
|
||||||
### Enter Recovery Key
|
### Enter Recovery Key
|
||||||
recoveryKey.recover.title=Reimposta Password
|
recoveryKey.recover.title=Reimposta Password
|
||||||
@@ -523,4 +538,30 @@ updateReminder.message=Controllo aggiornamenti?
|
|||||||
updateReminder.description=Rimani aggiornato per nuove funzionalità, correzioni di bug e miglioramenti di sicurezza. Si consiglia di controllare automaticamente la presenza di aggiornamenti.
|
updateReminder.description=Rimani aggiornato per nuove funzionalità, correzioni di bug e miglioramenti di sicurezza. Si consiglia di controllare automaticamente la presenza di aggiornamenti.
|
||||||
updateReminder.notNow=Non adesso
|
updateReminder.notNow=Non adesso
|
||||||
updateReminder.yesOnce=Sì, una volta
|
updateReminder.yesOnce=Sì, una volta
|
||||||
updateReminder.yesAutomatically=Sì, automaticamente
|
updateReminder.yesAutomatically=Sì, automaticamente
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Avviso di obsolescenza
|
||||||
|
dokanySupportEnd.message=Supporto terminato per Dokany
|
||||||
|
dokanySupportEnd.description=Il tipo di volume Dokany non è più supportato da Cryptomator. Le impostazioni sono state aggiornate per utilizzare il tipo di volume ora predefinito. È possibile visualizzare il tipo predefinito nelle preferenze.
|
||||||
|
dokanySupportEnd.preferencesBtn=Apri Preferenze
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Condividi cassaforte
|
||||||
|
shareVault.message=Vuoi condividere la tua cassaforte con altri?
|
||||||
|
shareVault.description=Fai sempre attenzione quando condividi la tua cassaforte con altre persone. In breve, segui questi passaggi:
|
||||||
|
shareVault.instruction.1=1. Condividi l'accesso alla cartella della cassaforte crittografata tramite l'archiviazione cloud.
|
||||||
|
shareVault.instruction.2=2. Condividi la password della cassaforte in modo sicuro.
|
||||||
|
shareVault.remarkBestPractices=Per ulteriori informazioni, dai un'occhiata ai documenti con i consigli sulle le migliori pratiche.
|
||||||
|
shareVault.docsTooltip=Apri la documentazione per saperne di più circa la condivisione delle casseforti.
|
||||||
|
shareVault.hubAd.description=Il modo sicuro di lavorare in gruppi
|
||||||
|
shareVault.hubAd.keyManagement=Gestione delle chiavi a Conoscenza-Zero
|
||||||
|
shareVault.hubAd.authentication=• Autenticazione forte
|
||||||
|
shareVault.hubAd.encryption=• Crittografia end-to-end
|
||||||
|
shareVault.visitHub=Visita Hub Cryptomator
|
||||||
|
|
||||||
|
shareVault.hub.message=Come condividere una cassaforte Hub
|
||||||
|
shareVault.hub.description=Per condividere il contenuto della cassaforte con un altro membro del gruppo, è necessario eseguire due passaggi:
|
||||||
|
shareVault.hub.instruction.1=1. Condividi l'accesso alla cartella della cassaforte crittografata tramite l'archiviazione cloud.
|
||||||
|
shareVault.hub.instruction.2=2. Concedi l'accesso ai membri del gruppo nell'Hub Cryptomator.
|
||||||
|
shareVault.hub.openHub=Apri l'Hub Cryptomator
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=金庫の名前を入力してください
|
|||||||
addvaultwizard.new.namePrompt=金庫の名前
|
addvaultwizard.new.namePrompt=金庫の名前
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=金庫の暗号化済みファイルをどの場所に保存しますか?
|
addvaultwizard.new.locationInstruction=金庫の暗号化済みファイルをどの場所に保存しますか?
|
||||||
|
addvaultwizard.new.locationLoading=デフォルトのクラウド・ストレージ・ディレクトリについてローカル・ファイルシステムをチェックする...
|
||||||
addvaultwizard.new.locationLabel=保存場所
|
addvaultwizard.new.locationLabel=保存場所
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=ユーザー設定
|
addvaultwizard.new.directoryPickerLabel=ユーザー設定
|
||||||
@@ -141,6 +142,9 @@ unlock.error.customPath.description.hideawayNotDir=ロック解除に使用さ
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=金庫を "%s" にマウントすることができませんでした。もう一度試すか、別のパスを選択してください。
|
unlock.error.customPath.description.couldNotBeCleaned=金庫を "%s" にマウントすることができませんでした。もう一度試すか、別のパスを選択してください。
|
||||||
unlock.error.customPath.description.notEmptyDir=カスタムマウントパス「%s」は空のフォルダではありません。空のフォルダを選択して再度お試し下さい。
|
unlock.error.customPath.description.notEmptyDir=カスタムマウントパス「%s」は空のフォルダではありません。空のフォルダを選択して再度お試し下さい。
|
||||||
unlock.error.customPath.description.generic=この金庫に対してカスタムマウントパスを選択しましたが、以下のメッセージとともに失敗しました:%2$s
|
unlock.error.customPath.description.generic=この金庫に対してカスタムマウントパスを選択しましたが、以下のメッセージとともに失敗しました:%2$s
|
||||||
|
unlock.error.restartRequired.message=金庫を解錠できません
|
||||||
|
unlock.error.restartRequired.description=金庫のオプションからボリュームタイプを変更するか、Cryptomatorを再起動してください。
|
||||||
|
unlock.error.title=ロック解除 "%s" に失敗しました。
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=デバイス キーにアクセスできません
|
hub.noKeychain.message=デバイス キーにアクセスできません
|
||||||
hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。
|
hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。
|
||||||
@@ -154,15 +158,22 @@ hub.receive.message=応答を処理中…
|
|||||||
hub.receive.description=Cryptomator が Hub からの応答を受信、処理中です。しばらくお待ちください。
|
hub.receive.description=Cryptomator が Hub からの応答を受信、処理中です。しばらくお待ちください。
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=新しいデバイス
|
hub.register.message=新しいデバイス
|
||||||
|
hub.register.description=このデバイスからの最初のハブアクセスです。アカウントキーを使用して登録してください。
|
||||||
hub.register.nameLabel=デバイス名
|
hub.register.nameLabel=デバイス名
|
||||||
hub.register.occupiedMsg=この名前は既に使われています
|
hub.register.invalidAccountKeyLabel=無効なアカウントキー
|
||||||
hub.register.registerBtn=確認
|
hub.register.registerBtn=登録
|
||||||
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=この名前は既に使われています
|
||||||
|
hub.register.legacy.description=このデバイスからの最初のハブへのアクセスです。登録してください。
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=デバイス名の登録に成功しました
|
hub.registerSuccess.message=デバイスが登録されました
|
||||||
hub.registerSuccess.description=金庫にアクセスするためには,金庫のオーナーが端末を認証する必要があります。
|
hub.registerSuccess.description=デバイスの登録が完了しました。続いて金庫のロックを解除することができます。
|
||||||
|
hub.registerSuccess.unlockBtn=解錠
|
||||||
|
hub.registerSuccess.legacy.description=金庫にアクセスするためには金庫のオーナーが端末を認証する必要があります。
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=デバイス名の登録に失敗しました
|
hub.registerFailed.message=デバイスの登録に失敗しました
|
||||||
hub.registerFailed.description=デバイス名登録中にエラーが発生しました。エラーの詳細についてはアプリケーションログを参照してください。
|
hub.registerFailed.description.generic=登録中にエラーが発生しました。エラーの詳細についてはアプリケーションログを参照してください。
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=このデバイスは既に別のユーザーに登録されています。ユーザーアカウントを変更するか、別のデバイスを使用してください。
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=アクセスが拒否されました
|
hub.unauthorized.message=アクセスが拒否されました
|
||||||
hub.unauthorized.description=お使いのデバイスはまだこの金庫にアクセスする権限がありません。金庫のオーナーに権限を与えてもらってください。
|
hub.unauthorized.description=お使いのデバイスはまだこの金庫にアクセスする権限がありません。金庫のオーナーに権限を与えてもらってください。
|
||||||
@@ -292,9 +303,11 @@ preferences.interface.showMinimizeButton=最小化ボタンを表示
|
|||||||
preferences.interface.showTrayIcon=トレイアイコンを表示 (再起動が必要)
|
preferences.interface.showTrayIcon=トレイアイコンを表示 (再起動が必要)
|
||||||
## Volume
|
## Volume
|
||||||
preferences.volume=仮想ドライブ
|
preferences.volume=仮想ドライブ
|
||||||
|
preferences.volume.type=デフォルトのボリュームタイプ
|
||||||
preferences.volume.type.automatic=自動
|
preferences.volume.type.automatic=自動
|
||||||
preferences.volume.docsTooltip=異なるボリュームタイプの詳細については、ドキュメントを確認してください。
|
preferences.volume.docsTooltip=異なるボリュームタイプの詳細については、ドキュメントを確認してください。
|
||||||
preferences.volume.fuseRestartRequired=変更を適用するには、Cryptomator を再起動する必要があります。
|
preferences.volume.fuseRestartRequired=変更を適用するには、Cryptomator を再起動する必要があります。
|
||||||
|
preferences.volume.tcp.port=既定のTCPポート
|
||||||
preferences.volume.supportedFeatures=選択したボリューム形式は、次の機能をサポートしています:
|
preferences.volume.supportedFeatures=選択したボリューム形式は、次の機能をサポートしています:
|
||||||
preferences.volume.feature.mountAuto=マウント先の自動選択
|
preferences.volume.feature.mountAuto=マウント先の自動選択
|
||||||
preferences.volume.feature.mountToDir=カスタム ディレクトリをマウント先に指定
|
preferences.volume.feature.mountToDir=カスタム ディレクトリをマウント先に指定
|
||||||
@@ -307,6 +320,14 @@ preferences.updates.currentVersion=現在のバージョン: %s
|
|||||||
preferences.updates.autoUpdateCheck=自動的に更新を確認する
|
preferences.updates.autoUpdateCheck=自動的に更新を確認する
|
||||||
preferences.updates.checkNowBtn=今すぐ確認
|
preferences.updates.checkNowBtn=今すぐ確認
|
||||||
preferences.updates.updateAvailable=利用可能なバージョン %s に更新します。
|
preferences.updates.updateAvailable=利用可能なバージョン %s に更新します。
|
||||||
|
preferences.updates.lastUpdateCheck=最終確認: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=未確認
|
||||||
|
preferences.updates.lastUpdateCheck.recently=最近
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s 日前
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s 時間前
|
||||||
|
preferences.updates.checkFailed=アップデートを探すのに失敗しました。インターネット接続を確認するか、後でもう一度お試しください。
|
||||||
|
preferences.updates.upToDate=Cryptomator は最新です。
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=支援する
|
preferences.contribute=支援する
|
||||||
preferences.contribute.registeredFor=サポート証明書 (%s) が登録されました
|
preferences.contribute.registeredFor=サポート証明書 (%s) が登録されました
|
||||||
@@ -379,6 +400,7 @@ main.vaultDetail.unlockBtn=解錠...
|
|||||||
main.vaultDetail.unlockNowBtn=今すぐ解錠
|
main.vaultDetail.unlockNowBtn=今すぐ解錠
|
||||||
main.vaultDetail.optionsBtn=金庫のオプション
|
main.vaultDetail.optionsBtn=金庫のオプション
|
||||||
main.vaultDetail.passwordSavedInKeychain=パスワードを保存しました
|
main.vaultDetail.passwordSavedInKeychain=パスワードを保存しました
|
||||||
|
main.vaultDetail.share=共有…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=解錠済み
|
main.vaultDetail.unlockedStatus=解錠済み
|
||||||
main.vaultDetail.accessLocation=金庫の内容はこちらからアクセスできます:
|
main.vaultDetail.accessLocation=金庫の内容はこちらからアクセスできます:
|
||||||
@@ -433,6 +455,7 @@ vaultOptions.general.startHealthCheckBtn=正常性チェックを開始
|
|||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=マウント
|
vaultOptions.mount=マウント
|
||||||
|
vaultOptions.mount.info=仮想ドライブの環境設定を開き、デフォルト設定を変更します。
|
||||||
vaultOptions.mount.readonly=読み取り専用
|
vaultOptions.mount.readonly=読み取り専用
|
||||||
vaultOptions.mount.customMountFlags=カスタム マウント フラグ
|
vaultOptions.mount.customMountFlags=カスタム マウント フラグ
|
||||||
vaultOptions.mount.winDriveLetterOccupied=使用中
|
vaultOptions.mount.winDriveLetterOccupied=使用中
|
||||||
@@ -442,6 +465,10 @@ vaultOptions.mount.mountPoint.driveLetter=割り当てられるドライブ文
|
|||||||
vaultOptions.mount.mountPoint.custom=選択したディレクトリを使う
|
vaultOptions.mount.mountPoint.custom=選択したディレクトリを使う
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=選択...
|
vaultOptions.mount.mountPoint.directoryPickerButton=選択...
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=ディレクトリを選択
|
vaultOptions.mount.mountPoint.directoryPickerTitle=ディレクトリを選択
|
||||||
|
vaultOptions.mount.volumeType.default=既定値 (%s)
|
||||||
|
vaultOptions.mount.volumeType.restartRequired=このボリュームタイプを使用するには、Cryptomatorを再起動する必要があります。
|
||||||
|
vaultOptions.mount.volume.tcp.port=TCPポート
|
||||||
|
vaultOptions.mount.volume.type=ボリュームタイプ
|
||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey=パスワード
|
vaultOptions.masterkey=パスワード
|
||||||
vaultOptions.masterkey.changePasswordBtn=パスワードの変更
|
vaultOptions.masterkey.changePasswordBtn=パスワードの変更
|
||||||
@@ -511,4 +538,27 @@ updateReminder.message=更新を確認するか
|
|||||||
updateReminder.description=自動的に更新をチェックして、新機能、バグ修正、セキュリティの改善などを入手するのをお勧めします。
|
updateReminder.description=自動的に更新をチェックして、新機能、バグ修正、セキュリティの改善などを入手するのをお勧めします。
|
||||||
updateReminder.notNow=また後で
|
updateReminder.notNow=また後で
|
||||||
updateReminder.yesOnce=はい、一度だけ
|
updateReminder.yesOnce=はい、一度だけ
|
||||||
updateReminder.yesAutomatically=自動的に行う
|
updateReminder.yesAutomatically=自動的に行う
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=環境設定を開く
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=保管庫を共有する
|
||||||
|
shareVault.message=保管庫を他の人と共有しますか?
|
||||||
|
shareVault.description=あなたの保管庫を他の人と共有するときは、常に注意してください。要するに、以下の手順に従ってください:
|
||||||
|
shareVault.instruction.1=1. クラウドストレージ経由で暗号化された保管庫フォルダへのアクセスを共有します。
|
||||||
|
shareVault.instruction.2=2. 保管庫のパスワードを安全な方法で共有する。
|
||||||
|
shareVault.remarkBestPractices=詳しくは、ドキュメントにあるベストプラクティスの提案をご覧ください。
|
||||||
|
shareVault.docsTooltip=保管庫の共有についての詳細は、ドキュメントをご覧ください。
|
||||||
|
shareVault.hubAd.description=チームワークの安全な方法
|
||||||
|
shareVault.hubAd.keyManagement=• ゼロ知識キー管理
|
||||||
|
shareVault.hubAd.authentication=• 強固な認証
|
||||||
|
shareVault.hubAd.encryption=• エンドツーエンドの暗号化
|
||||||
|
shareVault.visitHub=Cryptomator Hubを訪問
|
||||||
|
|
||||||
|
shareVault.hub.message=ハブ保管庫の共有方法
|
||||||
|
shareVault.hub.description=データ保管庫のコンテンツを他のチームメンバーと共有するには、2つの手順を実行する必要があります:
|
||||||
|
shareVault.hub.instruction.1=1. クラウドストレージ経由で暗号化された保管庫フォルダへのアクセスを共有します。
|
||||||
|
shareVault.hub.instruction.2=2. Cryptomator Hubでチームメンバーにアクセスを許可する。
|
||||||
|
shareVault.hub.openHub=Cryptomator Hubを開く
|
||||||
@@ -131,14 +131,15 @@ hub.noKeychain.openBtn=설정 열기
|
|||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.nameLabel=기기 이름
|
hub.register.nameLabel=기기 이름
|
||||||
hub.register.occupiedMsg=이미 사용된 이름입니다
|
### Register Device Legacy
|
||||||
hub.register.registerBtn=확인
|
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=잠금해제
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=액세스 거부
|
hub.unauthorized.message=액세스 거부
|
||||||
hub.unauthorized.description=귀하의 기기는 아직 이 저장소에 액세스할 수 있는 권한이 없습니다. Vault 소유자에게 승인을 요청하세요.
|
hub.unauthorized.description=귀하의 기기는 아직 이 저장소에 액세스할 수 있는 권한이 없습니다. Vault 소유자에게 승인을 요청하세요.
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
|
hub.requireAccountInit.message=조치가 필요함
|
||||||
### License Exceeded
|
### License Exceeded
|
||||||
hub.invalidLicense.message=Hub 라이선스가 잘못되었습니다.
|
hub.invalidLicense.message=Hub 라이선스가 잘못되었습니다.
|
||||||
hub.invalidLicense.description=Cryptomator Hub 인스턴스에 잘못된 라이선스가 있습니다. 라이센스를 업그레이드하거나 갱신하려면 허브 관리자에게 알리십시오.
|
hub.invalidLicense.description=Cryptomator Hub 인스턴스에 잘못된 라이선스가 있습니다. 라이센스를 업그레이드하거나 갱신하려면 허브 관리자에게 알리십시오.
|
||||||
@@ -253,6 +254,7 @@ preferences.updates.currentVersion=현재 버전: %s
|
|||||||
preferences.updates.autoUpdateCheck=자동으로 업데이트 확인
|
preferences.updates.autoUpdateCheck=자동으로 업데이트 확인
|
||||||
preferences.updates.checkNowBtn=지금 확인
|
preferences.updates.checkNowBtn=지금 확인
|
||||||
preferences.updates.updateAvailable=버전 %s의 업데이트가 가능합니다.
|
preferences.updates.updateAvailable=버전 %s의 업데이트가 가능합니다.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=후원하기
|
preferences.contribute=후원하기
|
||||||
preferences.contribute.registeredFor=%s (으)로 후원자 인증 등록됨
|
preferences.contribute.registeredFor=%s (으)로 후원자 인증 등록됨
|
||||||
@@ -441,4 +443,9 @@ quit.forced.forceAndQuitBtn=Vault 강제 잠금 후 종료하기
|
|||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
updateReminder.title=업데이트 확인
|
updateReminder.title=업데이트 확인
|
||||||
updateReminder.notNow=나중에
|
updateReminder.notNow=나중에
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=설정 열기
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -110,8 +110,9 @@ unlock.success.revealBtn=Atklāt disku
|
|||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.nameLabel=Ierīces nosaukums
|
hub.register.nameLabel=Ierīces nosaukums
|
||||||
hub.register.registerBtn=Apstiprināt
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=Atslēgt
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
@@ -166,6 +167,7 @@ preferences.updates.currentVersion=Pašreizējā versija: %s
|
|||||||
preferences.updates.autoUpdateCheck=Automātiski pārbaudīt atjauninājumus
|
preferences.updates.autoUpdateCheck=Automātiski pārbaudīt atjauninājumus
|
||||||
preferences.updates.checkNowBtn=Pārbaudīt tagad
|
preferences.updates.checkNowBtn=Pārbaudīt tagad
|
||||||
preferences.updates.updateAvailable=Pieejams atjauninājums uz versiju %s.
|
preferences.updates.updateAvailable=Pieejams atjauninājums uz versiju %s.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -276,4 +278,8 @@ quit.lockAndQuitBtn=Aizslēgt un aizvērt
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -73,8 +73,9 @@ unlock.unlockBtn=Отклучи
|
|||||||
### Waiting
|
### Waiting
|
||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.registerBtn=Потврди
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=Отклучи
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
@@ -105,6 +106,7 @@ preferences.title=Поставки
|
|||||||
## Interface
|
## Interface
|
||||||
## Volume
|
## Volume
|
||||||
## Updates
|
## Updates
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -157,4 +159,8 @@ vaultOptions.mount.mountPoint.directoryPickerButton=Избор…
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
# Locale Specific CSS files such as CJK, RTL,...
|
||||||
|
|
||||||
|
# Generics
|
||||||
|
## Button
|
||||||
|
|
||||||
|
# Error
|
||||||
|
|
||||||
|
# Defaults
|
||||||
|
|
||||||
|
# Tray Menu
|
||||||
|
|
||||||
|
# Add Vault Wizard
|
||||||
|
## New
|
||||||
|
### Name
|
||||||
|
### Location
|
||||||
|
### Expert Settings
|
||||||
|
### Password
|
||||||
|
### Information
|
||||||
|
## Existing
|
||||||
|
## Success
|
||||||
|
|
||||||
|
# Remove Vault
|
||||||
|
|
||||||
|
# Change Password
|
||||||
|
|
||||||
|
# Forget Password
|
||||||
|
|
||||||
|
# Unlock
|
||||||
|
## Select
|
||||||
|
## Success
|
||||||
|
## Failure
|
||||||
|
## Hub
|
||||||
|
### Waiting
|
||||||
|
### Receive Key
|
||||||
|
### Register Device
|
||||||
|
### Register Device Legacy
|
||||||
|
### Registration Success
|
||||||
|
### Registration Failed
|
||||||
|
### Unauthorized
|
||||||
|
### Requires Account Initialization
|
||||||
|
### License Exceeded
|
||||||
|
|
||||||
|
# Lock
|
||||||
|
## Force
|
||||||
|
## Failure
|
||||||
|
|
||||||
|
# Migration
|
||||||
|
## Start
|
||||||
|
## Run
|
||||||
|
## Success
|
||||||
|
## Missing file system capabilities
|
||||||
|
## Impossible
|
||||||
|
|
||||||
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
|
## Detail view
|
||||||
|
## Result view
|
||||||
|
## Fix Application
|
||||||
|
|
||||||
|
# Preferences
|
||||||
|
## General
|
||||||
|
## Interface
|
||||||
|
## Volume
|
||||||
|
## Updates
|
||||||
|
|
||||||
|
## Contribution
|
||||||
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
# Vault Statistics
|
||||||
|
## Read
|
||||||
|
## Write
|
||||||
|
|
||||||
|
## Accesses
|
||||||
|
|
||||||
|
|
||||||
|
# Main Window
|
||||||
|
## Vault List
|
||||||
|
## Vault Detail
|
||||||
|
### Welcome
|
||||||
|
### Locked
|
||||||
|
### Unlocked
|
||||||
|
### Missing
|
||||||
|
### Needs Migration
|
||||||
|
### Error
|
||||||
|
|
||||||
|
# Wrong File Alert
|
||||||
|
|
||||||
|
# Vault Options
|
||||||
|
## General
|
||||||
|
|
||||||
|
## Mount
|
||||||
|
## Master Key
|
||||||
|
## Hub
|
||||||
|
|
||||||
|
# Recovery Key
|
||||||
|
## Display Recovery Key
|
||||||
|
## Reset Password
|
||||||
|
### Enter Recovery Key
|
||||||
|
### Reset Password
|
||||||
|
### Recovery Key Password Reset Success
|
||||||
|
|
||||||
|
# Convert Vault
|
||||||
|
|
||||||
|
# New Password
|
||||||
|
|
||||||
|
# Quit
|
||||||
|
|
||||||
|
# Forced Quit
|
||||||
|
|
||||||
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Navngi hvelvet
|
|||||||
addvaultwizard.new.namePrompt=Navn på hvelvet
|
addvaultwizard.new.namePrompt=Navn på hvelvet
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Hvor skal Cryptomator lagre de krypterte filene dine?
|
addvaultwizard.new.locationInstruction=Hvor skal Cryptomator lagre de krypterte filene dine?
|
||||||
|
addvaultwizard.new.locationLoading=Sjekker lokalt filsystem for standard skylagringskatalog…
|
||||||
addvaultwizard.new.locationLabel=Lagringssted
|
addvaultwizard.new.locationLabel=Lagringssted
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Tilpasset lagringssted
|
addvaultwizard.new.directoryPickerLabel=Tilpasset lagringssted
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Den midlertidige, skjulte fil
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Hvelvet ditt kan ikke monteres i banen "%s". Prøv igjen eller velg en annen sti.
|
unlock.error.customPath.description.couldNotBeCleaned=Hvelvet ditt kan ikke monteres i banen "%s". Prøv igjen eller velg en annen sti.
|
||||||
unlock.error.customPath.description.notEmptyDir=Tilpasset monterings sti "%s" er ikke en tom mappe. Velg en tom mappe og prøv igjen.
|
unlock.error.customPath.description.notEmptyDir=Tilpasset monterings sti "%s" er ikke en tom mappe. Velg en tom mappe og prøv igjen.
|
||||||
unlock.error.customPath.description.generic=Du har valgt en egendefinert monterings sti for dette hvelvet, men bruk av den mislyktes med meldingen: %2$s
|
unlock.error.customPath.description.generic=Du har valgt en egendefinert monterings sti for dette hvelvet, men bruk av den mislyktes med meldingen: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Kan ikke låse opp hvelvet
|
unlock.error.restartRequired.message=Kan ikke låse opp hvelvet
|
||||||
unlock.error.fuseRestartRequired.description=Endre volumtype i innstillinger for hvelvet eller start Cryptomator på nytt.
|
unlock.error.restartRequired.description=Endre volumtype i innstillinger for hvelvet eller start Cryptomator på nytt.
|
||||||
unlock.error.title=Lås opp "%s" mislyktes
|
unlock.error.title=Lås opp "%s" mislyktes
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Får ikke tilgang til enhetsnøkkel
|
hub.noKeychain.message=Får ikke tilgang til enhetsnøkkel
|
||||||
@@ -157,17 +158,22 @@ hub.receive.message=Prosesserer svar…
|
|||||||
hub.receive.description=Cryptomator mottar og behandler svaret fra Hub. Vennligst vent.
|
hub.receive.description=Cryptomator mottar og behandler svaret fra Hub. Vennligst vent.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Ny Enhet
|
hub.register.message=Ny Enhet
|
||||||
hub.register.description=Dette er den første Hub-tilgangen fra denne enheten. Vennligst autoriser den ved hjelp av kontonøkkelen.
|
hub.register.description=Dette er første hub tilgang fra denne enheten. Vennligst registrert dette med din kontonøkkel.
|
||||||
hub.register.nameLabel=Enhetsnavn
|
hub.register.nameLabel=Enhetsnavn
|
||||||
hub.register.invalidAccountKeyLabel=Ugyldig kontonøkkel
|
hub.register.invalidAccountKeyLabel=Ugyldig kontonøkkel
|
||||||
hub.register.occupiedMsg=Navnet er allerede i bruk
|
hub.register.registerBtn=Registrer
|
||||||
hub.register.registerBtn=Bekreft
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Navnet er allerede i bruk
|
||||||
|
hub.register.legacy.description=Dette er første gang Hub blir benyttet fra denne enheten. Vennligst registrer den.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Enheten navngitt
|
hub.registerSuccess.message=Enhet registrert
|
||||||
hub.registerSuccess.description=For å få tilgang til hvelvet, så må enheten din bli autorisert av hvelvets eier.
|
hub.registerSuccess.description=Enheten din er registrert. Du kan nå fortsette å låse opp hvelvet.
|
||||||
|
hub.registerSuccess.unlockBtn=Lås opp
|
||||||
|
hub.registerSuccess.legacy.description=For å få tilgangen til hvelvet, må enheten din i tillegg godkjennes av hvelv eier.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Enhetsnavngiving mislyktes
|
hub.registerFailed.message=Enhetsregistrering mislyktes
|
||||||
hub.registerFailed.description=Under navngivingsprosessen oppsto det en feilmelding. For flere detaljer, studere applikasjonsloggen.
|
hub.registerFailed.description.generic=En feil ble gjort under registreringsprossen. For mer detaljer, se i applikasjonsloggen.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Denne enheten er allerede registrert for en annen bruker. Prøv å endre brukerkontoen eller bruk en annen enhet.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Ingen tilgang
|
hub.unauthorized.message=Ingen tilgang
|
||||||
hub.unauthorized.description=Enheten din har ikke blitt autorisert til å få tilgang til dette hvelvet ennå. Spør hvelveieren om å tillate det.
|
hub.unauthorized.description=Enheten din har ikke blitt autorisert til å få tilgang til dette hvelvet ennå. Spør hvelveieren om å tillate det.
|
||||||
@@ -314,6 +320,14 @@ preferences.updates.currentVersion=Gjeldende versjon: %s
|
|||||||
preferences.updates.autoUpdateCheck=Se automatisk etter oppdateringer
|
preferences.updates.autoUpdateCheck=Se automatisk etter oppdateringer
|
||||||
preferences.updates.checkNowBtn=Sjekk nå
|
preferences.updates.checkNowBtn=Sjekk nå
|
||||||
preferences.updates.updateAvailable=Oppdatering til versjon %s er tilgjengelig.
|
preferences.updates.updateAvailable=Oppdatering til versjon %s er tilgjengelig.
|
||||||
|
preferences.updates.lastUpdateCheck=Siste sjekk: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=aldri
|
||||||
|
preferences.updates.lastUpdateCheck.recently=nylig
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s dager siden
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s timer siden
|
||||||
|
preferences.updates.checkFailed=Kunne ikke lete etter oppdateringer. Sjekk internett tilkoblingen din og prøv igjen senere.
|
||||||
|
preferences.updates.upToDate=Cryptomator er oppdatert.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Støtt oss
|
preferences.contribute=Støtt oss
|
||||||
preferences.contribute.registeredFor=Supporter sertifikat registrert for %s
|
preferences.contribute.registeredFor=Supporter sertifikat registrert for %s
|
||||||
@@ -386,6 +400,7 @@ main.vaultDetail.unlockBtn=Lås opp…
|
|||||||
main.vaultDetail.unlockNowBtn=Lås opp nå
|
main.vaultDetail.unlockNowBtn=Lås opp nå
|
||||||
main.vaultDetail.optionsBtn=Alternativer for hvelvet
|
main.vaultDetail.optionsBtn=Alternativer for hvelvet
|
||||||
main.vaultDetail.passwordSavedInKeychain=Passordet er lagret
|
main.vaultDetail.passwordSavedInKeychain=Passordet er lagret
|
||||||
|
main.vaultDetail.share=Del…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=ULÅST
|
main.vaultDetail.unlockedStatus=ULÅST
|
||||||
main.vaultDetail.accessLocation=Innholdet i hvelvet ditt er tilgjengelig her:
|
main.vaultDetail.accessLocation=Innholdet i hvelvet ditt er tilgjengelig her:
|
||||||
@@ -451,7 +466,7 @@ vaultOptions.mount.mountPoint.custom=Bruk valgt mappe
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Velg…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Velg…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Velg en mappe
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Velg en mappe
|
||||||
vaultOptions.mount.volumeType.default=Standard (%s)
|
vaultOptions.mount.volumeType.default=Standard (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=For å bruke denne volumtypen må Cryptomator startes på nytt.
|
vaultOptions.mount.volumeType.restartRequired=For å bruke denne volumtypen, må Cryptomator startes på nytt.
|
||||||
vaultOptions.mount.volume.tcp.port=TCP Port
|
vaultOptions.mount.volume.tcp.port=TCP Port
|
||||||
vaultOptions.mount.volume.type=Volumtype
|
vaultOptions.mount.volume.type=Volumtype
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -523,4 +538,24 @@ updateReminder.message=Se etter oppdateringer?
|
|||||||
updateReminder.description=Hold deg oppdatert med nye funksjoner, feilrettinger og sikkerhetsforbedringer. Vi anbefaler å se etter oppdateringer automatisk.
|
updateReminder.description=Hold deg oppdatert med nye funksjoner, feilrettinger og sikkerhetsforbedringer. Vi anbefaler å se etter oppdateringer automatisk.
|
||||||
updateReminder.notNow=Ikke nå
|
updateReminder.notNow=Ikke nå
|
||||||
updateReminder.yesOnce=Ja, en gang
|
updateReminder.yesOnce=Ja, en gang
|
||||||
updateReminder.yesAutomatically=Ja, automatisk
|
updateReminder.yesAutomatically=Ja, automatisk
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Avskrivingsvarsel
|
||||||
|
dokanySupportEnd.message=Støtte for Dokany er avsluttet
|
||||||
|
dokanySupportEnd.description=Volumtypen Dokany støttes ikke lenger av Cryptomator. Innstillingene dine er justert for å bruke standard volumtype nå. Du kan se standardtypen i innstillingene.
|
||||||
|
dokanySupportEnd.preferencesBtn=Åpne innstillinger
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Del hvelv
|
||||||
|
shareVault.message=Vil du dele hvelvet ditt med andre?
|
||||||
|
shareVault.hubAd.description=Den sikre måten å jobbe i et lag på
|
||||||
|
shareVault.hubAd.authentication=• Sterk autentisering
|
||||||
|
shareVault.hubAd.encryption=• Ende-til-ende kryptering
|
||||||
|
shareVault.visitHub=Besøk Cryptomator hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Hvordan dele et Hub-hvelv
|
||||||
|
shareVault.hub.description=For å dele hvelvets innhold med et annet lagmedlem må du utføre to trinn:
|
||||||
|
shareVault.hub.instruction.1=1. Del tilgang til den krypterte hvelvmappen via skylagring.
|
||||||
|
shareVault.hub.instruction.2=2. Gi tilgang til lagmedlem i Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Åpne Cryptomator hub
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Kies een naam voor de kluis
|
|||||||
addvaultwizard.new.namePrompt=Kluisnaam
|
addvaultwizard.new.namePrompt=Kluisnaam
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Waar moet Cryptomator de versleutelde bestanden van je kluis opslaan?
|
addvaultwizard.new.locationInstruction=Waar moet Cryptomator de versleutelde bestanden van je kluis opslaan?
|
||||||
|
addvaultwizard.new.locationLoading=Lokaal bestandssysteem controleren op standaard cloud opslag mappen…
|
||||||
addvaultwizard.new.locationLabel=Opslaglocatie
|
addvaultwizard.new.locationLabel=Opslaglocatie
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Andere locatie
|
addvaultwizard.new.directoryPickerLabel=Andere locatie
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Het tijdelijk verborgen besta
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Uw kluis kon niet worden gekoppeld aan het pad "%s". Probeer het opnieuw of kies een ander pad.
|
unlock.error.customPath.description.couldNotBeCleaned=Uw kluis kon niet worden gekoppeld aan het pad "%s". Probeer het opnieuw of kies een ander pad.
|
||||||
unlock.error.customPath.description.notEmptyDir=Het aangepaste pad "%s" is geen lege map. Kies een lege map en probeer het opnieuw.
|
unlock.error.customPath.description.notEmptyDir=Het aangepaste pad "%s" is geen lege map. Kies een lege map en probeer het opnieuw.
|
||||||
unlock.error.customPath.description.generic=Je hebt een aangepast koppelpad voor deze kluis geselecteerd, maar gebruik ervan is mislukt met het bericht: %2$s
|
unlock.error.customPath.description.generic=Je hebt een aangepast koppelpad voor deze kluis geselecteerd, maar gebruik ervan is mislukt met het bericht: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Kan kluis niet ontgrendelen
|
unlock.error.restartRequired.message=Kan kluis niet ontgrendelen
|
||||||
unlock.error.fuseRestartRequired.description=Wijzig het volumetype in kluisopties of start Cryptomator opnieuw.
|
unlock.error.restartRequired.description=Wijzig het type volume in de opties voor de kluis of herstart Cryptomator.
|
||||||
unlock.error.title=Ontgrendelen "%s" mislukt
|
unlock.error.title=Ontgrendelen "%s" mislukt
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Geen toegang tot de apparaatsleutel
|
hub.noKeychain.message=Geen toegang tot de apparaatsleutel
|
||||||
@@ -160,14 +161,19 @@ hub.register.message=Nieuw apparaat
|
|||||||
hub.register.description=Dit is de eerste Hub toegang vanaf dit apparaat. Bevestig deze toegang met behulp van uw Account Key.
|
hub.register.description=Dit is de eerste Hub toegang vanaf dit apparaat. Bevestig deze toegang met behulp van uw Account Key.
|
||||||
hub.register.nameLabel=Apparaatnaam
|
hub.register.nameLabel=Apparaatnaam
|
||||||
hub.register.invalidAccountKeyLabel=Ongeldige Account Key
|
hub.register.invalidAccountKeyLabel=Ongeldige Account Key
|
||||||
hub.register.occupiedMsg=Naam al in gebruik
|
hub.register.registerBtn=Registreren
|
||||||
hub.register.registerBtn=Bevestig
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Naam al in gebruik
|
||||||
|
hub.register.legacy.description=Dit is de eerste keer dat dit apparaat toegang heeft tot de Hub. Registreer dit aub.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Apparaat naam
|
hub.registerSuccess.message=Apparaat geregistreerd
|
||||||
hub.registerSuccess.description=Om toegang te krijgen tot de kluis, moet je apparaat worden gemachtigd door de eigenaar van de kluis.
|
hub.registerSuccess.description=Uw apparaat is met succes geregistreerd. Y kunt nu doorgaan met het ontgrendelen van de kluis.
|
||||||
|
hub.registerSuccess.unlockBtn=Ontgrendelen
|
||||||
|
hub.registerSuccess.legacy.description=Om toegang te krijgen tot de kluis, moet je toestel bovendien worden gemachtigd door de eigenaar van de kluis.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Apparaat naamgeving mislukt
|
hub.registerFailed.message=Registratie van Apparaat mislukt
|
||||||
hub.registerFailed.description=Er is een fout in het naamproces geworpen. Kijk in het applicatielogboek.
|
hub.registerFailed.description.generic=Er is een fout gemaakt in het registratieproces. Kijk voor meer details in het logbestand van de applicatie.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Dit apparaat is al geregistreerd voor een andere gebruiker. Probeer de account te wijzigen of gebruik een ander apparaat.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Toegang geweigerd
|
hub.unauthorized.message=Toegang geweigerd
|
||||||
hub.unauthorized.description=Uw apparaat is nog niet gemachtigd om toegang te krijgen tot deze kluis. Vraag de eigenaar van de kluis om toestemming te geven.
|
hub.unauthorized.description=Uw apparaat is nog niet gemachtigd om toegang te krijgen tot deze kluis. Vraag de eigenaar van de kluis om toestemming te geven.
|
||||||
@@ -314,6 +320,14 @@ preferences.updates.currentVersion=Huidige Versie: "%s"
|
|||||||
preferences.updates.autoUpdateCheck=Automatisch controleren op updates
|
preferences.updates.autoUpdateCheck=Automatisch controleren op updates
|
||||||
preferences.updates.checkNowBtn=Controleer nu
|
preferences.updates.checkNowBtn=Controleer nu
|
||||||
preferences.updates.updateAvailable=Update naar versie "%s" beschikbaar.
|
preferences.updates.updateAvailable=Update naar versie "%s" beschikbaar.
|
||||||
|
preferences.updates.lastUpdateCheck=Laatst gecontroleerd: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=nooit
|
||||||
|
preferences.updates.lastUpdateCheck.recently=recent
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s dagen geleden
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s uur geleden
|
||||||
|
preferences.updates.checkFailed=Zoeken naar updates is mislukt. Controleer je internetverbinding of probeer het later opnieuw.
|
||||||
|
preferences.updates.upToDate=Cryptomator is up-to-date.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Steun ons
|
preferences.contribute=Steun ons
|
||||||
preferences.contribute.registeredFor=Supporter certificaat geregistreerd voor %s
|
preferences.contribute.registeredFor=Supporter certificaat geregistreerd voor %s
|
||||||
@@ -386,6 +400,7 @@ main.vaultDetail.unlockBtn=Ontgrendelen…
|
|||||||
main.vaultDetail.unlockNowBtn=Nu Ontgrendelen
|
main.vaultDetail.unlockNowBtn=Nu Ontgrendelen
|
||||||
main.vaultDetail.optionsBtn=Kluis-instellingen
|
main.vaultDetail.optionsBtn=Kluis-instellingen
|
||||||
main.vaultDetail.passwordSavedInKeychain=Wachtwoord opgeslagen
|
main.vaultDetail.passwordSavedInKeychain=Wachtwoord opgeslagen
|
||||||
|
main.vaultDetail.share=Delen...
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=ONTGRENDELD
|
main.vaultDetail.unlockedStatus=ONTGRENDELD
|
||||||
main.vaultDetail.accessLocation=De inhoud van uw kluis is hier toegankelijk:
|
main.vaultDetail.accessLocation=De inhoud van uw kluis is hier toegankelijk:
|
||||||
@@ -451,7 +466,7 @@ vaultOptions.mount.mountPoint.custom=Gebruik gekozen map
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Kies…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Kies…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Selecteer een map
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Selecteer een map
|
||||||
vaultOptions.mount.volumeType.default=Standaard (%s)
|
vaultOptions.mount.volumeType.default=Standaard (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Om dit volumetype te kunnen gebruiken, moet Cryptomator opnieuw worden opgestart.
|
vaultOptions.mount.volumeType.restartRequired=Om dit type volume te kunnen gebruiken, moet Cryptomator opnieuw worden opgestart.
|
||||||
vaultOptions.mount.volume.tcp.port=TCP-poort
|
vaultOptions.mount.volume.tcp.port=TCP-poort
|
||||||
vaultOptions.mount.volume.type=Volumetype
|
vaultOptions.mount.volume.type=Volumetype
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -523,4 +538,30 @@ updateReminder.message=Controleren op updates?
|
|||||||
updateReminder.description=Blijf op de hoogte met nieuwe functies, bugfixes en beveiligingsverbeteringen. We raden aan om automatisch te controleren op updates.
|
updateReminder.description=Blijf op de hoogte met nieuwe functies, bugfixes en beveiligingsverbeteringen. We raden aan om automatisch te controleren op updates.
|
||||||
updateReminder.notNow=Niet nu
|
updateReminder.notNow=Niet nu
|
||||||
updateReminder.yesOnce=Ja, Eenmaal
|
updateReminder.yesOnce=Ja, Eenmaal
|
||||||
updateReminder.yesAutomatically=Ja, automatisch
|
updateReminder.yesAutomatically=Ja, automatisch
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Kennisgeving van beëindiging
|
||||||
|
dokanySupportEnd.message=Ondersteuning beëindigd voor Dokany
|
||||||
|
dokanySupportEnd.description=Het volumetype Dokany wordt niet langer ondersteund door Cryptomator. Uw instellingen zijn aangepast om nu het standaard volumetype te gebruiken. U kunt het standaardtype bekijken in de voorkeuren.
|
||||||
|
dokanySupportEnd.preferencesBtn=Open Voorkeuren
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Kluis delen
|
||||||
|
shareVault.message=Wilt u uw kluis met anderen delen?
|
||||||
|
shareVault.description=Wees altijd voorzichtig bij het delen van je kluis met andere mensen. Kortom, volg deze stappen:
|
||||||
|
shareVault.instruction.1=1. Deel toegang van de versleutelde kluis map via de cloud opslag.
|
||||||
|
shareVault.instruction.2=2. Deel het wachtwoord van de kluis op een veilige manier.
|
||||||
|
shareVault.remarkBestPractices=Kijk voor meer informatie naar de suggesties voor beste praktijken in onze documenten.
|
||||||
|
shareVault.docsTooltip=Open de documentatie om meer te leren over het delen van kluizen.
|
||||||
|
shareVault.hubAd.description=De veilige manier om in teams te werken
|
||||||
|
shareVault.hubAd.keyManagement=• Zero-knowledge sleutelbeheer
|
||||||
|
shareVault.hubAd.authentication=• Sterke authenticatie
|
||||||
|
shareVault.hubAd.encryption=• End-to-end versleuteling
|
||||||
|
shareVault.visitHub=Bezoek Cryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Hoe een Hub kluis delen
|
||||||
|
shareVault.hub.description=Om de inhoud van de kluis te delen met een ander teamlid, moet u twee stappen uitvoeren:
|
||||||
|
shareVault.hub.instruction.1=1. Deel toegang van de versleutelde kluismap via de cloud opslag.
|
||||||
|
shareVault.hub.instruction.2=2. Geef teamlid toegang in Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Open Cryptomator Hub
|
||||||
@@ -97,7 +97,9 @@ unlock.success.revealBtn=Gjer eininga synleg
|
|||||||
### Waiting
|
### Waiting
|
||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=Låse opp
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
@@ -157,6 +159,7 @@ preferences.updates.currentVersion=Gjeldande versjon: %s
|
|||||||
preferences.updates.autoUpdateCheck=Sjå etter oppdateringar automatisk
|
preferences.updates.autoUpdateCheck=Sjå etter oppdateringar automatisk
|
||||||
preferences.updates.checkNowBtn=Sjekk no
|
preferences.updates.checkNowBtn=Sjekk no
|
||||||
preferences.updates.updateAvailable=Oppdatering til versjon %s er tilgjengeleg.
|
preferences.updates.updateAvailable=Oppdatering til versjon %s er tilgjengeleg.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -273,4 +276,8 @@ quit.lockAndQuitBtn=Lås og avslutt
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -95,15 +95,14 @@ unlock.chooseMasterkey.filePickerTitle=ਮਾਸਟਰ-ਕੁੰਜੀ ਫਾਇ
|
|||||||
unlock.success.rememberChoice=ਚੋਣਾਂ ਯਾਦ ਰੱਖੋ, ਇਹ ਮੁੜ ਕੇ ਨਾ ਵੇਖਾਓ
|
unlock.success.rememberChoice=ਚੋਣਾਂ ਯਾਦ ਰੱਖੋ, ਇਹ ਮੁੜ ਕੇ ਨਾ ਵੇਖਾਓ
|
||||||
unlock.success.revealBtn=ਡਰਾਇਵ ਦਿਖਾਓ
|
unlock.success.revealBtn=ਡਰਾਇਵ ਦਿਖਾਓ
|
||||||
## Failure
|
## Failure
|
||||||
unlock.error.fuseRestartRequired.message=ਵਾਲੇਟ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਅਸਮਰੱਥ
|
|
||||||
unlock.error.fuseRestartRequired.description=ਵਾਲਟ ਚੋਣਾਂ ਵਿੱਚ ਵਾਲੀਅਮ ਦੀ ਕਿਸਮ ਨੂੰ ਬਦਲੋ ਜਾਂ Cryptomator ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰੋ।
|
|
||||||
unlock.error.title="%s" ਨੂੰ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ
|
unlock.error.title="%s" ਨੂੰ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ
|
||||||
## Hub
|
## Hub
|
||||||
### Waiting
|
### Waiting
|
||||||
### Receive Key
|
### Receive Key
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.registerBtn=ਤਸਦੀਕ
|
### Register Device Legacy
|
||||||
### Registration Success
|
### Registration Success
|
||||||
|
hub.registerSuccess.unlockBtn=ਅਣ-ਲਾਕ ਕਰੋ
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
### Requires Account Initialization
|
### Requires Account Initialization
|
||||||
@@ -169,6 +168,7 @@ preferences.updates.currentVersion=ਮੌਜੂਦਾ ਵਰਜ਼ਨ: %s
|
|||||||
preferences.updates.autoUpdateCheck=ਅੱਪਡੇਟ ਲਈ ਆਪਣੇ-ਆਪ ਜਾਂਚ ਕਰੋ
|
preferences.updates.autoUpdateCheck=ਅੱਪਡੇਟ ਲਈ ਆਪਣੇ-ਆਪ ਜਾਂਚ ਕਰੋ
|
||||||
preferences.updates.checkNowBtn=ਹੁਣੇ ਜਾਂਚ ਕਰੋ
|
preferences.updates.checkNowBtn=ਹੁਣੇ ਜਾਂਚ ਕਰੋ
|
||||||
preferences.updates.updateAvailable=ਉਪਲੱਬਧ %s ਵਰਜ਼ਨ ਲਈ ਅੱਪਡੇਟ ਕਰੋ।
|
preferences.updates.updateAvailable=ਉਪਲੱਬਧ %s ਵਰਜ਼ਨ ਲਈ ਅੱਪਡੇਟ ਕਰੋ।
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -274,7 +274,6 @@ vaultOptions.mount.mountPoint.auto=ਆਪਣੇ-ਆਪ ਢੁੱਕਵਾਂ ਟ
|
|||||||
vaultOptions.mount.mountPoint.driveLetter=ਜਾਰੀ ਕੀਤਾ ਡਰਾਇਵ ਅੱਖਰ ਵਰਤੋਂ
|
vaultOptions.mount.mountPoint.driveLetter=ਜਾਰੀ ਕੀਤਾ ਡਰਾਇਵ ਅੱਖਰ ਵਰਤੋਂ
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=…ਚੁਣੋ
|
vaultOptions.mount.mountPoint.directoryPickerButton=…ਚੁਣੋ
|
||||||
vaultOptions.mount.volumeType.default=ਮੂਲ (%s)
|
vaultOptions.mount.volumeType.default=ਮੂਲ (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=ਇਸ ਵਾਲੀਅਮ ਕਿਸਮ ਨੂੰ ਵਰਤਣ ਲਈ Cryptomator ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।
|
|
||||||
vaultOptions.mount.volume.tcp.port=TCP ਪੋਰਟ
|
vaultOptions.mount.volume.tcp.port=TCP ਪੋਰਟ
|
||||||
vaultOptions.mount.volume.type=ਵਾਲੀਅਮ ਦੀ ਕਿਸਮ
|
vaultOptions.mount.volume.type=ਵਾਲੀਅਮ ਦੀ ਕਿਸਮ
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -316,4 +315,8 @@ quit.lockAndQuitBtn=ਲਾਕ ਕਰੋ ਤੇ ਬਾਹਰ ਜਾਓ
|
|||||||
|
|
||||||
# Forced Quit
|
# Forced Quit
|
||||||
|
|
||||||
# Update Reminder
|
# Update Reminder
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Wybierz nazwę sejfu
|
|||||||
addvaultwizard.new.namePrompt=Nazwa sejfu
|
addvaultwizard.new.namePrompt=Nazwa sejfu
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Gdzie Cryptomator powinien przechowywać zaszyfrowane pliki twojego sejfu?
|
addvaultwizard.new.locationInstruction=Gdzie Cryptomator powinien przechowywać zaszyfrowane pliki twojego sejfu?
|
||||||
|
addvaultwizard.new.locationLoading=Sprawdzanie lokalnego systemu plików dla domyślnych katalogów pamięci w chmurze…
|
||||||
addvaultwizard.new.locationLabel=Miejsce zapisu
|
addvaultwizard.new.locationLabel=Miejsce zapisu
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Własna lokalizacja
|
addvaultwizard.new.directoryPickerLabel=Własna lokalizacja
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Nie można usunąć ukrytego
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Twój sejf nie mógł być zamontowany do ścieżki "%s". Spróbuj ponownie lub wybierz inną ścieżkę.
|
unlock.error.customPath.description.couldNotBeCleaned=Twój sejf nie mógł być zamontowany do ścieżki "%s". Spróbuj ponownie lub wybierz inną ścieżkę.
|
||||||
unlock.error.customPath.description.notEmptyDir=Wybrana ścieżka montowania "%s" nie jest pustym katalogiem. Wybierz pusty katalog i spróbuj ponownie.
|
unlock.error.customPath.description.notEmptyDir=Wybrana ścieżka montowania "%s" nie jest pustym katalogiem. Wybierz pusty katalog i spróbuj ponownie.
|
||||||
unlock.error.customPath.description.generic=Wybrałeś własną ścieżkę montowania dla tego sejfu, ale użycie jej nie powiodło się. Powód: %2$s
|
unlock.error.customPath.description.generic=Wybrałeś własną ścieżkę montowania dla tego sejfu, ale użycie jej nie powiodło się. Powód: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Nie można odblokować sejfu
|
unlock.error.restartRequired.message=Nie udało się odblokować sejfu
|
||||||
unlock.error.fuseRestartRequired.description=Zmień typ udziału w opcjach sejfu lub zrestartuj Cryptomator.
|
unlock.error.restartRequired.description=Zmień typ woluminu w opcjach sejfu lub zrestartuj Cryptomator.
|
||||||
unlock.error.title=Błąd odblokowywania "%s"
|
unlock.error.title=Błąd odblokowywania "%s"
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Brak dostępu do klucza urządzenia
|
hub.noKeychain.message=Brak dostępu do klucza urządzenia
|
||||||
@@ -157,17 +158,22 @@ hub.receive.message=Przetwarzanie odpowiedzi…
|
|||||||
hub.receive.description=Cryptomator odbiera i przetwarza odpowiedź z Huba, proszę czekać.
|
hub.receive.description=Cryptomator odbiera i przetwarza odpowiedź z Huba, proszę czekać.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Nowe Urządzenie
|
hub.register.message=Nowe Urządzenie
|
||||||
hub.register.description=To jest pierwszy dostęp do Huba z tego urządzenia. Proszę autoryzować go za pomocą klucza konta.
|
hub.register.description=To jest pierwszy dostęp do Huba z tego urządzenia. Proszę je zarejestrować za pomocą klucza konta.
|
||||||
hub.register.nameLabel=Nazwa urządzenia
|
hub.register.nameLabel=Nazwa urządzenia
|
||||||
hub.register.invalidAccountKeyLabel=Błędny klucz konta
|
hub.register.invalidAccountKeyLabel=Błędny klucz konta
|
||||||
hub.register.occupiedMsg=Nazwa jest już używana
|
hub.register.registerBtn=Zarejestruj
|
||||||
hub.register.registerBtn=Zatwierdź
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Nazwa jest już używana
|
||||||
|
hub.register.legacy.description=To jest pierwszy dostęp do Huba z tego urządzenia. Proszę je zarejestrować.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Urządzenie nazwano
|
hub.registerSuccess.message=Urządzenie zarejestrowane
|
||||||
hub.registerSuccess.description=Aby dostać się do sejfu, Twoje urządzenie musi być autoryzowane przez właściciela sejfu.
|
hub.registerSuccess.description=Twoje urządzenie zostało pomyślnie zarejestrowane. Możesz teraz odblokować sejf.
|
||||||
|
hub.registerSuccess.unlockBtn=Odblokuj
|
||||||
|
hub.registerSuccess.legacy.description=Aby dostać się do sejfu, Twoje urządzenie musi zostać dodatkowo autoryzowane przez właściciela sejfu.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Nazwanie urządzenia nie powiodło się
|
hub.registerFailed.message=Rejestracja urządzenia nie powiodła się
|
||||||
hub.registerFailed.description=Wystąpił błąd podczas ustawiania nazwy. Aby uzyskać więcej szczegółów, zobacz logi aplikacji.
|
hub.registerFailed.description.generic=Wystąpił błąd w procesie rejestracji. Aby uzyskać więcej szczegółów, sprawdź dziennik aplikacji.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=To urządzenie jest już zarejestrowane dla innego użytkownika. Spróbuj zmienić konto użytkownika lub użyć innego urządzenia.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Brak dostępu
|
hub.unauthorized.message=Brak dostępu
|
||||||
hub.unauthorized.description=Twoje urządzenie nie zostało jeszcze upoważnione do dostępu do tego sejfu. Poproś właściciela sejfu o autoryzację.
|
hub.unauthorized.description=Twoje urządzenie nie zostało jeszcze upoważnione do dostępu do tego sejfu. Poproś właściciela sejfu o autoryzację.
|
||||||
@@ -314,6 +320,12 @@ preferences.updates.currentVersion=Obecna wersja: %s
|
|||||||
preferences.updates.autoUpdateCheck=Automatycznie sprawdzaj aktualizacje
|
preferences.updates.autoUpdateCheck=Automatycznie sprawdzaj aktualizacje
|
||||||
preferences.updates.checkNowBtn=Sprawdź teraz
|
preferences.updates.checkNowBtn=Sprawdź teraz
|
||||||
preferences.updates.updateAvailable=Dostępna jest aktualizacja do wersji %s.
|
preferences.updates.updateAvailable=Dostępna jest aktualizacja do wersji %s.
|
||||||
|
preferences.updates.lastUpdateCheck=Ostatnio sprawdzano: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=nigdy
|
||||||
|
preferences.updates.lastUpdateCheck.recently=niedawno
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s dni temu
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s godzin temu
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Wesprzyj nas
|
preferences.contribute=Wesprzyj nas
|
||||||
preferences.contribute.registeredFor=Certyfikat darczyńcy zarejestrowany dla %s
|
preferences.contribute.registeredFor=Certyfikat darczyńcy zarejestrowany dla %s
|
||||||
@@ -386,6 +398,7 @@ main.vaultDetail.unlockBtn=Odblokuj…
|
|||||||
main.vaultDetail.unlockNowBtn=Odblokuj teraz
|
main.vaultDetail.unlockNowBtn=Odblokuj teraz
|
||||||
main.vaultDetail.optionsBtn=Ustawienia sejfu
|
main.vaultDetail.optionsBtn=Ustawienia sejfu
|
||||||
main.vaultDetail.passwordSavedInKeychain=Hasło zapisane
|
main.vaultDetail.passwordSavedInKeychain=Hasło zapisane
|
||||||
|
main.vaultDetail.share=Udostępnij…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=ODBLOKOWANE
|
main.vaultDetail.unlockedStatus=ODBLOKOWANE
|
||||||
main.vaultDetail.accessLocation=Zawartość Twojego sejfu dostępna jest tutaj:
|
main.vaultDetail.accessLocation=Zawartość Twojego sejfu dostępna jest tutaj:
|
||||||
@@ -451,7 +464,7 @@ vaultOptions.mount.mountPoint.custom=Użyj wybranego katalogu
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Wybierz…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Wybierz…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Wybierz katalog
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Wybierz katalog
|
||||||
vaultOptions.mount.volumeType.default=Domyślny (%s)
|
vaultOptions.mount.volumeType.default=Domyślny (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Aby użyć tego typu udziału, należy zrestartować Cryptomator.
|
vaultOptions.mount.volumeType.restartRequired=Aby użyć woluminu tego typu, należy zrestartować Cryptomator.
|
||||||
vaultOptions.mount.volume.tcp.port=Port TCP
|
vaultOptions.mount.volume.tcp.port=Port TCP
|
||||||
vaultOptions.mount.volume.type=Typ udziału
|
vaultOptions.mount.volume.type=Typ udziału
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -523,4 +536,27 @@ updateReminder.message=Sprawdzić aktualizacje?
|
|||||||
updateReminder.description=Bądź na bieżąco z nowymi funkcjami, poprawkami błędów i poprawkami bezpieczeństwa. Zalecamy automatyczne sprawdzanie aktualizacji.
|
updateReminder.description=Bądź na bieżąco z nowymi funkcjami, poprawkami błędów i poprawkami bezpieczeństwa. Zalecamy automatyczne sprawdzanie aktualizacji.
|
||||||
updateReminder.notNow=Nie teraz
|
updateReminder.notNow=Nie teraz
|
||||||
updateReminder.yesOnce=Tak, raz
|
updateReminder.yesOnce=Tak, raz
|
||||||
updateReminder.yesAutomatically=Tak, automatycznie
|
updateReminder.yesAutomatically=Tak, automatycznie
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Otwórz ustawienia
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Udostępnij sejf
|
||||||
|
shareVault.message=Czy chcesz udostępnić swój sejf innym?
|
||||||
|
shareVault.description=Zawsze zachowuj ostrożność udostępniając swój sejf innym. W skrócie, wykonaj następujące kroki:
|
||||||
|
shareVault.instruction.1=1. Udziel dostępu do zaszyfrowanego sejfu przez chmurę.
|
||||||
|
shareVault.instruction.2=2. Udostępnij hasło sejfu w bezpieczny sposób.
|
||||||
|
shareVault.remarkBestPractices=Aby uzyskać więcej informacji, zapoznaj się z propozycjami najlepszych praktyk zawartymi w naszej dokumentacji.
|
||||||
|
shareVault.docsTooltip=Otwórz dokumentację, aby dowiedzieć się więcej o udostępnianiu sejfów.
|
||||||
|
shareVault.hubAd.description=Bezpieczny sposób pracy w zespołach
|
||||||
|
shareVault.hubAd.keyManagement=• Zero-knowledgeowe zarządzanie kluczami
|
||||||
|
shareVault.hubAd.authentication=• Silne uwierzytelnianie
|
||||||
|
shareVault.hubAd.encryption=Szyfrowanie end-to-end
|
||||||
|
shareVault.visitHub=Odwiedź Cryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Jak udostępnić sejf Hub
|
||||||
|
shareVault.hub.description=Aby udostępnić zawartość sejfu innemu członkowi zespołu, musisz wykonać dwa kroki:
|
||||||
|
shareVault.hub.instruction.1=1. Udziel dostępu do zaszyfrowanego sejfu przez miejsce w chmurze.
|
||||||
|
shareVault.hub.instruction.2=2. Udziel dostępu członkowi zespołu w Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Otwórz Cryptomator Hub
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Escolha um nome para o cofre
|
|||||||
addvaultwizard.new.namePrompt=Nome do Cofre
|
addvaultwizard.new.namePrompt=Nome do Cofre
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Onde deve o Cryptomator armazenar os arquivos criptografados do cofre?
|
addvaultwizard.new.locationInstruction=Onde deve o Cryptomator armazenar os arquivos criptografados do cofre?
|
||||||
|
addvaultwizard.new.locationLoading=Verificando o sistema de ficheiros local para directórios de armazenamento predefinidos na nuvem…
|
||||||
addvaultwizard.new.locationLabel=Local de armazenamento
|
addvaultwizard.new.locationLabel=Local de armazenamento
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Outro Local
|
addvaultwizard.new.directoryPickerLabel=Outro Local
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=O arquivo oculto temporário
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Não foi possível montar o seu cofre no caminho "%s". Tente novamente ou escolha um caminho diferente.
|
unlock.error.customPath.description.couldNotBeCleaned=Não foi possível montar o seu cofre no caminho "%s". Tente novamente ou escolha um caminho diferente.
|
||||||
unlock.error.customPath.description.notEmptyDir=O caminho de montagem personalizado "%s" não é uma pasta vazia. Escolha uma pasta vazia e tente novamente.
|
unlock.error.customPath.description.notEmptyDir=O caminho de montagem personalizado "%s" não é uma pasta vazia. Escolha uma pasta vazia e tente novamente.
|
||||||
unlock.error.customPath.description.generic=Selecionou um caminho de montagem personalizado para este cofre, mas o seu uso falhou com a mensagem: %2$s
|
unlock.error.customPath.description.generic=Selecionou um caminho de montagem personalizado para este cofre, mas o seu uso falhou com a mensagem: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Não é possível desbloquear o cofre
|
unlock.error.restartRequired.message=Não foi possível desbloquear o cofre
|
||||||
unlock.error.fuseRestartRequired.description=Altere o tipo de volume nas opções do cofre ou reinicie o Cryptomator.
|
unlock.error.restartRequired.description=Altere o tipo de volume nas opções do cofre ou reinicie o Cryptomator.
|
||||||
unlock.error.title=Desbloqueio "%s" falhou
|
unlock.error.title=Desbloqueio "%s" falhou
|
||||||
## Hub
|
## Hub
|
||||||
hub.noKeychain.message=Não foi possível aceder à chave do dispositivo
|
hub.noKeychain.message=Não foi possível aceder à chave do dispositivo
|
||||||
@@ -160,14 +161,19 @@ hub.register.message=Novo dispositivo
|
|||||||
hub.register.description=Este é o primeiro acesso do Hub a partir deste dispositivo. Por favor, autorize-o usando a sua chave de conta.
|
hub.register.description=Este é o primeiro acesso do Hub a partir deste dispositivo. Por favor, autorize-o usando a sua chave de conta.
|
||||||
hub.register.nameLabel=Nome do dispositivo
|
hub.register.nameLabel=Nome do dispositivo
|
||||||
hub.register.invalidAccountKeyLabel=Chave da conta inválida
|
hub.register.invalidAccountKeyLabel=Chave da conta inválida
|
||||||
hub.register.occupiedMsg=Nome já utilizado
|
hub.register.registerBtn=Registo
|
||||||
hub.register.registerBtn=Confirmar
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Nome já em utilização
|
||||||
|
hub.register.legacy.description=Este é o primeiro acesso ao Hub a partir deste dispositivo. Por favor, registe-o.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Nome do dispositivo
|
hub.registerSuccess.message=Dispositivo registado
|
||||||
hub.registerSuccess.description=Para aceder ao cofre, o seu dispositivo precisa de ser autorizado pelo proprietário do cofre.
|
hub.registerSuccess.description=O seu dispositivo foi registado com sucesso. Pode continuar e desbloquear o cofre.
|
||||||
|
hub.registerSuccess.unlockBtn=Desbloquear
|
||||||
|
hub.registerSuccess.legacy.description=Para aceder ao cofre, o seu dispositivo precisa de ser autorizado pelo proprietário do cofre.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Falha ao nomear o dispositivo
|
hub.registerFailed.message=Registo do dispositivo falhou
|
||||||
hub.registerFailed.description=Houve um erro no processo de nomear. Para mais detalhes, verifique o log da aplicação.
|
hub.registerFailed.description.generic=Ocorreu um erro no processo de registo. Para mais informação, ver os registos da aplicação.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Este dispositivo já está registado para um utilizador diferente. Tente alterar a conta de utilizador ou use um dispositivo diferente.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Acesso negado
|
hub.unauthorized.message=Acesso negado
|
||||||
hub.unauthorized.description=O seu dispositivo ainda não foi autorizado a aceder a este cofre. Peça ao proprietário do cofre para o autorizar.
|
hub.unauthorized.description=O seu dispositivo ainda não foi autorizado a aceder a este cofre. Peça ao proprietário do cofre para o autorizar.
|
||||||
@@ -314,6 +320,14 @@ preferences.updates.currentVersion=Versão atual: %s
|
|||||||
preferences.updates.autoUpdateCheck=Verificar automaticamente por atualizações
|
preferences.updates.autoUpdateCheck=Verificar automaticamente por atualizações
|
||||||
preferences.updates.checkNowBtn=Verificar Agora
|
preferences.updates.checkNowBtn=Verificar Agora
|
||||||
preferences.updates.updateAvailable=Atualização para a versão %s disponível.
|
preferences.updates.updateAvailable=Atualização para a versão %s disponível.
|
||||||
|
preferences.updates.lastUpdateCheck=Última verificação: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=nunca
|
||||||
|
preferences.updates.lastUpdateCheck.recently=recentemente
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s dias atrás
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s horas atrás
|
||||||
|
preferences.updates.checkFailed=A procura de actualizações falhou. Verifique a sua ligação à Internet ou tente novamente mais tarde.
|
||||||
|
preferences.updates.upToDate=Cryptomator está atualizado.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Apoie-nos
|
preferences.contribute=Apoie-nos
|
||||||
preferences.contribute.registeredFor=Certificado de apoiador registado para %s
|
preferences.contribute.registeredFor=Certificado de apoiador registado para %s
|
||||||
@@ -386,6 +400,7 @@ main.vaultDetail.unlockBtn=Desbloquear…
|
|||||||
main.vaultDetail.unlockNowBtn=Desbloquear agora
|
main.vaultDetail.unlockNowBtn=Desbloquear agora
|
||||||
main.vaultDetail.optionsBtn=Opções do Cofre
|
main.vaultDetail.optionsBtn=Opções do Cofre
|
||||||
main.vaultDetail.passwordSavedInKeychain=Palavra-passe guardada
|
main.vaultDetail.passwordSavedInKeychain=Palavra-passe guardada
|
||||||
|
main.vaultDetail.share=Partilhar…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=DESBLOQUEADO
|
main.vaultDetail.unlockedStatus=DESBLOQUEADO
|
||||||
main.vaultDetail.accessLocation=O conteúdo do seu cofre está acessível aqui:
|
main.vaultDetail.accessLocation=O conteúdo do seu cofre está acessível aqui:
|
||||||
@@ -451,7 +466,7 @@ vaultOptions.mount.mountPoint.custom=Usar diretório escolhido
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Escolher um diretório
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Escolher um diretório
|
||||||
vaultOptions.mount.volumeType.default=Predefinição (%1$s)
|
vaultOptions.mount.volumeType.default=Predefinição (%1$s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Para usar este tipo de volume, o Cryptomator precisa de ser reiniciado.
|
vaultOptions.mount.volumeType.restartRequired=Para usar este tipo de volume, o Cryptomator precisa de ser reiniciado.
|
||||||
vaultOptions.mount.volume.tcp.port=Porta TCP
|
vaultOptions.mount.volume.tcp.port=Porta TCP
|
||||||
vaultOptions.mount.volume.type=Tipo de Volume
|
vaultOptions.mount.volume.type=Tipo de Volume
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -523,4 +538,30 @@ updateReminder.message=Verificar atualizações?
|
|||||||
updateReminder.description=Fique atualizado com novos recursos, correções de erros e melhorias de segurança. Recomendamos verificar automaticamente se há atualizações.
|
updateReminder.description=Fique atualizado com novos recursos, correções de erros e melhorias de segurança. Recomendamos verificar automaticamente se há atualizações.
|
||||||
updateReminder.notNow=Agora não
|
updateReminder.notNow=Agora não
|
||||||
updateReminder.yesOnce=Sim, Uma Vez
|
updateReminder.yesOnce=Sim, Uma Vez
|
||||||
updateReminder.yesAutomatically=Sim, Automaticamente
|
updateReminder.yesAutomatically=Sim, Automaticamente
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Aviso de descontinuação
|
||||||
|
dokanySupportEnd.message=Suporte termina para o Dokany
|
||||||
|
dokanySupportEnd.description=O tipo de volume Dokany não é mais suportado pelo Cryptomator. As configurações serão ajustadas para usar o tipo de volume padrão por agora. Pode ver o tipo padrão nas preferências.
|
||||||
|
dokanySupportEnd.preferencesBtn=Abrir preferências
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Partilhar cofre
|
||||||
|
shareVault.message=Quer partilhar o seu cofre com outros?
|
||||||
|
shareVault.description=Tenha sempre cuidado ao partilhar o seu cofre com outras pessoas. Resumindo, siga esses passos:
|
||||||
|
shareVault.instruction.1=1. Partilhe o acesso à pasta encriptada do cofre via armazenamento na nuvem.
|
||||||
|
shareVault.instruction.2=2. Partilhe a palavra-passe do cofre de forma segura.
|
||||||
|
shareVault.remarkBestPractices=Para mais informações, verifique as sugestões de melhores práticas, nos nossos documentos.
|
||||||
|
shareVault.docsTooltip=Abra a documentação para saber mais sobre partilha de cofres.
|
||||||
|
shareVault.hubAd.description=A maneira segura de trabalhar em equipa
|
||||||
|
shareVault.hubAd.keyManagement=• Gestão de chaves de conhecimento-zero
|
||||||
|
shareVault.hubAd.authentication=• Autenticação forte
|
||||||
|
shareVault.hubAd.encryption=• Encriptação ponta-a-ponta
|
||||||
|
shareVault.visitHub=Visitar o Hub Cryptomator
|
||||||
|
|
||||||
|
shareVault.hub.message=Como partilhar um cofre do Hub
|
||||||
|
shareVault.hub.description=Para partilhar o conteúdo do cofre com outro membro da equipa, precisa executar duas etapas:
|
||||||
|
shareVault.hub.instruction.1=1. Partilhe o acesso à pasta encriptada do cofre via armazenamento na nuvem.
|
||||||
|
shareVault.hub.instruction.2=2. Conceder acesso ao membro da equipe no Hub Cryptomator.
|
||||||
|
shareVault.hub.openHub=Abrir Hub do Cryptomator
|
||||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Escolha um nome para o cofre
|
|||||||
addvaultwizard.new.namePrompt=Nome do Cofre
|
addvaultwizard.new.namePrompt=Nome do Cofre
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Onde o Cryptomator deve armazenar os arquivos criptografados do seu cofre?
|
addvaultwizard.new.locationInstruction=Onde o Cryptomator deve armazenar os arquivos criptografados do seu cofre?
|
||||||
|
addvaultwizard.new.locationLoading=Verificando o sistema de arquivos local para diretórios de armazenamento na nuvem padrão…
|
||||||
addvaultwizard.new.locationLabel=Local de armazenamento
|
addvaultwizard.new.locationLabel=Local de armazenamento
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Local Personalizado
|
addvaultwizard.new.directoryPickerLabel=Local Personalizado
|
||||||
@@ -141,8 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=O arquivo oculto e temporári
|
|||||||
unlock.error.customPath.description.couldNotBeCleaned=Seu cofre não pôde ser montado no caminho "%s". Tente novamente ou escolha um caminho diferente.
|
unlock.error.customPath.description.couldNotBeCleaned=Seu cofre não pôde ser montado no caminho "%s". Tente novamente ou escolha um caminho diferente.
|
||||||
unlock.error.customPath.description.notEmptyDir=O caminho de montagem escolhido "%s" não é uma pasta vazia. Escolha uma pasta vazia e tente novamente.
|
unlock.error.customPath.description.notEmptyDir=O caminho de montagem escolhido "%s" não é uma pasta vazia. Escolha uma pasta vazia e tente novamente.
|
||||||
unlock.error.customPath.description.generic=Você selecionou um caminho de montagem personalizado para este cofre, mas falhou com a mensagem: %2$s
|
unlock.error.customPath.description.generic=Você selecionou um caminho de montagem personalizado para este cofre, mas falhou com a mensagem: %2$s
|
||||||
unlock.error.fuseRestartRequired.message=Não foi possível desbloquear o cofre
|
unlock.error.restartRequired.message=Não foi possível desbloquear o cofre
|
||||||
unlock.error.fuseRestartRequired.description=Altere o tipo de volume nas opções do cofre ou reinicie o Cryptomator.
|
unlock.error.restartRequired.description=Altere o tipo de volume nas opções do cofre ou reinicie o Cryptomator.
|
||||||
unlock.error.title=Desbloqueio "%s" falhou
|
unlock.error.title=Desbloqueio "%s" falhou
|
||||||
## Hub
|
## Hub
|
||||||
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
|
||||||
@@ -157,17 +158,22 @@ hub.receive.message=Processando resposta…
|
|||||||
hub.receive.description=Cryptomator está recebendo e processando a resposta do Hub. Por favor, aguarde.
|
hub.receive.description=Cryptomator está recebendo e processando a resposta do Hub. Por favor, aguarde.
|
||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Novo Dispositivo
|
hub.register.message=Novo Dispositivo
|
||||||
hub.register.description=Este é o primeiro acesso do Hub deste dispositivo. Por favor, autorize-o usando sua Chave de Conta.
|
hub.register.description=Este é o primeiro acesso do Hub neste dispositivo. Por favor, registre-o usando sua Chave de Conta.
|
||||||
hub.register.nameLabel=Nome do dispositivo
|
hub.register.nameLabel=Nome do dispositivo
|
||||||
hub.register.invalidAccountKeyLabel=Chave de Conta inválida
|
hub.register.invalidAccountKeyLabel=Chave de Conta inválida
|
||||||
hub.register.occupiedMsg=Este nome já está em uso
|
hub.register.registerBtn=Registrar
|
||||||
hub.register.registerBtn=Confirme
|
### Register Device Legacy
|
||||||
|
hub.register.legacy.occupiedMsg=Este nome já está em uso
|
||||||
|
hub.register.legacy.description=Este é o primeiro acesso do Hub neste dispositivo. Por favor, registre-o.
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Dispositivo nomeado
|
hub.registerSuccess.message=Dispositivo registrado
|
||||||
hub.registerSuccess.description=Para acessar o cofre, seu dispositivo precisa ser autorizado pelo proprietário do cofre.
|
hub.registerSuccess.description=Seu dispositivo foi registrado com sucesso. Agora você pode continuar a desbloquear o cofre.
|
||||||
|
hub.registerSuccess.unlockBtn=Desbloquear
|
||||||
|
hub.registerSuccess.legacy.description=Para acessar o cofre, seu dispositivo precisa ser autorizado pelo proprietário do cofre.
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Falha ao registrar o nome do dispositivo no Hub
|
hub.registerFailed.message=Falha ao registrar o Dispositivo
|
||||||
hub.registerFailed.description=Ocorreu um erro no processo de nomeação do dispositivo junto ao Hub. Para obter mais detalhes, consulte os registros informativos — log's — do aplicativo.
|
hub.registerFailed.description.generic=Um erro ocorreu no processo de registro. Para mais detalhes, verifique o log da aplicação.
|
||||||
|
hub.registerFailed.description.deviceAlreadyExists=Este dispositivo já está registrado para um usuário diferente. Tente alterar a conta de usuário ou use um dispositivo diferente.
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Acesso negado
|
hub.unauthorized.message=Acesso negado
|
||||||
hub.unauthorized.description=Seu dispositivo ainda não foi autorizado a acessar este cofre. Peça ao proprietário do cofre para autorizá-lo.
|
hub.unauthorized.description=Seu dispositivo ainda não foi autorizado a acessar este cofre. Peça ao proprietário do cofre para autorizá-lo.
|
||||||
@@ -314,6 +320,14 @@ preferences.updates.currentVersion=Versão atual: %s
|
|||||||
preferences.updates.autoUpdateCheck=Buscar atualizações automaticamente
|
preferences.updates.autoUpdateCheck=Buscar atualizações automaticamente
|
||||||
preferences.updates.checkNowBtn=Buscar Agora
|
preferences.updates.checkNowBtn=Buscar Agora
|
||||||
preferences.updates.updateAvailable=Atualizar para versão %s disponível.
|
preferences.updates.updateAvailable=Atualizar para versão %s disponível.
|
||||||
|
preferences.updates.lastUpdateCheck=Última verificação: %s
|
||||||
|
preferences.updates.lastUpdateCheck.never=nunca
|
||||||
|
preferences.updates.lastUpdateCheck.recently=recentemente
|
||||||
|
preferences.updates.lastUpdateCheck.daysAgo=%s dia atrás
|
||||||
|
preferences.updates.lastUpdateCheck.hoursAgo=%s horas atrás
|
||||||
|
preferences.updates.checkFailed=Procurando por atualizações falhou. Por favor, verifique sua conexão com a internet ou tente novamente mais tarde.
|
||||||
|
preferences.updates.upToDate=O Cryptomator está atualizado.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Nos Apoie
|
preferences.contribute=Nos Apoie
|
||||||
preferences.contribute.registeredFor=Certificado de apoiador registrado para %s
|
preferences.contribute.registeredFor=Certificado de apoiador registrado para %s
|
||||||
@@ -365,7 +379,7 @@ main.closeBtn.tooltip=Fechar
|
|||||||
main.minimizeBtn.tooltip=Minimizar
|
main.minimizeBtn.tooltip=Minimizar
|
||||||
main.preferencesBtn.tooltip=Preferências
|
main.preferencesBtn.tooltip=Preferências
|
||||||
main.debugModeEnabled.tooltip=Modo de depuração ativado
|
main.debugModeEnabled.tooltip=Modo de depuração ativado
|
||||||
main.supporterCertificateMissing.tooltip=Por favor doe
|
main.supporterCertificateMissing.tooltip=Apoie-nos
|
||||||
## Vault List
|
## Vault List
|
||||||
main.vaultlist.emptyList.onboardingInstruction=Clique aqui para adicionar um cofre
|
main.vaultlist.emptyList.onboardingInstruction=Clique aqui para adicionar um cofre
|
||||||
main.vaultlist.contextMenu.remove=Remover…
|
main.vaultlist.contextMenu.remove=Remover…
|
||||||
@@ -386,6 +400,7 @@ main.vaultDetail.unlockBtn=Desbloquear…
|
|||||||
main.vaultDetail.unlockNowBtn=Desbloquear Agora
|
main.vaultDetail.unlockNowBtn=Desbloquear Agora
|
||||||
main.vaultDetail.optionsBtn=Opções de Cofre
|
main.vaultDetail.optionsBtn=Opções de Cofre
|
||||||
main.vaultDetail.passwordSavedInKeychain=Senha salva
|
main.vaultDetail.passwordSavedInKeychain=Senha salva
|
||||||
|
main.vaultDetail.share=Compartilhar…
|
||||||
### Unlocked
|
### Unlocked
|
||||||
main.vaultDetail.unlockedStatus=DESBLOQUEADO
|
main.vaultDetail.unlockedStatus=DESBLOQUEADO
|
||||||
main.vaultDetail.accessLocation=O conteúdo do seu cofre está disponível aqui:
|
main.vaultDetail.accessLocation=O conteúdo do seu cofre está disponível aqui:
|
||||||
@@ -451,7 +466,7 @@ vaultOptions.mount.mountPoint.custom=Usar diretório escolhido
|
|||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
|
||||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Escolha um diretório
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Escolha um diretório
|
||||||
vaultOptions.mount.volumeType.default=Padrão (%s)
|
vaultOptions.mount.volumeType.default=Padrão (%s)
|
||||||
vaultOptions.mount.volumeType.fuseRestartRequired=Para usar esse tipo de volume, o Cryptomator precisa ser reiniciado.
|
vaultOptions.mount.volumeType.restartRequired=Para usar esse tipo de volume, o Cryptomator precisa ser reiniciado.
|
||||||
vaultOptions.mount.volume.tcp.port=Porta TCP
|
vaultOptions.mount.volume.tcp.port=Porta TCP
|
||||||
vaultOptions.mount.volume.type=Tipo de Volume
|
vaultOptions.mount.volume.type=Tipo de Volume
|
||||||
## Master Key
|
## Master Key
|
||||||
@@ -523,4 +538,30 @@ updateReminder.message=Verificar Atualizações?
|
|||||||
updateReminder.description=Mantenha-se atualizado com novos recursos, correções de bugs e melhoramentos de segurança. Recomendamos verificar atualizações automaticamente.
|
updateReminder.description=Mantenha-se atualizado com novos recursos, correções de bugs e melhoramentos de segurança. Recomendamos verificar atualizações automaticamente.
|
||||||
updateReminder.notNow=Agora Não
|
updateReminder.notNow=Agora Não
|
||||||
updateReminder.yesOnce=Sim, Uma Vez
|
updateReminder.yesOnce=Sim, Uma Vez
|
||||||
updateReminder.yesAutomatically=Sim, Automaticamente
|
updateReminder.yesAutomatically=Sim, Automaticamente
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.title=Aviso de descontinuação
|
||||||
|
dokanySupportEnd.message=Fim do suporte para o Dokany
|
||||||
|
dokanySupportEnd.description=O volume do tipo Dokany não é mais suportado pelo Cryptomator. Suas configurações serão ajustadas para usar o tipo de volume padrão agora. Você pode ver o tipo padrão nas preferências.
|
||||||
|
dokanySupportEnd.preferencesBtn=Abrir Preferências
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
shareVault.title=Compartilhar Cofre
|
||||||
|
shareVault.message=Gostaria de compartilhar o seu cofre com outras pessoas?
|
||||||
|
shareVault.description=Sempre tenha cuidado ao compartilhar seu cofre com outras pessoas. Em resumo, siga esses passos:
|
||||||
|
shareVault.instruction.1=1. Compartilhe o acesso da pasta do cofre criptografado via armazenamento na nuvem.
|
||||||
|
shareVault.instruction.2=2. Compartilhe a senha do cofre de forma segura.
|
||||||
|
shareVault.remarkBestPractices=Para mais informações, confira as sugestões de melhores práticas em nossos documentos.
|
||||||
|
shareVault.docsTooltip=Abra a documentação para aprender mais sobre compartilhamento de cofres.
|
||||||
|
shareVault.hubAd.description=A maneira segura de trabalhar em equipes
|
||||||
|
shareVault.hubAd.keyManagement=• Gerenciamento de chaves de Zero-Conhecimento
|
||||||
|
shareVault.hubAd.authentication=• Autenticação forte
|
||||||
|
shareVault.hubAd.encryption=• Criptografia de ponta-a-ponta
|
||||||
|
shareVault.visitHub=Visite o Cryptomator Hub
|
||||||
|
|
||||||
|
shareVault.hub.message=Como compartilhar um cofre do Hub
|
||||||
|
shareVault.hub.description=Para compartilhar o conteúdo do cofre com outro membro da equipe, você precisa executar duas etapas:
|
||||||
|
shareVault.hub.instruction.1=1. Compartilhe o acesso da pasta do cofre criptografado via armazenamento na nuvem.
|
||||||
|
shareVault.hub.instruction.2=2. Conceda acesso ao membro da equipe no Cryptomator Hub.
|
||||||
|
shareVault.hub.openHub=Abrir o Cryptomator Hub
|
||||||
@@ -155,14 +155,10 @@ hub.receive.description=In acest moment Criptomatorul primește și procesează
|
|||||||
### Register Device
|
### Register Device
|
||||||
hub.register.message=Dispozitiv nou
|
hub.register.message=Dispozitiv nou
|
||||||
hub.register.nameLabel=Numele dispozitivului
|
hub.register.nameLabel=Numele dispozitivului
|
||||||
hub.register.occupiedMsg=Acest nume este deja utilizat
|
### Register Device Legacy
|
||||||
hub.register.registerBtn=Confirmați
|
|
||||||
### Registration Success
|
### Registration Success
|
||||||
hub.registerSuccess.message=Dispozitiv numit
|
hub.registerSuccess.unlockBtn=Deblocați
|
||||||
hub.registerSuccess.description=Pentru a accesa acest seif, dispozitivul dvs. trebuie să fie autorizat de proprietarul seifului.
|
|
||||||
### Registration Failed
|
### Registration Failed
|
||||||
hub.registerFailed.message=Numirea dispozitivului a eșuat
|
|
||||||
hub.registerFailed.description=O eroare a fost întâmpinata în procesul de denumire. Pentru mai multe detalii, verificați jurnalul aplicației.
|
|
||||||
### Unauthorized
|
### Unauthorized
|
||||||
hub.unauthorized.message=Acces respins
|
hub.unauthorized.message=Acces respins
|
||||||
hub.unauthorized.description=Dispozitivul dvs. nu a fost autorizat să acceseze acest seif. Solicitați proprietarului seifului să va autorizeze accesul.
|
hub.unauthorized.description=Dispozitivul dvs. nu a fost autorizat să acceseze acest seif. Solicitați proprietarului seifului să va autorizeze accesul.
|
||||||
@@ -307,6 +303,7 @@ preferences.updates.currentVersion=Versiunea actuală: %s
|
|||||||
preferences.updates.autoUpdateCheck=Verificare automată actualizări
|
preferences.updates.autoUpdateCheck=Verificare automată actualizări
|
||||||
preferences.updates.checkNowBtn=Verifică acum
|
preferences.updates.checkNowBtn=Verifică acum
|
||||||
preferences.updates.updateAvailable=Actualizare la versiunea %s disponibilă.
|
preferences.updates.updateAvailable=Actualizare la versiunea %s disponibilă.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Susțineți-ne
|
preferences.contribute=Susțineți-ne
|
||||||
preferences.contribute.registeredFor=Certificat de suporter înregistrat pentru %s
|
preferences.contribute.registeredFor=Certificat de suporter înregistrat pentru %s
|
||||||
@@ -511,4 +508,9 @@ updateReminder.message=Verificați dacă există actualizări?
|
|||||||
updateReminder.description=Rămâneți la curent cu noi caracteristici, remedieri ale erorilor și îmbunătățiri de securitate. Vă recomandăm să verificați automat actualizările.
|
updateReminder.description=Rămâneți la curent cu noi caracteristici, remedieri ale erorilor și îmbunătățiri de securitate. Vă recomandăm să verificați automat actualizările.
|
||||||
updateReminder.notNow=Nu acum
|
updateReminder.notNow=Nu acum
|
||||||
updateReminder.yesOnce=Da, o dată
|
updateReminder.yesOnce=Da, o dată
|
||||||
updateReminder.yesAutomatically=Da, automat
|
updateReminder.yesAutomatically=Da, automat
|
||||||
|
|
||||||
|
#Dokany Support End
|
||||||
|
dokanySupportEnd.preferencesBtn=Deschideţi preferinţele
|
||||||
|
|
||||||
|
# Share Vault
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user