Compare commits

..

2 Commits

Author SHA1 Message Date
Armin Schrenk
a1f58ffb0e Use the javaimage to extract wixhelper 2026-02-18 15:10:22 +01:00
Armin Schrenk
f21fae5b47 temurin 2026-02-18 14:46:46 +01:00
105 changed files with 1369 additions and 2672 deletions

View File

@@ -14,9 +14,6 @@ updates:
versions: ["2.0.1.MR"]
- dependency-name: "org.openjfx:*"
update-types: ["version-update:semver-major"]
# due to https://github.com/fabriciorby/maven-surefire-junit5-tree-reporter/issues/68
- dependency-name: "org.apache.maven.plugins:maven-surefire-plugin"
versions: [ "3.5.4", "3.5.5" ]
groups:
java-test-dependencies:
patterns:

View File

@@ -8,10 +8,6 @@ on:
version:
description: 'Version'
required: false
create-pr:
description: 'Create a PR for aur-bin repo'
type: boolean
default: false
push:
branches-ignore:
- 'dependabot/**'
@@ -35,22 +31,18 @@ jobs:
name: Build AppImage
runs-on: ${{ matrix.os }}
needs: [get-version]
env:
SEMVER_STR: ${{ needs.get-version.outputs.semVerStr }}
SEMVER_NUM: ${{ needs.get-version.outputs.semVerNum }}
REV_NUM: ${{ needs.get-version.outputs.revNum }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
arch: x86_64
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-x64_bin-jmods.zip'
openjfx-sha: 'e0a9c29d8cf3af9b8b48848b43f87b5785bc107c53a951b19668ce05842bba1b'
appimage-suffix: x86_64
openjfx-url: 'https://download2.gluonhq.com/openjfx/25/openjfx-25_linux-x64_bin-jmods.zip'
openjfx-sha: '96e520f48610d8ffb94ca30face1f11ffe8a977ddc1c4ff80b1a9e9f048bd94e'
- os: ubuntu-24.04-arm
arch: aarch64
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-aarch64_bin-jmods.zip'
openjfx-sha: 'c3408f818693cce09e59829a8e862a82c7695fdfcd585c41cfd527f5fc3fe646'
appimage-suffix: aarch64
openjfx-url: 'https://download2.gluonhq.com/openjfx/25/openjfx-25_linux-aarch64_bin-jmods.zip'
openjfx-sha: '9ad4ca7b769ca4ee6419f1e99143dd6ff812f8be4fddb46a7d7cacbeea148af4'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Java
@@ -63,7 +55,7 @@ jobs:
- name: Download OpenJFX jmods
id: download-jmods
run: |
curl --silent --fail-with-body --proto "=https" -L ${{ matrix.openjfx-url }} -o openjfx-jmods.zip
curl -L ${{ matrix.openjfx-url }} -o openjfx-jmods.zip
echo "${{ matrix.openjfx-sha }} openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods
unzip -j openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
@@ -81,7 +73,7 @@ jobs:
exit 1
fi
- name: Set version
run : mvn versions:set -DnewVersion="$SEMVER_STR"
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
- name: Run maven
run: mvn -B clean package -Plinux -DskipTests
- name: Patch target dir
@@ -102,15 +94,13 @@ jobs:
${JAVA_HOME}/bin/jlink
--verbose
--output runtime
--module-path "${JMOD_PATHS}"
--module-path "${{ steps.jep-493-check.outputs.jmod_paths }}"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net,java.compiler
--strip-native-commands
--no-header-files
--no-man-pages
--strip-debug
--compress zip-0
env:
JMOD_PATHS: ${{ steps.jep-493-check.outputs.jmod_paths }}
- name: Run jpackage
run: >
${JAVA_HOME}/bin/jpackage
@@ -124,12 +114,12 @@ jobs:
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--app-version "${SEMVER_NUM}.${REV_NUM}"
--app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}"
--java-options "--enable-preview"
--java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator"
--java-options "-Xss5m"
--java-options "-Xmx256m"
--java-options "-Dcryptomator.appVersion=\"${SEMVER_STR}\""
--java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\""
--java-options "-Dfile.encoding=\"utf-8\""
--java-options "-Djava.net.useSystemProxies=true"
--java-options "-Dcryptomator.adminConfigPath=\"/etc/cryptomator/config.properties\""
@@ -140,7 +130,7 @@ jobs:
--java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/.local/share/Cryptomator/mnt\""
--java-options "-Dcryptomator.showTrayIcon=true"
--java-options "-Dcryptomator.integrationsLinux.trayIconsDir=\"@{appdir}/usr/share/icons/hicolor/symbolic/apps\""
--java-options "-Dcryptomator.buildNumber=\"appimage-${REV_NUM}\""
--java-options "-Dcryptomator.buildNumber=\"appimage-${{ needs.get-version.outputs.revNum }}\""
--java-options "-Dcryptomator.networking.truststore.p12Path=\"/etc/cryptomator/certs.p12\""
--java-options "-XX:ErrorFile=/cryptomator/cryptomator_crash.log"
--resource-dir dist/linux/resources
@@ -165,7 +155,7 @@ jobs:
ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun
- name: Download AppImageKit
run: |
curl --silent --fail-with-body --proto "=https" -L "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${{ matrix.arch }}.AppImage" -o appimagetool.AppImage
curl -L https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${{ matrix.appimage-suffix }}.AppImage -o appimagetool.AppImage
chmod +x appimagetool.AppImage
./appimagetool.AppImage --appimage-extract
- name: Prepare GPG-Agent for signing with key 615D449FE6E6A235
@@ -177,17 +167,17 @@ jobs:
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Build AppImage
run: >
./squashfs-root/AppRun Cryptomator.AppDir cryptomator-${SEMVER_STR}-${{ matrix.arch }}.AppImage
-u "gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-${{ matrix.arch }}.AppImage.zsync"
./squashfs-root/AppRun Cryptomator.AppDir cryptomator-${{ needs.get-version.outputs.semVerStr }}-${{ matrix.appimage-suffix }}.AppImage
-u "gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-${{ matrix.appimage-suffix }}.AppImage.zsync"
--sign --sign-key=615D449FE6E6A235
- name: Create detached GPG signatures
run: |
gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-*.AppImage
gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-*.AppImage.zsync
- name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: appimage-${{ matrix.arch }}
name: appimage-${{ matrix.appimage-suffix }}
path: |
cryptomator-*.AppImage
cryptomator-*.AppImage.zsync
@@ -206,77 +196,65 @@ jobs:
create-aur-bin-pr:
name: Create PR for aur-bin repo
if: github.event_name == 'workflow_dispatch' && inputs.create-pr || github.event_name == 'release' && needs.get-version.outputs.versionType == 'stable'
runs-on: ubuntu-latest
needs: [build, get-version]
container:
image: archlinux:base-devel
env:
SEMVER_STR: ${{ needs.get-version.outputs.semVerStr }}
PKGDEST: ${{ github.workspace }}/pkgdest
SRCDEST: ${{ github.workspace }}/srcdest
runs-on: ubuntu-latest
if: github.event_name == 'release' && needs.get-version.outputs.versionType == 'stable'
steps:
- name: Prepare pacman
- name: Download AppImages
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
path: downloads/
merge-multiple: true
- name: Compute sha256 hash of AppImages
id: checksums
run: |
pacman-key --init
pacman-key --populate archlinux
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip github-cli curl pacman-contrib
- name: Checkout cryptomator/aur-bin
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
X64_SHA256=$(sha256sum downloads/cryptomator-*-x86_64.AppImage | cut -d ' ' -f1)
echo "x64-sha256sum=${X64_SHA256}" >> "$GITHUB_OUTPUT"
AARCH64_SHA256=$(sha256sum downloads/cryptomator-*-aarch64.AppImage | cut -d ' ' -f1)
echo "aarch64-sha256sum=${AARCH64_SHA256}" >> "$GITHUB_OUTPUT"
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: 'cryptomator/aur-bin'
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Create build user
- name: Install dependencies
run: |
useradd -m builder
echo 'builder ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers.d/builder
chown -R builder:builder "$GITHUB_WORKSPACE"
install -d -m 0755 -o builder -g builder "$PKGDEST" "$SRCDEST"
- name: Import Cryptomator release signing key
# try first ubuntu. on failure try openpgp keyservers
run: >
sudo -u builder gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys 58117AFA1F85B3EEC154677D615D449FE6E6A235
|| sudo -u builder gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys 58117AFA1F85B3EEC154677D615D449FE6E6A235
sudo apt-get update
sudo apt-get -y install makepkg pacman-package-manager
- name: Checkout release branch
run: |
git config --global safe.directory '*'
git checkout -b "release/${SEMVER_STR}"
git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
- name: Update build file
run: |
sed -i -e "s|^pkgver=.*$|pkgver=${SEMVER_STR}|" PKGBUILD
sed -i -e 's|^pkgver=.*$|pkgver=${{ needs.get-version.outputs.semVerStr }}|' PKGBUILD
sed -i -e 's|^pkgrel=.*$|pkgrel=1|' PKGBUILD
sudo -u builder updpkgsums
sudo -u builder makepkg --printsrcinfo > .SRCINFO
- name: Build package with makepkg
run: >
sudo -u builder
env PKGDEST="$PKGDEST" SRCDEST="$SRCDEST"
makepkg --syncdeps --cleanbuild --noconfirm --log
sed -i -e "s|^sha256sums_x86_64=.*$|sha256sums_x86_64=('${{ steps.checksums.outputs.x64-sha256sum }}'|" PKGBUILD
sed -i -e "s|^sha256sums_aarch64=.*$|sha256sums_aarch64=('${{ steps.checksums.outputs.aarch64-sha256sum}}'|" PKGBUILD
makepkg --printsrcinfo > .SRCINFO
- name: Commit and push
run: |
git config user.name "cryptobot"
git config user.email "cryptobot@users.noreply.github.com"
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 PKGBUILD .SRCINFO
git commit -m "Prepare release ${SEMVER_STR}"
git stage .
git commit -m "Prepare release ${{needs.get-version.outputs.semVerStr}}"
git push
- name: Create pull request
id: create-pr
run: |
printf "Created by $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" > pr_body.md
PR_URL=$(gh pr create --title "Release ${SEMVER_STR}" --body-file pr_body.md)
echo "url=$PR_URL" >> "$GITHUB_OUTPUT"
printf "> [!IMPORTANT]\n> Todos:\n> - [ ] Update build instructions\n> - [ ] Check for JDK update\n> - [ ] Check for JFX update" > pr_body.md
URL=$(gh pr create --title "Release ${{ needs.get-version.outputs.semVerStr }}" --body-file pr_body.md)
echo "PR_URL=$URL" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'
SLACK_CHANNEL: 'cryptomator-desktop'
SLACK_TITLE: "AUR-bin release PR for ${{ github.event.repository.name }} ${{ needs.get-version.outputs.semVerStr }} created."
SLACK_MESSAGE: "See <${{ steps.create-pr.outputs.url }}|PR> on how to proceed."
SLACK_TITLE: "AUR-bin release PR for ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} created."
SLACK_MESSAGE: "See <${{ steps.create-pr.outputs.PR_URL }}|PR> on how to proceed."
SLACK_FOOTER: false
MSG_MINIMAL: true

95
.github/workflows/aur.yml vendored Normal file
View File

@@ -0,0 +1,95 @@
name: Create PR for AUR
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'
env:
INPUT_TAG: ${{ inputs.tag }}
outputs:
url: ${{ steps.url.outputs.url}}
sha256: ${{ steps.sha256.outputs.sha256}}
steps:
- name: Determine tarball url
id: url
run: |
URL="";
if [[ -n "${INPUT_TAG}" ]]; then
URL="https://github.com/cryptomator/cryptomator/archive/refs/tags/${INPUT_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: sha256
run: |
curl --silent --fail-with-body -L -H "Accept: application/vnd.github+json" ${{ steps.url.outputs.url }} --output cryptomator.tar.gz
TARBALL_SHA256=$(sha256sum cryptomator.tar.gz | cut -d ' ' -f1)
echo "sha256=${TARBALL_SHA256}" >> "$GITHUB_OUTPUT"
aur:
name: Create PR for AUR
runs-on: ubuntu-latest
needs: [tarball, get-version]
env:
AUR_PR_URL: tbd
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: 'cryptomator/aur'
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install makepkg pacman-package-manager
- name: Checkout release branch
run: |
git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
- name: Update build file
run: |
sed -i -e 's|^pkgver=.*$|pkgver=${{ needs.get-version.outputs.semVerStr }}|' PKGBUILD
sed -i -e 's|^pkgrel=.*$|pkgrel=1|' PKGBUILD
sed -i -e "s|^sha256sums=.*$|sha256sums=('${{ needs.tarball.outputs.sha256 }}'|" PKGBUILD
makepkg --printsrcinfo > .SRCINFO
- 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 build instructions\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 "AUR_PR_URL=$PR_URL" >> "$GITHUB_ENV"
env:
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Slack Notification
if: github.event_name == 'release'
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'
SLACK_CHANNEL: 'cryptomator-desktop'
SLACK_TITLE: "AUR release PR created for ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} created."
SLACK_MESSAGE: "See <${{ env.AUR_PR_URL }}|PR> on how to proceed."
SLACK_FOOTER: false
MSG_MINIMAL: true

View File

@@ -49,9 +49,9 @@ jobs:
url="${INPUT_URL}"
echo "fileName=${url##*/}" >> $GITHUB_OUTPUT
- name: Download file
run: curl --silent --fail-with-body --proto "=https" -L "${INPUT_URL}" -o "${{steps.extractName.outputs.fileName}}"
run: curl "${INPUT_URL}" -L -o "${{steps.extractName.outputs.fileName}}" --fail-with-body
- name: Upload artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: ${{ steps.extractName.outputs.fileName }}
path: ${{ steps.extractName.outputs.fileName }}
@@ -63,7 +63,7 @@ jobs:
if: inputs.kaspersky
steps:
- name: Download artifact
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: ${{ needs.download-file.outputs.fileName }}
path: upload
@@ -83,7 +83,7 @@ jobs:
if: inputs.avast
steps:
- name: Download artifact
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: ${{ needs.download-file.outputs.fileName }}
path: upload

View File

@@ -25,10 +25,10 @@ env:
JAVA_DIST: 'temurin'
JAVA_VERSION: '25.0.2+10.0.LTS'
DEB_BUILD_DEPENDS: 'debhelper (>=10), openjdk-25-jdk (>= 25+36), libgtk-3-0 (>= 3.20.0), libxxf86vm1, libgl1'
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-x64_bin-jmods.zip'
OPENJFX_JMODS_AMD64_HASH: 'e0a9c29d8cf3af9b8b48848b43f87b5785bc107c53a951b19668ce05842bba1b'
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_linux-aarch64_bin-jmods.zip'
OPENJFX_JMODS_AARCH64_HASH: 'c3408f818693cce09e59829a8e862a82c7695fdfcd585c41cfd527f5fc3fe646'
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/25/openjfx-25_linux-x64_bin-jmods.zip'
OPENJFX_JMODS_AMD64_HASH: '96e520f48610d8ffb94ca30face1f11ffe8a977ddc1c4ff80b1a9e9f048bd94e'
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/25/openjfx-25_linux-aarch64_bin-jmods.zip'
OPENJFX_JMODS_AARCH64_HASH: '9ad4ca7b769ca4ee6419f1e99143dd6ff812f8be4fddb46a7d7cacbeea148af4'
jobs:
get-version:
@@ -71,11 +71,11 @@ jobs:
- name: Download OpenJFX jmods
id: download-jmods
run: |
curl --silent --fail-with-body --proto "=https" -L ${{ env.OPENJFX_JMODS_AMD64 }} -o openjfx-amd64.zip
curl -L ${{ env.OPENJFX_JMODS_AMD64 }} -o openjfx-amd64.zip
echo "${{ env.OPENJFX_JMODS_AMD64_HASH }} openjfx-amd64.zip" | shasum -a256 --check
mkdir -p jmods/amd64
unzip -j openjfx-amd64.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d jmods/amd64
curl --silent --fail-with-body --proto "=https" -L ${{ env.OPENJFX_JMODS_AARCH64 }} -o openjfx-aarch64.zip
curl -L ${{ env.OPENJFX_JMODS_AARCH64 }} -o openjfx-aarch64.zip
echo "${{ env.OPENJFX_JMODS_AARCH64_HASH }} openjfx-aarch64.zip" | shasum -a256 --check
mkdir -p jmods/aarch64
unzip -j openjfx-aarch64.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d jmods/aarch64
@@ -143,7 +143,7 @@ jobs:
run: |
gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator_*_amd64.deb
- name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: linux-deb-package
path: |

View File

@@ -33,7 +33,7 @@ jobs:
- name: Download source tarball and compute checksum
id: sha512
run: |
curl --silent --fail-with-body --proto "=https" -L -H "Accept: application/vnd.github+json" ${{ steps.url.outputs.url }} --output cryptomator.tar.gz
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:

View File

@@ -1,200 +0,0 @@
name: Build Arch package
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: 'Version'
required: false
create-pr:
description: 'Create a PR for aur repo'
type: boolean
default: false
push:
branches-ignore:
- 'dependabot/**'
paths:
- '.github/workflows/linux-makepkg.yml'
- 'dist/linux/makepkg/**'
- 'dist/linux/common/**'
- 'dist/linux/resources/**'
jobs:
get-version:
uses: ./.github/workflows/get-version.yml
with:
version: ${{ inputs.version }}
makepkg:
name: Build with makepkg
needs: [get-version]
runs-on: ubuntu-latest
container:
image: archlinux:base-devel
env:
PKGDEST: ${{ github.workspace }}/pkgdest
SRCDEST: ${{ github.workspace }}/srcdest
steps:
- name: Prepare pacman
run: |
pacman-key --init
pacman-key --populate archlinux
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: cryptomator
- name: Create build user
run: |
useradd -m builder
echo 'builder ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers.d/builder
chown -R builder:builder "$GITHUB_WORKSPACE"
install -d -m 0755 -o builder -g builder "$PKGDEST" "$SRCDEST"
- name: Prepare PKGBUILD
# cannot use github.workspace due to https://github.com/actions/runner/issues/2058
run: |
export SOURCES="${SOURCES_1}${GITHUB_WORKSPACE}${SOURCES_2}"
envsubst '$PKG_VERSION $PKG_RELEASE $SOURCES $SOURCES_SHA' < cryptomator/dist/linux/makepkg/PKGBUILD.template > PKGBUILD
env:
PKG_VERSION: ${{ needs.get-version.outputs.semVerNum }}
PKG_RELEASE: 1
SOURCES_1: '"${_src_app_dir}::git+file://'
SOURCES_2: '/cryptomator"'
SOURCES_SHA: "'SKIP'"
- name: Build package with makepkg
run: >
sudo -u builder
env PKGDEST="$PKGDEST" SRCDEST="$SRCDEST"
makepkg --syncdeps --cleanbuild --noconfirm --log
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: arch-package
if-no-files-found: error
path: |
${{ env.PKGDEST }}/*.pkg.tar.zst
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: pkgbuild-file
if-no-files-found: error
path: |
cryptomator/dist/linux/makepkg/PKGBUILD.template
create-pr:
name: Create PR for aur repo
if: github.event_name == 'workflow_dispatch' && inputs.create-pr || github.event_name == 'release' && needs.get-version.outputs.versionType == 'stable'
runs-on: ubuntu-latest
needs: [get-version, makepkg]
container:
image: archlinux:base-devel
env:
PKGDEST: ${{ github.workspace }}/pkgdest
SRCDEST: ${{ github.workspace }}/srcdest
steps:
- name: Prepare pacman
run: |
pacman-key --init
pacman-key --populate archlinux
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip github-cli curl
- name: Download source tarball and compute checksum
id: sha256
run: |
URL="https://github.com/cryptomator/cryptomator/archive/refs/tags/${TAG}.tar.gz"
curl --silent --fail-with-body --proto "=https" -L -H "Accept: application/vnd.github+json" ${URL} --output cryptomator.tar.gz
TARBALL_SHA256=$(sha256sum cryptomator.tar.gz | cut -d ' ' -f1)
echo "value=${TARBALL_SHA256}" >> "$GITHUB_OUTPUT"
env:
TAG: ${{ needs.get-version.outputs.semVerStr || github.event.release.tag_name }}
- name: Checkout cryptomator/aur repo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: 'cryptomator/aur'
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Create build user
run: |
useradd -m builder
echo 'builder ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers.d/builder
chown -R builder:builder "$GITHUB_WORKSPACE"
install -d -m 0755 -o builder -g builder "$PKGDEST" "$SRCDEST"
- name: Import Cryptomator release signing key
# try first ubuntu. on failure try openpgp keyservers
run: >
sudo -u builder gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys 58117AFA1F85B3EEC154677D615D449FE6E6A235
|| sudo -u builder gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys 58117AFA1F85B3EEC154677D615D449FE6E6A235
- name: Checkout release branch
run: |
git config --global safe.directory '*'
git checkout -b release/${VERSION}
env:
VERSION: ${{ needs.get-version.outputs.semVerStr }}
- name: Determine pkgrel
id: pkgrel
run: |
TARGET_VERSION='${{ needs.get-version.outputs.semVerStr }}'
CURRENT_VERSION="$(sed -nE 's/^pkgver=(.*)$/\1/p' PKGBUILD | head -n1)"
CURRENT_REL="$(sed -nE 's/^pkgrel=([0-9]+).*$/\1/p' PKGBUILD | head -n1)"
if [[ "$CURRENT_VERSION" == "$TARGET_VERSION" && "$CURRENT_REL" =~ ^[0-9]+$ ]]; then
NEXT_REL=$((CURRENT_REL + 1))
else
NEXT_REL=1
fi
echo "value=${NEXT_REL}" >> "$GITHUB_OUTPUT"
echo "dist-version=${VERSION}-${NEXT_REL}" >> "$GITHUB_OUTPUT"
env:
VERSION: ${{ needs.get-version.outputs.semVerStr }}
- name: Download PKGBUILD template
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
with:
name: pkgbuild-file
- name: Prepare PKGBUILD
run: |
envsubst '$PKG_VERSION $PKG_RELEASE $SOURCES $SOURCES_SHA' < PKGBUILD.template > PKGBUILD
sudo -u builder makepkg --printsrcinfo > .SRCINFO
env:
PKG_VERSION: ${{ needs.get-version.outputs.semVerNum }}
PKG_RELEASE: ${{ steps.pkgrel.outputs.value }}
SOURCES: |-
"cryptomator-${pkgver//_/-}.tar.gz::https://github.com/cryptomator/cryptomator/archive/refs/tags/${pkgver//_/-}.tar.gz"
"cryptomator-${pkgver//_/-}.tar.gz.asc::https://github.com/cryptomator/cryptomator/releases/download/${pkgver//_/-}/cryptomator-${pkgver//_/-}.tar.gz.asc"
SOURCES_SHA: |-
'${{steps.sha256.outputs.value}}'
'SKIP'
- name: Build package with makepkg
run: >
sudo -u builder
env PKGDEST="$PKGDEST" SRCDEST="$SRCDEST"
makepkg --syncdeps --cleanbuild --noconfirm --log
- name: Commit and push
run: |
git config user.name "cryptobot"
git config user.email "cryptobot@users.noreply.github.com"
git config push.autoSetupRemote true
git stage PKGBUILD .SRCINFO
git commit -m "Prepare release ${DIST_VERSION}"
git push
env:
DIST_VERSION: ${{ steps.pkgrel.outputs.dist-version }}
- name: Create pull request
id: create-pr
run: |
printf "Created by $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" > pr_body.md
PR_URL=$(gh pr create --title "Release $DIST_VERSION" --body-file pr_body.md)
echo "url=$PR_URL" >> "$GITHUB_OUTPUT"
env:
DIST_VERSION: ${{ steps.pkgrel.outputs.dist-version }}
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Slack Notification
if: github.event_name == 'release'
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'
SLACK_CHANNEL: 'cryptomator-desktop'
SLACK_TITLE: "AUR release PR created for ${{ github.event.repository.name }} ${{ steps.pkgrel.outputs.dist-version }} ."
SLACK_MESSAGE: "See <${{ steps.create-pr.outputs.url }}|PR> on how to proceed."
SLACK_FOOTER: false
MSG_MINIMAL: true

View File

@@ -44,8 +44,8 @@ jobs:
architecture: x64
output-suffix: x64
fuse-lib: macFUSE
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_osx-x64_bin-jmods.zip'
openjfx-sha: '0b4d8463f03901b7425d94628e4116b7078abb8dd540fbec415266fac20bda5c'
openjfx-url: 'https://download2.gluonhq.com/openjfx/25/openjfx-25_osx-x64_bin-jmods.zip'
openjfx-sha: '0eba73fb28a24c845175d16fa2f8c081c936ce6de1be9b79eb6119fa32e53d52'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Java
@@ -59,7 +59,7 @@ jobs:
- name: Download OpenJFX jmods
id: download-jmods
run: |
curl --silent --fail-with-body --proto "=https" -L ${{ matrix.openjfx-url }} -o openjfx-jmods.zip
curl -L ${{ matrix.openjfx-url }} -o openjfx-jmods.zip
echo "${{ matrix.openjfx-sha }} *openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods/
unzip -jo openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
@@ -144,7 +144,6 @@ jobs:
run: |
mv appdir/Cryptomator.app Cryptomator.app
mv dist/mac/resources/Cryptomator-Vault.icns Cryptomator.app/Contents/Resources/
cp dist/mac/resources/Assets.car Cryptomator.app/Contents/Resources/
sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" Cryptomator.app/Contents/Info.plist
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" Cryptomator.app/Contents/Info.plist
echo -n "$PROVISIONING_PROFILE_BASE64" | base64 --decode --output Cryptomator.app/Contents/embedded.provisionprofile
@@ -152,6 +151,20 @@ jobs:
VERSION_NO: ${{ needs.get-version.outputs.semVerNum }}
REVISION_NO: ${{ needs.get-version.outputs.revNum }}
PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }}
- name: Build and install DockTilePlugin
env:
DERIVED_DATA_PATH: dist/mac/DockTilePlugin/build
run: |
xcodebuild -project dist/mac/DockTilePlugin/DockTilePlugin.xcodeproj \
-scheme DockTilePlugin \
-configuration Release \
-destination "platform=macOS,arch=x86_64" \
-derivedDataPath ${DERIVED_DATA_PATH} \
-quiet \
clean build
mkdir -p Cryptomator.app/Contents/PlugIns
cp -R ${DERIVED_DATA_PATH}/Build/Products/Release/Cryptomator.docktileplugin Cryptomator.app/Contents/PlugIns/
rm -rf ${DERIVED_DATA_PATH}
- name: Generate license for dmg
run: >
mvn -B license:add-third-party
@@ -270,7 +283,7 @@ jobs:
run: security delete-keychain $RUNNER_TEMP/codesign.keychain-db
continue-on-error: true
- name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: dmg-${{ matrix.output-suffix }}
path: |

View File

@@ -42,8 +42,8 @@ jobs:
architecture: aarch64
output-suffix: arm64
fuse-lib: FUSE-T
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_osx-aarch64_bin-jmods.zip'
openjfx-sha: '4cd258001c75af7047005c5c891e2400ed11d24fbb09412324c0cbaf8b503c5a'
openjfx-url: 'https://download2.gluonhq.com/openjfx/25/openjfx-25_osx-aarch64_bin-jmods.zip'
openjfx-sha: '13f8c0513c40c95881479fbcf0465a29a60217393fb0656f5e4eab78a9442fba'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Java
@@ -57,7 +57,7 @@ jobs:
- name: Download OpenJFX jmods
id: download-jmods
run: |
curl --silent --fail-with-body --proto "=https" -L ${{ matrix.openjfx-url }} -o openjfx-jmods.zip
curl -L ${{ matrix.openjfx-url }} -o openjfx-jmods.zip
echo "${{ matrix.openjfx-sha }} *openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods/
unzip -jo openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
@@ -143,7 +143,6 @@ jobs:
run: |
mv appdir/Cryptomator.app Cryptomator.app
mv dist/mac/resources/Cryptomator-Vault.icns Cryptomator.app/Contents/Resources/
cp dist/mac/resources/Assets.car Cryptomator.app/Contents/Resources/
sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" Cryptomator.app/Contents/Info.plist
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" Cryptomator.app/Contents/Info.plist
echo -n "$PROVISIONING_PROFILE_BASE64" | base64 --decode --output Cryptomator.app/Contents/embedded.provisionprofile
@@ -151,6 +150,20 @@ jobs:
VERSION_NO: ${{ needs.get-version.outputs.semVerNum }}
REVISION_NO: ${{ needs.get-version.outputs.revNum }}
PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }}
- name: Build and install DockTilePlugin
env:
DERIVED_DATA_PATH: dist/mac/DockTilePlugin/build
run: |
xcodebuild -project dist/mac/DockTilePlugin/DockTilePlugin.xcodeproj \
-scheme DockTilePlugin \
-configuration Release \
-destination "platform=macOS,arch=arm64" \
-derivedDataPath ${DERIVED_DATA_PATH} \
-quiet \
clean build
mkdir -p Cryptomator.app/Contents/PlugIns
cp -R ${DERIVED_DATA_PATH}/Build/Products/Release/Cryptomator.docktileplugin Cryptomator.app/Contents/PlugIns/
rm -rf ${DERIVED_DATA_PATH}
- name: Generate license for dmg
run: >
mvn -B license:add-third-party
@@ -269,7 +282,7 @@ jobs:
run: security delete-keychain $RUNNER_TEMP/codesign.keychain-db
continue-on-error: true
- name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: dmg-${{ matrix.output-suffix }}
path: |

View File

@@ -12,7 +12,7 @@ jobs:
issues: write
pull-requests: write
steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
- uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1
with:
days-before-stale: 14
days-before-close: 0

View File

@@ -10,7 +10,7 @@ jobs:
steps:
- name: Download source tarball
run: |
curl --silent --fail-with-body --proto "=https" -L -H "Accept: application/vnd.github+json" https://github.com/cryptomator/cryptomator/archive/refs/tags/${{ github.event.release.tag_name }}.tar.gz --output cryptomator-${{ github.event.release.tag_name }}.tar.gz
curl -L -H "Accept: application/vnd.github+json" https://github.com/cryptomator/cryptomator/archive/refs/tags/${{ github.event.release.tag_name }}.tar.gz --output cryptomator-${{ github.event.release.tag_name }}.tar.gz
- name: Sign source tarball with key 615D449FE6E6A235
run: |
echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import
@@ -28,7 +28,7 @@ jobs:
- name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_CRYPTOMATOR_DESKTOP }}
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'

View File

@@ -43,7 +43,6 @@ jobs:
exit 1
fi
- name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file
if: ${{ ! (contains(github.event.head_commit.message, '[skip metadata check]') || contains(github.event.head_commit.message, '[metadata check skip]')) }}
run: |
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"

View File

@@ -12,7 +12,7 @@ jobs:
issues: write
pull-requests: write
steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
- uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1
with:
days-before-stale: 365
days-before-close: 90

View File

@@ -22,12 +22,11 @@ on:
env:
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_windows-x64_bin-jmods.zip'
OPENJFX_JMODS_AMD64_HASH: '33d878dfac85590c4d77c518ed413e512d34a8479d90132b230a7ddd173576b3'
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/25/openjfx-25_windows-x64_bin-jmods.zip'
OPENJFX_JMODS_AMD64_HASH: 'c8eb9fd039b00e0020cf6c3db8ed7876bf3ee4d27860aa697a247b83b8296ae7'
WINFSP_MSI: 'https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi'
WINFSP_MSI_HASH: '073a70e00f77423e34bed98b86e600def93393ba5822204fac57a29324db9f7a'
WINFSP_UNINSTALLER: 'https://github.com/cryptomator/winfsp-uninstaller/releases/latest/download/winfsp-uninstaller.exe'
WIX_VERSION: '6.0.2'
defaults:
run:
@@ -48,8 +47,8 @@ jobs:
include:
- arch: x64
os: windows-latest
java-dist: 'zulu' #cannot use temurin, see https://github.com/cryptomator/cryptomator/issues/3824#issuecomment-2829827427
java-version: '25.0.1+8'
java-dist: 'temurin' #cannot use temurin, see https://github.com/cryptomator/cryptomator/issues/3824#issuecomment-2829827427
java-version: '25.0.2+10.0.LTS'
java-package: 'jdk'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -63,16 +62,14 @@ jobs:
cache: 'maven'
- name: Install wix and extensions
run: |
dotnet tool install --global wix --version ${WIX_VERSION}
wix.exe extension add --global WixToolset.UI.wixext/${WIX_VERSION}
wix.exe extension add --global WixToolset.Util.wixext/${WIX_VERSION}
env:
WIX_VERSION: ${{ env.WIX_VERSION }}
dotnet tool install --global wix --version 6.0.0
wix.exe extension add WixToolset.UI.wixext/6.0.0 --global
wix.exe extension add WixToolset.Util.wixext/6.0.0 --global
- name: Download and extract JavaFX jmods from Gluon
if: matrix.arch == 'x64'
#In the last step we move all jmods files a dir level up because jmods are placed inside a directory in the zip
run: |
curl --silent --fail-with-body --proto "=https" -L "${{ env.OPENJFX_JMODS_AMD64 }}" --output openjfx-jmods.zip
curl --output openjfx-jmods.zip -L "${{ env.OPENJFX_JMODS_AMD64 }}"
if(!(Get-FileHash -Path openjfx-jmods.zip -Algorithm SHA256).Hash.ToLower().equals("${{ env.OPENJFX_JMODS_AMD64_HASH }}")) {
throw "Wrong checksum of JMOD archive downloaded from ${{ env.OPENJFX_JMODS_AMD64 }}.";
}
@@ -188,9 +185,18 @@ jobs:
- name: Extract wixhelper.dll for Codesigning #see https://github.com/cryptomator/cryptomator/issues/3130
shell: pwsh
run: |
New-Item -Path appdir/jpackage-jmod -ItemType Directory
& $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"
$extractDir = "appdir/jpackage-jimage"
New-Item -Path $extractDir -ItemType Directory -Force | Out-Null
& "$env:JAVA_HOME\bin\jimage.exe" extract --dir $extractDir "$env:JAVA_HOME\lib\modules"
$wixhelper = Get-ChildItem -Path $extractDir -Recurse -File -Filter "wixhelper.dll" | Select-Object -First 1
if (-not $wixhelper) {
throw "wixhelper.dll not found in $env:JAVA_HOME\lib\modules"
}
Copy-Item -Path $wixhelper.FullName -Destination "appdir/wixhelper.dll" -Force
Remove-Item -Path $extractDir -Recurse -Force
- name: Sign DLLs with Azure Trusted Signing
if: inputs.sign || github.event_name == 'release'
uses: ./.github/actions/win-sign-action
@@ -280,7 +286,7 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: msi-${{ matrix.arch }}
path: |
@@ -305,13 +311,11 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install wix and extensions
run: |
dotnet tool install --global wix --version ${WIX_VERSION}
wix.exe extension add --global WixToolset.BootstrapperApplications.wixext/${WIX_VERSION}
wix.exe extension add --global WixToolset.Util.wixext/${WIX_VERSION}
env:
WIX_VERSION: ${{ env.WIX_VERSION }}
dotnet tool install --global wix --version 6.0.0
wix.exe extension add WixToolset.BootstrapperApplications.wixext/6.0.0 --global
wix.exe extension add WixToolset.Util.wixext/6.0.0 --global
- name: Download .msi
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: msi-${{ matrix.arch }}
path: dist/win/bundle/resources
@@ -338,7 +342,7 @@ jobs:
shell: pwsh
- name: Download WinFsp
run: |
curl --silent --fail-with-body --proto "=https" -L ${{ env.WINFSP_MSI }} --output $env:WINFSP_PATH
curl --output $env:WINFSP_PATH -L ${{ env.WINFSP_MSI }}
$computedHash = (Get-FileHash -Path $env:WINFSP_PATH -Algorithm SHA256).Hash.ToLower()
if ($computedHash -ne "${{ env.WINFSP_MSI_HASH }}") {
throw "Checksum mismatch for $env:WINFSP_PATH (expected ${{ env.WINFSP_MSI_HASH }}, got $computedHash)."
@@ -348,7 +352,7 @@ jobs:
shell: pwsh
- name: Download Legacy-WinFsp uninstaller
run: |
curl --silent --fail-with-body --proto "=https" -L ${{ env.WINFSP_UNINSTALLER }} --output dist/win/bundle/resources/winfsp-uninstaller.exe
curl --output dist/win/bundle/resources/winfsp-uninstaller.exe -L ${{ env.WINFSP_UNINSTALLER }}
shell: pwsh
- name: Create Wix Burn bundle
working-directory: dist/win
@@ -423,7 +427,7 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: exe-${{ matrix.executable-suffix }}
path: |
@@ -441,7 +445,7 @@ jobs:
download-url-exe-x64: ${{ fromJSON(steps.publish.outputs.assets)[2].browser_download_url }}
steps:
- name: Download installers
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
merge-multiple: true
- name: Publish installers on GitHub Releases

View File

@@ -7,7 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
The changelog starts with version 1.19.0.
Changes to prior versions can be found on the [Github release page](https://github.com/cryptomator/cryptomator/releases).
## [1.19.0](https://github.com/cryptomator/cryptomator/compare/1.18.0...HEAD) - tbd
## [Unreleased](https://github.com/cryptomator/cryptomator/compare/1.18.0...HEAD)
### Added
* Self-Update Mechanism ([#3948](https://github.com/cryptomator/cryptomator/pull/3948))
@@ -19,34 +19,25 @@ Changes to prior versions can be found on the [Github release page](https://gith
* Show Archived Vault Dialog on unlock when Hub returns 410 ([#4081](https://github.com/cryptomator/cryptomator/pull/4081))
* Support automatic app theme selection according to OS theme on Linux ([#4027](https://github.com/cryptomator/cryptomator/issues/4027))
* Admin configuration: Allow overwriting certain app properties by external config file ([#4105](https://github.com/cryptomator/cryptomator/pull/4105))
* New keychain backend using [secret service API](https://specifications.freedesktop.org/secret-service/0.2) for Linux ([#4025](https://github.com/cryptomator/cryptomator/pull/4025))
* Liquid Glass icon for macOS ([#4166](https://github.com/cryptomator/cryptomator/pull/4166))
### Fixed
* Fixed password reset/show recovery possible for vaults without masterkey file ([#4120](https://github.com/cryptomator/cryptomator/pull/4120))
* Fixed restore vault config failed due to selecting a directory instead of file ([#4141](https://github.com/cryptomator/cryptomator/issues/4141))
* Fixed leaking of cleartext paths into application log ([GHSA-j83j-mwhc-rcgw](https://github.com/cryptomator/cryptomator/security/advisories/GHSA-j83j-mwhc-rcgw))
### Changed
* Built using JDK 25 ([#4031](https://github.com/cryptomator/cryptomator/issues/4031))
* Modernized Template for GitHub Releases
* Disable user defined app start config on Windows ([#4132](https://github.com/cryptomator/cryptomator/issues/4132))
* Disable plugin loading by default ([#4136](https://github.com/cryptomator/cryptomator/4136))
* Use JDK 25 ([#4031](https://github.com/cryptomator/cryptomator/pull/4031))
* Update JavaFX to 25.0.2 ([#4145](https://github.com/cryptomator/cryptomator/pull/4145)))
* Updated translations
* Updated dependencies
* `ch.qos.logback:*` from 1.5.19 to 1.5.32
* `com.fasterxml.jackson.core:jackson-databind` from 2.20.0 to 2.21.1
* `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.20.0 to 2.21.1
* `ch.qos.logback:*` from 1.5.19 to 1.5.31
* `com.fasterxml.jackson.core:jackson-databind` from 2.20.0 to 2.21.0
* `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.20.0 to 2.21.0
* `com.github.ben-manes.caffeine:caffeine` from 3.2.2 to 3.2.3
* `com.google.dagger:*` from 2.57.2 to 2.59.2
* `com.google.dagger:*` from 2.57.2 to 2.59.1
* `org.apache.commons:commons-lang3` from 3.19.0 to 3.20.0
* `org.cryptomator:cryptofs` from 2.9.0 to 2.10.0
* `org.cryptomator:cryptofs` from 2.9.0 to 2.10.0-beta3
* `org.cryptomator:cryptolib` from 2.2.1 to 2.2.2
* `org.cryptomator:fuse-nio-adapter` from 5.1.0 to 6.0.1
* `org.cryptomator:fuse-nio-adapter` from 5.1.0 to 6.0.0
* `org.cryptomator:integrations-api` from 1.7.0 to 1.8.0-beta1
* `org.cryptomator:integrations-linux` from 1.6.1 to 1.7.0-beta4
* `org.cryptomator:integrations-mac` from 1.4.1 to 1.5.0-beta3
* `org.cryptomator:integrations-win` from 1.5.1 to 1.6.0
* `org.cryptomator:webdav-nio-adapter` from 3.0.0 to 3.0.1
* `org.cryptomator:webdav-nio-adapter-servlet` to 1.2.12

View File

@@ -78,7 +78,7 @@ For more information on the security details visit [cryptomator.org](https://doc
### Dependencies
* JDK 25 (e.g. temurin, zulu)
* JDK 24 (e.g. temurin, zulu)
* Maven 3
### Run Maven

View File

@@ -23,12 +23,12 @@ mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests
cp ../../../LICENSE.txt ../../../target
cp ../../../target/cryptomator-*.jar ../../../target/mods
JAVAFX_VERSION=25.0.2
JAVAFX_VERSION=25
JAVAFX_ARCH="x64"
JAVAFX_JMODS_SHA256='e0a9c29d8cf3af9b8b48848b43f87b5785bc107c53a951b19668ce05842bba1b'
JAVAFX_JMODS_SHA256='96e520f48610d8ffb94ca30face1f11ffe8a977ddc1c4ff80b1a9e9f048bd94e'
if [ "${CPU_ARCH}" = "aarch64" ]; then
JAVAFX_ARCH="aarch64"
JAVAFX_JMODS_SHA256='c3408f818693cce09e59829a8e862a82c7695fdfcd585c41cfd527f5fc3fe646'
JAVAFX_JMODS_SHA256='951c52481af0ec5885b06f1ebaa8a10da7e8ea23c5e1ef3e2f6f11fa1b3a7ce1'
fi
# download javaFX jmods

View File

@@ -1,118 +0,0 @@
# Maintainer: Aaron Graves <linux@ajgraves.com>
# Contributor: Julian Raufelder <arch@raufelder.com>
# Contributor: Morten Linderud <morten@linderud.pw>
# Contributor: Sebastian Stenzel <sebastian.stenzel@gmail.com>
# Contributor: Armin Schrenk <armin.schrenk@skymatic.de>
pkgname=cryptomator
pkgver=$PKG_VERSION
pkgrel=$PKG_RELEASE
pkgdesc="Multiplatform transparent client-side encryption of your files in the cloud."
arch=('any')
url="https://cryptomator.org/"
license=('GPL3')
depends=('fuse3' 'alsa-lib' 'hicolor-icon-theme' 'libxtst' 'libnet' 'libxrender')
makedepends=('maven' 'unzip')
optdepends=('keepassxc-cryptomator: Use KeePassXC to store vault passwords' 'ttf-hanazono: Install this font when using Japanese system language')
_jdkver=25.0.2+10
_jfxver=25.0.2
_src_app_dir=cryptomator-${pkgver//_/-}
source=($SOURCES);
source_x86_64=("jdk-${_jdkver}.tar.gz::https://github.com/adoptium/temurin${_jdkver:0:2}-binaries/releases/download/jdk-${_jdkver//\+/%2B}/OpenJDK${_jdkver:0:2}U-jdk_x64_linux_hotspot_${_jdkver//\+/_}.tar.gz"
"openjfx-${_jfxver}.zip::https://download2.gluonhq.com/openjfx/${_jfxver}/openjfx-${_jfxver}_linux-x64_bin-jmods.zip")
source_aarch64=("jdk-${_jdkver}.tar.gz::https://github.com/adoptium/temurin${_jdkver:0:2}-binaries/releases/download/jdk-${_jdkver//\+/%2B}/OpenJDK${_jdkver:0:2}U-jdk_aarch64_linux_hotspot_${_jdkver//\+/_}.tar.gz"
"openjfx-${_jfxver}.zip::https://download2.gluonhq.com/openjfx/${_jfxver}/openjfx-${_jfxver}_linux-aarch64_bin-jmods.zip")
noextract=("jdk-${_jdkver}.tar.gz" "openjfx-${_jfxver}.zip")
sha256sums=($SOURCES_SHA)
sha256sums_x86_64=('987387933b64b9833846dee373b640440d3e1fd48a04804ec01a6dbf718e8ab8'
'e0a9c29d8cf3af9b8b48848b43f87b5785bc107c53a951b19668ce05842bba1b')
sha256sums_aarch64=('a9d73e711d967dc44896d4f430f73a68fd33590dabc29a7f2fb9f593425b854c'
'c3408f818693cce09e59829a8e862a82c7695fdfcd585c41cfd527f5fc3fe646')
options=('!strip')
validpgpkeys=('58117AFA1F85B3EEC154677D615D449FE6E6A235')
build() {
export JAVA_HOME="${srcdir}/jdk-${_jdkver}"
JMODS_PATH="${srcdir}/openjfx-${_jfxver}-jmods"
#JEP 493
if ! $(${JAVA_HOME}/bin/jlink --help | grep -q "Linking from run-time image enabled"); then
JMODS_PATH="${JMODS_PATH}:${JAVA_HOME}/jmods:"
fi
tar xfz "jdk-${_jdkver}.tar.gz"
mkdir "openjfx-${_jfxver}-jmods"
unzip -j "openjfx-${_jfxver}.zip" \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d "openjfx-${_jfxver}-jmods"
cd "${srcdir}/${_src_app_dir}"
mvn -B clean package -DskipTests -Plinux
cp LICENSE.txt target
cp target/cryptomator-*.jar target/mods
cd target
"$JAVA_HOME/bin/jlink" \
--output runtime \
--module-path "$JMODS_PATH" \
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.crypto.ec,jdk.crypto.cryptoki,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net,java.compiler \
--strip-native-commands \
--no-header-files \
--no-man-pages \
--strip-debug \
--compress=zip-0
##Note: jpackage does not allow -beta suffixes, have to strip those
"$JAVA_HOME/bin/jpackage" \
--type app-image \
--runtime-image runtime \
--input libs \
--module-path mods \
--module org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator \
--dest . \
--name cryptomator \
--vendor "Skymatic GmbH" \
--copyright "(C) 2016 - 2026 Skymatic GmbH" \
--java-options "--enable-preview" \
--java-options '--enable-native-access=javafx.graphics,org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator' \
--java-options "-Xss5m" \
--java-options "-Xmx256m" \
--java-options "-Dfile.encoding=\"utf-8\"" \
--java-options "-Djava.net.useSystemProxies=true" \
--java-options "-Dcryptomator.adminConfigPath=\"/etc/cryptomator/config.properties\"" \
--java-options "-Dcryptomator.appVersion=\"${pkgver//_/-}\"" \
--java-options "-Dcryptomator.buildNumber=\"aur-${pkgrel}\"" \
--java-options "-Dcryptomator.disableUpdateCheck=true" \
--java-options "-Dcryptomator.integrationsLinux.autoStartCmd=\"cryptomator\"" \
--java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/.config/Cryptomator/ipc.socket\"" \
--java-options "-Dcryptomator.logDir=\"@{userhome}/.local/share/Cryptomator/logs\"" \
--java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/.local/share/Cryptomator/mnt\"" \
--java-options "-Dcryptomator.networking.truststore.p12Path=\"/etc/cryptomator/certs.p12\"" \
--java-options "-Dcryptomator.pluginDir=\"@{userhome}/.local/share/Cryptomator/plugins\"" \
--java-options "-Dcryptomator.p12Path=\"@{userhome}/.config/Cryptomator/key.p12\"" \
--java-options "-Dcryptomator.settingsPath=\"@{userhome}/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\"" \
--java-options "-Dcryptomator.showTrayIcon=true" \
--app-version "${pkgver//_*/}" \
--verbose
}
package() {
install -Dm644 "${srcdir}/${_src_app_dir}/dist/linux/common/application-vnd.cryptomator.vault.xml" "${pkgdir}/usr/share/mime/packages/cryptomator-vault.xml"
install -Dm644 "${srcdir}/${_src_app_dir}/dist/linux/common/org.cryptomator.Cryptomator.desktop" "${pkgdir}/usr/share/applications/org.cryptomator.Cryptomator.desktop"
install -Dm644 "${srcdir}/${_src_app_dir}/dist/linux/common/org.cryptomator.Cryptomator256.png" "${pkgdir}/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png"
install -Dm644 "${srcdir}/${_src_app_dir}/dist/linux/common/org.cryptomator.Cryptomator512.png" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png"
install -Dm644 "${srcdir}/${_src_app_dir}/dist/linux/common/org.cryptomator.Cryptomator.svg" "${pkgdir}/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg"
install -Dm644 "${srcdir}/${_src_app_dir}/dist/linux/common/org.cryptomator.Cryptomator.tray.svg" "${pkgdir}/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.tray.svg"
install -Dm644 "${srcdir}/${_src_app_dir}/dist/linux/common/org.cryptomator.Cryptomator.tray-unlocked.svg" "${pkgdir}/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.tray-unlocked.svg"
install -Dm644 "${srcdir}/${_src_app_dir}/dist/linux/common/org.cryptomator.Cryptomator.tray.svg" "${pkgdir}/usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-symbolic.svg"
install -Dm644 "${srcdir}/${_src_app_dir}/dist/linux/common/org.cryptomator.Cryptomator.tray-unlocked.svg" "${pkgdir}/usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-unlocked-symbolic.svg"
mkdir -p "${pkgdir}/opt/cryptomator/"
cp -R "${srcdir}/${_src_app_dir}/target/cryptomator" "${pkgdir}/opt/"
install -Dm644 "${srcdir}/${_src_app_dir}/target/LICENSE.txt" -t "${pkgdir}/usr/share/licenses/${pkgname}"
mkdir -p "${pkgdir}/usr/bin"
ln -s "/opt/cryptomator/bin/cryptomator" "${pkgdir}/usr/bin/cryptomator"
}

1
dist/mac/.gitignore vendored
View File

@@ -1 +1,2 @@
embedded.provisionprofile
xcuserdata/

View File

@@ -0,0 +1,19 @@
//
// CryptomatorDockTilePlugin.swift
// Integrations
//
// Created by Tobias Hagemann on 22.09.25.
// Copyright © 2025 Cryptomator. All rights reserved.
//
import AppKit
class CryptomatorDockTilePlugin: NSObject, NSDockTilePlugIn {
func setDockTile(_ dockTile: NSDockTile?) {
guard let dockTile = dockTile, let image = Bundle(for: Self.self).image(forResource: "Cryptomator") else {
return
}
dockTile.contentView = NSImageView(image: image)
dockTile.display()
}
}

View File

@@ -0,0 +1,314 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objects = {
/* Begin PBXBuildFile section */
74E08DE12E8584DE007E665C /* CryptomatorDockTilePlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74E08DE02E85847E007E665C /* CryptomatorDockTilePlugin.swift */; };
74E08DED2E858532007E665C /* Cryptomator.icns in Resources */ = {isa = PBXBuildFile; fileRef = 74E08DEC2E858532007E665C /* Cryptomator.icns */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
74E08DD92E858467007E665C /* Cryptomator.docktileplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Cryptomator.docktileplugin; sourceTree = BUILT_PRODUCTS_DIR; };
74E08DE02E85847E007E665C /* CryptomatorDockTilePlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CryptomatorDockTilePlugin.swift; sourceTree = "<group>"; };
74E08DEC2E858532007E665C /* Cryptomator.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Cryptomator.icns; path = ../resources/Cryptomator.icns; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
74E08DD62E858467007E665C /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
74E08DD02E858467007E665C = {
isa = PBXGroup;
children = (
74E08DE02E85847E007E665C /* CryptomatorDockTilePlugin.swift */,
74E08DEC2E858532007E665C /* Cryptomator.icns */,
74E08DDA2E858467007E665C /* Products */,
);
sourceTree = "<group>";
};
74E08DDA2E858467007E665C /* Products */ = {
isa = PBXGroup;
children = (
74E08DD92E858467007E665C /* Cryptomator.docktileplugin */,
);
name = Products;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
74E08DD82E858467007E665C /* DockTilePlugin */ = {
isa = PBXNativeTarget;
buildConfigurationList = 74E08DDD2E858467007E665C /* Build configuration list for PBXNativeTarget "DockTilePlugin" */;
buildPhases = (
74E08DD52E858467007E665C /* Sources */,
74E08DD62E858467007E665C /* Frameworks */,
74E08DD72E858467007E665C /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = DockTilePlugin;
packageProductDependencies = (
);
productName = DockTilePlugin;
productReference = 74E08DD92E858467007E665C /* Cryptomator.docktileplugin */;
productType = "com.apple.product-type.bundle";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
74E08DD12E858467007E665C /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = Cryptomator;
TargetAttributes = {
74E08DD82E858467007E665C = {
CreatedOnToolsVersion = 26.0.1;
};
};
};
buildConfigurationList = 74E08DD42E858467007E665C /* Build configuration list for PBXProject "DockTilePlugin" */;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 74E08DD02E858467007E665C;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = 74E08DDA2E858467007E665C /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
74E08DD82E858467007E665C /* DockTilePlugin */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
74E08DD72E858467007E665C /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
74E08DED2E858532007E665C /* Cryptomator.icns in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
74E08DD52E858467007E665C /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
74E08DE12E8584DE007E665C /* CryptomatorDockTilePlugin.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
74E08DDB2E858467007E665C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = YZQJQUHA3L;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MACOSX_DEPLOYMENT_TARGET = 11.5;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
SWIFT_VERSION = 5.0;
};
name = Debug;
};
74E08DDC2E858467007E665C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = YZQJQUHA3L;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MACOSX_DEPLOYMENT_TARGET = 11.5;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = macosx;
SWIFT_VERSION = 5.0;
};
name = Release;
};
74E08DDE2E858467007E665C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Cryptomator. All rights reserved.";
INFOPLIST_KEY_NSPrincipalClass = CryptomatorDockTilePlugin;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = org.cryptomator.DockTilePlugin;
PRODUCT_NAME = Cryptomator;
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
WRAPPER_EXTENSION = docktileplugin;
};
name = Debug;
};
74E08DDF2E858467007E665C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Cryptomator. All rights reserved.";
INFOPLIST_KEY_NSPrincipalClass = CryptomatorDockTilePlugin;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = org.cryptomator.DockTilePlugin;
PRODUCT_NAME = Cryptomator;
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
WRAPPER_EXTENSION = docktileplugin;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
74E08DD42E858467007E665C /* Build configuration list for PBXProject "DockTilePlugin" */ = {
isa = XCConfigurationList;
buildConfigurations = (
74E08DDB2E858467007E665C /* Debug */,
74E08DDC2E858467007E665C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
74E08DDD2E858467007E665C /* Build configuration list for PBXNativeTarget "DockTilePlugin" */ = {
isa = XCConfigurationList;
buildConfigurations = (
74E08DDE2E858467007E665C /* Debug */,
74E08DDF2E858467007E665C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 74E08DD12E858467007E665C /* Project object */;
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "2600"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "74E08DD82E858467007E665C"
BuildableName = "Cryptomator.docktileplugin"
BlueprintName = "DockTilePlugin"
ReferencedContainer = "container:DockTilePlugin.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "74E08DD82E858467007E665C"
BuildableName = "Cryptomator.docktileplugin"
BlueprintName = "DockTilePlugin"
ReferencedContainer = "container:DockTilePlugin.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

20
dist/mac/dmg/build.sh vendored
View File

@@ -32,15 +32,15 @@ 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'`
FUSE_LIB="FUSE-T"
JAVAFX_VERSION=25.0.2
JAVAFX_VERSION=25
JAVAFX_ARCH="undefined"
JAVAFX_JMODS_SHA256="undefined"
if [ "$(machine)" = "arm64e" ]; then
JAVAFX_ARCH="aarch64"
JAVAFX_JMODS_SHA256="4cd258001c75af7047005c5c891e2400ed11d24fbb09412324c0cbaf8b503c5a"
JAVAFX_JMODS_SHA256="13f8c0513c40c95881479fbcf0465a29a60217393fb0656f5e4eab78a9442fba"
else
JAVAFX_ARCH="x64"
JAVAFX_JMODS_SHA256="0b4d8463f03901b7425d94628e4116b7078abb8dd540fbec415266fac20bda5c"
JAVAFX_JMODS_SHA256="0eba73fb28a24c845175d16fa2f8c081c936ce6de1be9b79eb6119fa32e53d52"
fi
JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-${JAVAFX_ARCH}_bin-jmods.zip"
@@ -130,11 +130,23 @@ ${JAVA_HOME}/bin/jpackage \
# transform app dir
cp ../resources/${APP_NAME}-Vault.icns ${APP_NAME}.app/Contents/Resources/
cp ../resources/Assets.car ${APP_NAME}.app/Contents/Resources/
sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" ${APP_NAME}.app/Contents/Info.plist
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" ${APP_NAME}.app/Contents/Info.plist
cp ../embedded.provisionprofile ${APP_NAME}.app/Contents/
# build and install dock tile plugin
echo "Building and installing Cryptomator.docktileplugin..."
DERIVED_DATA_PATH=../DockTilePlugin/build
xcodebuild -project ../DockTilePlugin/DockTilePlugin.xcodeproj \
-scheme DockTilePlugin \
-configuration Release \
-derivedDataPath ${DERIVED_DATA_PATH} \
-quiet \
clean build
mkdir -p ${APP_NAME}.app/Contents/PlugIns
cp -R ${DERIVED_DATA_PATH}/Build/Products/Release/Cryptomator.docktileplugin ${APP_NAME}.app/Contents/PlugIns/
rm -rf ${DERIVED_DATA_PATH}
# generate license
mvn -B -f../../../pom.xml license:add-third-party \
-Dlicense.thirdPartyFilename=license.rtf \

Binary file not shown.

View File

@@ -12,8 +12,6 @@
<string>Cryptomator</string>
<key>CFBundleIconFile</key>
<string>Cryptomator.icns</string>
<key>CFBundleIconName</key>
<string>Cryptomator</string>
<key>CFBundleIdentifier</key>
<string>org.cryptomator</string>
<key>CFBundleInfoDictionaryVersion</key>
@@ -119,5 +117,8 @@
<!-- allow utilization of integrated GPU, see https://developer.apple.com/library/mac/qa/qa1734/_index.html -->
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
<!-- register dock tile plugin -->
<key>NSDockTilePlugIn</key>
<string>Cryptomator.docktileplugin</string>
</dict>
</plist>

12
dist/win/build.ps1 vendored
View File

@@ -34,20 +34,20 @@ if ((Get-Command "mvn" -ErrorAction SilentlyContinue) -eq $null)
}
if ((Get-Command 'wix' -ErrorAction SilentlyContinue) -eq $null)
{
Write-Error 'Unable to find wix in your PATH (try: dotnet tool install --global wix --version 6.0.2)'
Write-Error 'Unable to find wix in your PATH (try: dotnet tool install --global wix --version 6.0.0)'
exit 1
}
$wixExtensions = & wix.exe extension list --global | Out-String
if ($wixExtensions -notmatch 'WixToolset.UI.wixext') {
Write-Error 'Wix UI extension missing. Please install it with: wix.exe extension add WixToolset.UI.wixext/6.0.2 --global)'
Write-Error 'Wix UI extension missing. Please install it with: wix.exe extension add WixToolset.UI.wixext/6.0.0 --global)'
exit 1
}
if ($wixExtensions -notmatch 'WixToolset.Util.wixext') {
Write-Error 'Wix Util extension missing. Please install it with: wix.exe extension add WixToolset.Util.wixext/6.0.2 --global)'
Write-Error 'Wix Util extension missing. Please install it with: wix.exe extension add WixToolset.Util.wixext/6.0.0 --global)'
exit 1
}
if ($wixExtensions -notmatch 'WixToolset.BootstrapperApplications.wixext') {
Write-Error 'Wix Bootstrapper extension missing. Please install it with: wix.exe extension add WixToolset.BootstrapperApplications.wixext/6.0.2 --global)'
Write-Error 'Wix Bootstrapper extension missing. Please install it with: wix.exe extension add WixToolset.BootstrapperApplications.wixext/6.0.0 --global)'
exit 1
}
@@ -93,9 +93,9 @@ switch ($archName) {
$jmodPaths = "$Env:JAVA_HOME/jmods"
}
'x64' {
$javaFxVersion='25.0.2'
$javaFxVersion='25'
$javaFxJmodsUrl = "https://download2.gluonhq.com/openjfx/${javaFxVersion}/openjfx-${javaFxVersion}_windows-x64_bin-jmods.zip"
$javaFxJmodsSHA256 = '33d878dfac85590c4d77c518ed413e512d34a8479d90132b230a7ddd173576b3'
$javaFxJmodsSHA256 = 'c8eb9fd039b00e0020cf6c3db8ed7876bf3ee4d27860aa697a247b83b8296ae7'
$javaFxJmods = '.\resources\jfxJmods.zip'
if( !(Test-Path -Path $javaFxJmods) ) {

44
pom.xml
View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId>
<artifactId>cryptomator</artifactId>
<version>1.19.0</version>
<version>1.19.0-SNAPSHOT</version>
<name>Cryptomator Desktop App</name>
<organization>
@@ -33,46 +33,45 @@
<nonModularGroupIds>org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents</nonModularGroupIds>
<!-- cryptomator dependencies -->
<cryptomator.cryptofs.version>2.10.0</cryptomator.cryptofs.version>
<cryptomator.cryptofs.version>2.10.0-beta3</cryptomator.cryptofs.version>
<cryptomator.cryptolib.version>2.2.2</cryptomator.cryptolib.version>
<cryptomator.integrations.version>1.8.0-beta1</cryptomator.integrations.version>
<cryptomator.integrations.win.version>1.6.0</cryptomator.integrations.win.version>
<cryptomator.integrations.mac.version>1.5.0-beta3</cryptomator.integrations.mac.version>
<cryptomator.integrations.linux.version>1.7.0-beta4</cryptomator.integrations.linux.version>
<cryptomator.fuse.version>6.0.1</cryptomator.fuse.version>
<cryptomator.fuse.version>6.0.0</cryptomator.fuse.version>
<cryptomator.webdav.version>3.0.1</cryptomator.webdav.version>
<cryptomator.webdav-servlet.version>1.2.12</cryptomator.webdav-servlet.version>
<!-- 3rd party dependencies -->
<caffeine.version>3.2.3</caffeine.version>
<commons-lang3.version>3.20.0</commons-lang3.version>
<dagger.version>2.59.2</dagger.version>
<dagger.version>2.59.1</dagger.version>
<easybind.version>2.2</easybind.version>
<jackson.version>2.21.1</jackson.version>
<javafx.version>25.0.2</javafx.version>
<jwt.version>4.5.1</jwt.version>
<jackson.version>2.21.0</jackson.version>
<javafx.version>25</javafx.version>
<jwt.version>4.5.0</jwt.version>
<nimbus-jose.version>10.5</nimbus-jose.version>
<logback.version>1.5.32</logback.version>
<logback.version>1.5.31</logback.version>
<slf4j.version>2.0.17</slf4j.version>
<tinyoauth2.version>0.8.1</tinyoauth2.version>
<zxcvbn.version>1.9.0</zxcvbn.version>
<!-- test dependencies -->
<junit.jupiter.version>6.0.3</junit.jupiter.version>
<mockito.version>5.22.0</mockito.version>
<junit.jupiter.version>5.13.4</junit.jupiter.version>
<mockito.version>5.20.0</mockito.version>
<hamcrest.version>3.0</hamcrest.version>
<!-- build-time dependencies -->
<jetbrains.annotations.version>26.1.0</jetbrains.annotations.version>
<dependency-check.version>12.2.0</dependency-check.version>
<jetbrains.annotations.version>26.0.2-1</jetbrains.annotations.version>
<dependency-check.version>12.1.5</dependency-check.version>
<jacoco.version>0.8.14</jacoco.version>
<license-generator.version>2.7.1</license-generator.version>
<junit-tree-reporter.version>1.5.1</junit-tree-reporter.version>
<mvn-compiler.version>3.15.0</mvn-compiler.version>
<mvn-resources.version>3.5.0</mvn-resources.version>
<mvn-dependency.version>3.10.0</mvn-dependency.version>
<mvn-surefire.version>3.5.3</mvn-surefire.version>
<mvn-jar.version>3.5.0</mvn-jar.version>
<license-generator.version>2.7.0</license-generator.version>
<junit-tree-reporter.version>1.4.0</junit-tree-reporter.version>
<mvn-compiler.version>3.14.1</mvn-compiler.version>
<mvn-resources.version>3.3.1</mvn-resources.version>
<mvn-dependency.version>3.8.1</mvn-dependency.version>
<mvn-surefire.version>3.5.4</mvn-surefire.version>
<mvn-jar.version>3.4.2</mvn-jar.version>
<!-- Property used by surefire to determine jacoco engine -->
<surefire.jacoco.args></surefire.jacoco.args>
@@ -94,11 +93,6 @@
<dependencies>
<!-- Cryptomator Libs -->
<dependency>
<groupId>org.cryptomator</groupId>
<artifactId>webdav-nio-adapter-servlet</artifactId>
<version>${cryptomator.webdav-servlet.version}</version>
</dependency>
<dependency>
<groupId>org.cryptomator</groupId>
<artifactId>cryptolib</artifactId>

View File

@@ -13,7 +13,6 @@ import org.cryptomator.common.locationpresets.OneDriveLinuxLocationPresetsProvid
import org.cryptomator.common.locationpresets.OneDriveMacLocationPresetsProvider;
import org.cryptomator.common.locationpresets.OneDriveWindowsLocationPresetsProvider;
import org.cryptomator.common.locationpresets.PCloudLocationPresetsProvider;
import org.cryptomator.integrations.revealpath.RevealPathService;
import org.cryptomator.integrations.tray.TrayMenuController;
import org.cryptomator.integrations.uiappearance.UiAppearanceProvider;
import org.cryptomator.logging.LogbackConfiguratorFactory;
@@ -21,7 +20,6 @@ import org.cryptomator.networking.SSLContextProvider;
import org.cryptomator.networking.SSLContextWithMacKeychain;
import org.cryptomator.networking.SSLContextWithPKCS12TrustStore;
import org.cryptomator.networking.SSLContextWithWindowsCertStore;
import org.cryptomator.ui.fxapp.JfxRevealPathService;
import org.cryptomator.ui.fxapp.JfxUiAppearanceProvider;
import org.cryptomator.ui.traymenu.AwtTrayMenuController;
@@ -66,7 +64,6 @@ open module org.cryptomator.desktop {
uses org.cryptomator.event.NotificationHandler;
provides UiAppearanceProvider with JfxUiAppearanceProvider;
provides RevealPathService with JfxRevealPathService;
provides TrayMenuController with AwtTrayMenuController;
provides Configurator with LogbackConfiguratorFactory;
provides SSLContextProvider with SSLContextWithWindowsCertStore, SSLContextWithMacKeychain, SSLContextWithPKCS12TrustStore;

View File

@@ -22,6 +22,8 @@ import javax.inject.Named;
import javax.inject.Singleton;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Comparator;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.SynchronousQueue;
@@ -74,8 +76,8 @@ public abstract class CommonsModule {
@Provides
@Singleton
static RevealPathService provideRevealPathService() {
return RevealPathService.get().findFirst().orElseThrow();
static Optional<RevealPathService> provideRevealPathService() {
return RevealPathService.get().findFirst();
}

View File

@@ -1,7 +1,7 @@
package org.cryptomator.common;
import org.jetbrains.annotations.VisibleForTesting;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.Properties;
@@ -13,12 +13,10 @@ public class SubstitutingProperties extends PropertiesDecorator {
private static final Pattern TEMPLATE = Pattern.compile("@\\{(\\w+)}");
private final Map<String, String> env;
private final Logger logger;
public SubstitutingProperties(Properties props, Map<String, String> systemEnvironment, Logger logger) {
public SubstitutingProperties(Properties props, Map<String, String> systemEnvironment) {
super(props);
this.env = systemEnvironment;
this.logger = logger;
}
@Override
@@ -46,7 +44,7 @@ public class SubstitutingProperties extends PropertiesDecorator {
case "localappdata" -> resolveFrom("LOCALAPPDATA", Source.ENV);
case "userhome" -> resolveFrom("user.home", Source.PROPS);
default -> {
logger.warn("Unknown variable {} in property value {}.", match.group(), value);
LoggerFactory.getLogger(SubstitutingProperties.class).warn("Unknown variable {} in property value {}.", match.group(), value);
yield match.group();
}
});
@@ -58,7 +56,7 @@ public class SubstitutingProperties extends PropertiesDecorator {
case PROPS -> delegate.getProperty(key);
};
if (val == null) {
logger.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 "";
} else {
return Matcher.quoteReplacement(val);

View File

@@ -36,7 +36,7 @@ public class Cryptomator {
static {
var adminProps = AdminPropertiesFactory.create();
var lazyProcessedProps = new SubstitutingProperties(adminProps, System.getenv(), EventualLogger.INSTANCE);
var lazyProcessedProps = new SubstitutingProperties(adminProps, System.getenv());
System.setProperties(lazyProcessedProps);
CRYPTOMATOR_COMPONENT = DaggerCryptomatorComponent.factory().create(STARTUP_TIME);
LOG = LoggerFactory.getLogger(Cryptomator.class);
@@ -65,6 +65,7 @@ public class Cryptomator {
}
public static void main(String[] args) {
EventualLogger.INSTANCE.drainTo(LOG);
var printVersion = Optional.ofNullable(args) //
.stream() //Streams either one element (the args-array) or zero elements
.flatMap(Arrays::stream) //
@@ -90,11 +91,10 @@ public class Cryptomator {
* @return Nonzero exit code in case of an error.
*/
private int run(String[] args) {
debugMode.initialize();
EventualLogger.INSTANCE.drainTo(LOG);
env.log();
LOG.debug("Dagger graph initialized after {}ms", System.currentTimeMillis() - STARTUP_TIME);
LOG.info("Starting Cryptomator {} on {} {} ({})", env.getAppVersion(), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH);
debugMode.initialize();
supportedLanguages.applyPreferred();
changeDefaultSSLContext();
/*

View File

@@ -18,7 +18,7 @@ abstract class SSLContextDifferentTrustStoreBase implements SSLContextProvider {
public SSLContext getContext(SecureRandom csprng) throws SSLContextBuildException {
try {
KeyStore truststore = getTruststore();
ensureLoaded(truststore);
truststore.load(null, null);
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(truststore);
@@ -30,13 +30,4 @@ abstract class SSLContextDifferentTrustStoreBase implements SSLContextProvider {
throw new SSLContextBuildException(e);
}
}
static void ensureLoaded(KeyStore truststore) throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException {
try {
truststore.aliases();
} catch (KeyStoreException e) {
// Not initialized yet (e.g. custom KeyStore SPI); initialize without replacing preloaded stores.
truststore.load(null, null);
}
}
}

View File

@@ -1,73 +1,21 @@
package org.cryptomator.networking;
import org.cryptomator.common.Nullable;
import org.cryptomator.integrations.common.OperatingSystem;
import org.jetbrains.annotations.VisibleForTesting;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.cert.CertificateException;
import java.util.List;
import java.util.Properties;
/**
* SSLContextProvider for Windows using the Windows certificate store as trust store and the bundled JDK cacerts as fallback
* SSLContextProvider for Windows using the Windows certificate store as trust store
* <p>
* In order to work, the jdk.crypto.mscapi jmod is needed
*/
@OperatingSystem(OperatingSystem.Value.WINDOWS)
public class SSLContextWithWindowsCertStore extends SSLContextDifferentTrustStoreBase implements SSLContextProvider {
private static final Logger LOG = LoggerFactory.getLogger(SSLContextWithWindowsCertStore.class);
private static final String DEFAULT_TRUSTSTORE_PASSWORD = "changeit"; //default JDK cacerts password
@Override
KeyStore getTruststore() throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException {
var windowsKeyStore = KeyStore.getInstance("WINDOWS-ROOT");
var jdkKeyStore = getShippedCaCertsStore();
if (jdkKeyStore == null) {
return windowsKeyStore;
}
ensureLoaded(windowsKeyStore);
ensureLoaded(jdkKeyStore);
try {
CombinedKeyStoreSpi spi = CombinedKeyStoreSpi.create(windowsKeyStore, jdkKeyStore);
Provider dummyProvider = new Provider("CombinedKeyStoreProvider", "1.0", "Provides a combined, read-only KeyStore") {};
return new KeyStore(spi, dummyProvider, "CombinedKeyStoreProvider") {};
} catch (IllegalArgumentException e) {
throw new KeyStoreException(e);
}
}
@Nullable
KeyStore getShippedCaCertsStore() {
return getCaCertsStoreByProperties(System.getProperties());
}
//for testability
@VisibleForTesting
@Nullable
KeyStore getCaCertsStoreByProperties(Properties props) {
var javaHome = Path.of(props.getProperty("java.home"));
var trustStorePassword = props.getProperty("javax.net.ssl.trustStorePassword", DEFAULT_TRUSTSTORE_PASSWORD).toCharArray();
for (var candidate : List.of(javaHome.resolve("lib/security/cacerts"), javaHome.resolve("conf/security/cacerts"))) {
try {
if (Files.isRegularFile(candidate)) {
return KeyStore.getInstance(candidate.toFile(), trustStorePassword);
}
} catch (CertificateException | KeyStoreException | IOException | NoSuchAlgorithmException e) {
LOG.info("Unable to load fallback cacerts {} file. Skipping fallback.", candidate, e);
}
}
return null;
KeyStore getTruststore() throws KeyStoreException {
return KeyStore.getInstance("WINDOWS-ROOT");
}
}

View File

@@ -1,16 +1,17 @@
package org.cryptomator.ui.common;
import dagger.Lazy;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.VaultState;
import org.cryptomator.integrations.mount.Mountpoint;
import org.cryptomator.integrations.mount.UnmountFailedException;
import org.cryptomator.integrations.revealpath.RevealFailedException;
import org.cryptomator.integrations.revealpath.RevealPathService;
import org.cryptomator.ui.fxapp.FxApplicationScoped;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javafx.application.Application;
import javafx.application.HostServices;
import javafx.concurrent.Task;
import javafx.stage.Stage;
import java.io.IOException;
@@ -27,12 +28,12 @@ public class VaultService {
private static final Logger LOG = LoggerFactory.getLogger(VaultService.class);
private final RevealPathService revealPathService;
private final Lazy<Application> application;
private final ExecutorService executorService;
@Inject
public VaultService(RevealPathService revealPathService, ExecutorService executorService) {
this.revealPathService = revealPathService;
public VaultService(Lazy<Application> application, ExecutorService executorService) {
this.application = application;
this.executorService = executorService;
}
@@ -46,9 +47,9 @@ public class VaultService {
* @param vault The vault to reveal
*/
public Task<Vault> createRevealTask(Vault vault) {
Task<Vault> task = new RevealVaultTask(vault, revealPathService);
task.setOnSucceeded(_ -> LOG.info("Revealed {}", vault.getDisplayName()));
task.setOnFailed(evt -> LOG.warn("Failed to reveal {}", vault.getDisplayName(), evt.getSource().getException()));
Task<Vault> task = new RevealVaultTask(vault, application.get().getHostServices());
task.setOnSucceeded(evt -> LOG.info("Revealed {}", vault.getDisplayName()));
task.setOnFailed(evt -> LOG.error("Failed to reveal " + vault.getDisplayName(), evt.getSource().getException()));
return task;
}
@@ -109,18 +110,19 @@ public class VaultService {
private static class RevealVaultTask extends Task<Vault> {
private final Vault vault;
private final RevealPathService rs;
private final HostServices hostServices;
public RevealVaultTask(Vault vault, RevealPathService revealPathService) {
public RevealVaultTask(Vault vault, HostServices hostServices) {
this.vault = vault;
this.rs = revealPathService;
this.hostServices = hostServices;
setOnFailed(evt -> LOG.error("Failed to reveal " + vault.getDisplayName(), getException()));
}
@Override
protected Vault call() throws RevealFailedException {
protected Vault call() {
switch (vault.getMountPoint()) {
case null -> LOG.warn("Not currently mounted");
case Mountpoint.WithPath m -> rs.reveal(m.path());
case Mountpoint.WithPath m -> hostServices.showDocument(m.uri().toString());
case Mountpoint.WithUri m -> LOG.info("Vault mounted at {}", m.uri()); // TODO show in UI?
}
return vault;

View File

@@ -2,17 +2,18 @@ package org.cryptomator.ui.eventview;
import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.Constants;
import org.cryptomator.cryptofs.event.FileIsInUseEvent;
import org.cryptomator.event.FSEventBucket;
import org.cryptomator.event.FSEventBucketContent;
import org.cryptomator.event.FileSystemEventAggregator;
import org.cryptomator.common.Nullable;
import org.cryptomator.common.ObservableUtil;
import org.cryptomator.cryptofs.CryptoPath;
import org.cryptomator.cryptofs.event.BrokenDirFileEvent;
import org.cryptomator.cryptofs.event.BrokenFileNodeEvent;
import org.cryptomator.cryptofs.event.ConflictResolutionFailedEvent;
import org.cryptomator.cryptofs.event.ConflictResolvedEvent;
import org.cryptomator.cryptofs.event.DecryptionFailedEvent;
import org.cryptomator.cryptofs.event.FileIsInUseEvent;
import org.cryptomator.event.FSEventBucket;
import org.cryptomator.event.FSEventBucketContent;
import org.cryptomator.event.FileSystemEventAggregator;
import org.cryptomator.integrations.revealpath.RevealFailedException;
import org.cryptomator.integrations.revealpath.RevealPathService;
import org.cryptomator.ui.common.FxController;
@@ -45,6 +46,7 @@ import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Map;
import java.util.Optional;
import java.util.ResourceBundle;
import java.util.function.Function;
@@ -55,6 +57,7 @@ public class EventListCellController implements FxController {
private static final DateTimeFormatter LOCAL_TIME_FORMATTER = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT).withZone(ZoneId.systemDefault());
private final FileSystemEventAggregator fileSystemEventAggregator;
@Nullable
private final RevealPathService revealService;
private final ResourceBundle resourceBundle;
private final ObjectProperty<Map.Entry<FSEventBucket, FSEventBucketContent>> eventEntry;
@@ -79,17 +82,15 @@ public class EventListCellController implements FxController {
Button eventActionsButton;
@Inject
public EventListCellController(FileSystemEventAggregator fileSystemEventAggregator,
RevealPathService revealService,
ResourceBundle resourceBundle) {
public EventListCellController(FileSystemEventAggregator fileSystemEventAggregator, Optional<RevealPathService> revealService, ResourceBundle resourceBundle) {
this.fileSystemEventAggregator = fileSystemEventAggregator;
this.revealService = revealService;
this.revealService = revealService.orElseGet(() -> null);
this.resourceBundle = resourceBundle;
this.eventEntry = new SimpleObjectProperty<>(null);
this.eventMessage = new SimpleStringProperty();
this.eventDescription = new SimpleStringProperty();
this.eventIcon = new SimpleObjectProperty<>();
this.eventCount = ObservableUtil.mapWithDefault(eventEntry, e -> e.getValue().count() == 1 ? "" : "(" + e.getValue().count() + ")", "");
this.eventCount = ObservableUtil.mapWithDefault(eventEntry, e -> e.getValue().count() == 1? "" : "("+ e.getValue().count() +")", "");
this.vaultUnlocked = ObservableUtil.mapWithDefault(eventEntry.flatMap(e -> e.getKey().vault().unlockedProperty()), Function.identity(), false);
this.readableTime = ObservableUtil.mapWithDefault(eventEntry, e -> LOCAL_TIME_FORMATTER.format(e.getValue().mostRecentEvent().getTimestamp()), "");
this.readableDate = ObservableUtil.mapWithDefault(eventEntry, e -> LOCAL_DATE_FORMATTER.format(e.getValue().mostRecentEvent().getTimestamp()), "");
@@ -135,8 +136,13 @@ public class EventListCellController implements FxController {
eventMessage.setValue(resourceBundle.getString("eventView.entry.inUse.message"));
var indexFileName = fiiue.cleartextPath().lastIndexOf("/");
eventDescription.setValue(fiiue.cleartextPath().substring(indexFileName + 1));
addLocalizedAction("eventView.entry.inUse.showDecrypted", () -> reveal(revealService, convertVaultPathToSystemPath(fiiue.cleartextPath())));
addLocalizedAction("eventView.entry.inUse.showEncrypted", () -> reveal(revealService, fiiue.ciphertextPath()));
if (revealService != null) {
addLocalizedAction("eventView.entry.inUse.showDecrypted", () -> reveal(revealService, convertVaultPathToSystemPath(fiiue.cleartextPath())));
addLocalizedAction("eventView.entry.inUse.showEncrypted", () -> reveal(revealService, fiiue.ciphertextPath()));
} else {
addLocalizedAction("eventView.entry.inUse.copyDecrypted", () -> copyToClipboard(convertVaultPathToSystemPath(fiiue.cleartextPath()).toString()));
addLocalizedAction("eventView.entry.inUse.copyEncrypted", () -> copyToClipboard(fiiue.ciphertextPath().toString()));
}
var userAndDevice = fiiue.owner().split(Constants.HUB_USER_DEVICE_SEPARATOR);
var user = userAndDevice[0];
@@ -150,7 +156,11 @@ public class EventListCellController implements FxController {
eventIcon.setValue(FontAwesome5Icon.TIMES);
eventMessage.setValue(resourceBundle.getString("eventView.entry.brokenFileNode.message"));
eventDescription.setValue(bfe.ciphertextPath().getFileName().toString());
addLocalizedAction("eventView.entry.brokenFileNode.showEncrypted", () -> reveal(revealService, bfe.ciphertextPath()));
if (revealService != null) {
addLocalizedAction("eventView.entry.brokenFileNode.showEncrypted", () -> reveal(revealService, bfe.ciphertextPath()));
} else {
addLocalizedAction("eventView.entry.brokenFileNode.copyEncrypted", () -> copyToClipboard(bfe.ciphertextPath().toString()));
}
addLocalizedAction("eventView.entry.brokenFileNode.copyDecrypted", () -> copyToClipboard(convertVaultPathToSystemPath(bfe.cleartextPath()).toString()));
}
@@ -158,29 +168,46 @@ public class EventListCellController implements FxController {
eventIcon.setValue(FontAwesome5Icon.CHECK);
eventMessage.setValue(resourceBundle.getString("eventView.entry.conflictResolved.message"));
eventDescription.setValue(cre.resolvedCiphertextPath().getFileName().toString());
addLocalizedAction("eventView.entry.conflictResolved.showDecrypted", () -> reveal(revealService, convertVaultPathToSystemPath(cre.resolvedCleartextPath())));
if (revealService != null) {
addLocalizedAction("eventView.entry.conflictResolved.showDecrypted", () -> reveal(revealService, convertVaultPathToSystemPath(cre.resolvedCleartextPath())));
} else {
addLocalizedAction("eventView.entry.conflictResolved.copyDecrypted", () -> copyToClipboard(convertVaultPathToSystemPath(cre.resolvedCleartextPath()).toString()));
}
}
private void adjustToConflictEvent(ConflictResolutionFailedEvent cfe) {
eventIcon.setValue(FontAwesome5Icon.COMPRESS_ALT);
eventMessage.setValue(resourceBundle.getString("eventView.entry.conflict.message"));
eventDescription.setValue(cfe.conflictingCiphertextPath().getFileName().toString());
addLocalizedAction("eventView.entry.conflict.showDecrypted", () -> reveal(revealService, convertVaultPathToSystemPath(cfe.canonicalCleartextPath())));
addLocalizedAction("eventView.entry.conflict.showEncrypted", () -> reveal(revealService, cfe.conflictingCiphertextPath()));
if (revealService != null) {
addLocalizedAction("eventView.entry.conflict.showDecrypted", () -> reveal(revealService, convertVaultPathToSystemPath(cfe.canonicalCleartextPath())));
addLocalizedAction("eventView.entry.conflict.showEncrypted", () -> reveal(revealService, cfe.conflictingCiphertextPath()));
} else {
addLocalizedAction("eventView.entry.conflict.copyDecrypted", () -> copyToClipboard(convertVaultPathToSystemPath(cfe.canonicalCleartextPath()).toString()));
addLocalizedAction("eventView.entry.conflict.copyEncrypted", () -> copyToClipboard(cfe.conflictingCiphertextPath().toString()));
}
}
private void adjustToDecryptionFailedEvent(DecryptionFailedEvent dfe) {
eventIcon.setValue(FontAwesome5Icon.BAN);
eventMessage.setValue(resourceBundle.getString("eventView.entry.decryptionFailed.message"));
eventDescription.setValue(dfe.ciphertextPath().getFileName().toString());
addLocalizedAction("eventView.entry.decryptionFailed.showEncrypted", () -> reveal(revealService, dfe.ciphertextPath()));
if (revealService != null) {
addLocalizedAction("eventView.entry.decryptionFailed.showEncrypted", () -> reveal(revealService, dfe.ciphertextPath()));
} else {
addLocalizedAction("eventView.entry.decryptionFailed.copyEncrypted", () -> copyToClipboard(dfe.ciphertextPath().toString()));
}
}
private void adjustToBrokenDirFileEvent(BrokenDirFileEvent bde) {
eventIcon.setValue(FontAwesome5Icon.TIMES);
eventMessage.setValue(resourceBundle.getString("eventView.entry.brokenDirFile.message"));
eventDescription.setValue(bde.ciphertextPath().getParent().getFileName().toString());
addLocalizedAction("eventView.entry.brokenDirFile.showEncrypted", () -> reveal(revealService, bde.ciphertextPath()));
if (revealService != null) {
addLocalizedAction("eventView.entry.brokenDirFile.showEncrypted", () -> reveal(revealService, bde.ciphertextPath()));
} else {
addLocalizedAction("eventView.entry.brokenDirFile.copyEncrypted", () -> copyToClipboard(bde.ciphertextPath().toString()));
}
}
private void addLocalizedAction(String localizationKey, Runnable action) {
@@ -243,7 +270,7 @@ public class EventListCellController implements FxController {
}
var mountPoint = v.getMountPoint().uri().getPath();
if (SystemUtils.IS_OS_WINDOWS) {
if(SystemUtils.IS_OS_WINDOWS) {
mountPoint = mountPoint.substring(1); //strip away any leading "/", otherwise there are errors
}
return Path.of(mountPoint, vaultInternalPath.substring(1)); //vaultPaths are always absolute

View File

@@ -10,20 +10,16 @@ import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javax.inject.Named;
import javafx.application.Application;
import javafx.application.Platform;
import java.time.Duration;
import java.time.Instant;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
@FxApplicationScoped
public class FxApplication {
private static final Logger LOG = LoggerFactory.getLogger(FxApplication.class);
static final AtomicReference<Application> INSTANCE = new AtomicReference<>();
private final long startupTime;
private final Environment environment;
private final Settings settings;
@@ -37,8 +33,7 @@ public class FxApplication {
private final FxNotificationManager notificationManager;
@Inject
FxApplication(Application fxApp,
@Named("startupTime") long startupTime, //
FxApplication(@Named("startupTime") long startupTime, //
Environment environment, //
Settings settings, //
AppLaunchEventHandler launchEventHandler, //
@@ -60,8 +55,6 @@ public class FxApplication {
this.autoUnlocker = autoUnlocker;
this.fxFSEventList = fxFSEventList;
this.notificationManager = notificationManager;
INSTANCE.set(fxApp);
}
public void start() {

View File

@@ -1,37 +0,0 @@
package org.cryptomator.ui.fxapp;
import org.cryptomator.integrations.common.DisplayName;
import org.cryptomator.integrations.common.OperatingSystem;
import org.cryptomator.integrations.common.Priority;
import org.cryptomator.integrations.revealpath.RevealFailedException;
import org.cryptomator.integrations.revealpath.RevealPathService;
import java.nio.file.Path;
/**
* A {@link RevealPathService} service implementation using the JavaFX {@link javafx.application.HostServices#showDocument(String)} to reveal documents.
* <p>
* Internally the HostServices class uses GTK on Linux.
*
* @implNote {@link #reveal(Path)} only succeeds when the class {@link FxApplication} is initialized.
*/
@DisplayName("JavaFX HostServices (GTK)")
@OperatingSystem(OperatingSystem.Value.LINUX)
@Priority(10)
public class JfxRevealPathService implements RevealPathService {
@Override
public void reveal(Path p) throws RevealFailedException {
var fxApp = FxApplication.INSTANCE.get();
if (fxApp != null) {
fxApp.getHostServices().showDocument(p.toUri().toString());
} else {
throw new RevealFailedException("JavaFX Application not initialized");
}
}
@Override
public boolean isSupported() {
return true;
}
}

View File

@@ -4,12 +4,9 @@ import com.google.common.base.Throwables;
import org.cryptomator.common.Environment;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.cryptofs.VaultConfig;
import org.cryptomator.integrations.revealpath.RevealFailedException;
import org.cryptomator.integrations.revealpath.RevealPathService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javafx.application.Application;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
@@ -28,7 +25,6 @@ import java.util.stream.Collectors;
@HealthCheckScoped
public class ReportWriter {
private static final Logger LOG = LoggerFactory.getLogger(ReportWriter.class);
private static final String REPORT_HEADER = """
*******************************************
* Cryptomator Vault Health Report *
@@ -47,14 +43,14 @@ public class ReportWriter {
private final Vault vault;
private final VaultConfig vaultConfig;
private final RevealPathService revealPathService;
private final Application application;
private final Path exportDestination;
@Inject
public ReportWriter(@HealthCheckWindow Vault vault, AtomicReference<VaultConfig> vaultConfigRef, RevealPathService revealPathService, Environment env) {
public ReportWriter(@HealthCheckWindow Vault vault, AtomicReference<VaultConfig> vaultConfigRef, Application application, Environment env) {
this.vault = vault;
this.vaultConfig = Objects.requireNonNull(vaultConfigRef.get());
this.revealPathService = revealPathService;
this.application = application;
this.exportDestination = env.getLogDir().orElse(Path.of(System.getProperty("user.home"))).resolve("healthReport_" + vault.getDisplayName() + "_" + TIME_STAMP.format(Instant.now()) + ".log");
}
@@ -96,11 +92,7 @@ public class ReportWriter {
}
private void reveal() {
try {
revealPathService.reveal(exportDestination.getParent());
} catch (RevealFailedException e) {
LOG.warn("Failed to reveal export destination location of report", e);
}
application.getHostServices().showDocument(exportDestination.getParent().toUri().toString());
}
}

View File

@@ -2,17 +2,14 @@ package org.cryptomator.ui.mainwindow;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.VaultState;
import org.cryptomator.integrations.revealpath.RevealFailedException;
import org.cryptomator.integrations.revealpath.RevealPathService;
import org.cryptomator.ui.common.Animations;
import org.cryptomator.ui.common.AutoAnimator;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.controls.FontAwesome5Icon;
import org.cryptomator.ui.controls.FontAwesome5IconView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javafx.application.Application;
import javafx.beans.binding.BooleanBinding;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ReadOnlyObjectProperty;
@@ -22,12 +19,10 @@ import javafx.fxml.FXML;
@MainWindowScoped
public class VaultDetailController implements FxController {
private static final Logger LOG = LoggerFactory.getLogger(VaultDetailController.class);
private final ReadOnlyObjectProperty<Vault> vault;
private final Application application;
private final ObservableValue<FontAwesome5Icon> glyph;
private final BooleanBinding anyVaultSelected;
private final RevealPathService revealPathService;
private AutoAnimator spinAnimation;
@@ -36,11 +31,11 @@ public class VaultDetailController implements FxController {
@Inject
VaultDetailController(ObjectProperty<Vault> vault, RevealPathService revealPathService) {
VaultDetailController(ObjectProperty<Vault> vault, Application application) {
this.vault = vault;
this.application = application;
this.glyph = vault.flatMap(Vault::stateProperty).map(this::getGlyphForVaultState);
this.anyVaultSelected = vault.isNotNull();
this.revealPathService = revealPathService;
}
public void initialize() {
@@ -66,11 +61,7 @@ public class VaultDetailController implements FxController {
@FXML
public void revealStorageLocation() {
try {
revealPathService.reveal(vault.get().getPath());
} catch (RevealFailedException e) {
LOG.warn("Failed to reveal vault storage location", e);
}
application.getHostServices().showDocument(vault.get().getPath().toUri().toString());
}
/* Observable Properties */

View File

@@ -21,6 +21,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javafx.application.Platform;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ReadOnlyObjectProperty;
@@ -30,6 +31,7 @@ import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.DataFormat;
import javafx.scene.input.DragEvent;
import javafx.scene.input.TransferMode;
import javafx.stage.FileChooser;
@@ -38,8 +40,12 @@ import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.ResourceBundle;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -54,7 +60,7 @@ public class VaultDetailUnlockedController implements FxController {
private final VaultService vaultService;
private final WrongFileAlertComponent.Builder wrongFileAlert;
private final Stage mainWindow;
private final RevealPathService revealPathService;
private final Optional<RevealPathService> revealPathService;
private final DecryptNameComponent.Factory decryptNameWindowFactory;
private final ResourceBundle resourceBundle;
private final LoadingCache<Vault, VaultStatisticsComponent> vaultStats;
@@ -78,7 +84,7 @@ public class VaultDetailUnlockedController implements FxController {
VaultStatisticsComponent.Builder vaultStatsBuilder, //
WrongFileAlertComponent.Builder wrongFileAlert, //
@MainWindow Stage mainWindow, //
RevealPathService revealPathService, //
Optional<RevealPathService> revealPathService, //
DecryptNameComponent.Factory decryptNameWindowFactory, //
ResourceBundle resourceBundle) {
this.vault = vault;
@@ -105,7 +111,7 @@ public class VaultDetailUnlockedController implements FxController {
public void initialize() {
revealEncryptedDropZone.setOnDragOver(e -> handleDragOver(e, draggingOverLocateEncrypted));
revealEncryptedDropZone.setOnDragDropped(e -> handleDragDropped(e, this::getCiphertextPath, this::revealPaths));
revealEncryptedDropZone.setOnDragDropped(e -> handleDragDropped(e, this::getCiphertextPath, this::revealOrCopyPaths));
revealEncryptedDropZone.setOnDragExited(_ -> draggingOverLocateEncrypted.setValue(false));
decryptNameDropZone.setOnDragOver(e -> handleDragOver(e, draggingOverDecryptName));
@@ -150,7 +156,7 @@ public class VaultDetailUnlockedController implements FxController {
if (cleartextFile != null) {
var ciphertextPath = getCiphertextPath(cleartextFile.toPath());
if (ciphertextPath != null) {
revealPaths(List.of(ciphertextPath));
revealOrCopyPaths(List.of(ciphertextPath));
}
}
}
@@ -182,18 +188,34 @@ public class VaultDetailUnlockedController implements FxController {
}
}
private void revealPaths(List<Path> paths) {
private void revealOrCopyPaths(List<Path> paths) {
revealPathService.ifPresentOrElse(svc -> revealPaths(svc, paths), () -> {
LOG.warn("No service provider to reveal files found.");
copyPathsToClipboard(paths);
});
}
private void revealPaths(RevealPathService service, List<Path> paths) {
paths.forEach(path -> {
try {
LOG.debug("Revealing {}", path);
revealPathService.reveal(path);
service.reveal(path);
} catch (RevealFailedException e) {
//TODO: show popup in ui
LOG.error("Revealing ciphertext file failed.", e);
}
});
}
private void copyPathsToClipboard(List<Path> paths) {
StringBuilder clipboardString = new StringBuilder();
paths.forEach(p -> clipboardString.append(p.toString()).append("\n"));
Clipboard.getSystemClipboard().setContent(Map.of(DataFormat.PLAIN_TEXT, clipboardString.toString()));
ciphertextPathsCopied.setValue(true);
CompletableFuture.delayedExecutor(2, TimeUnit.SECONDS, Platform::runLater).execute(() -> {
ciphertextPathsCopied.set(false);
});
}
private VaultStatisticsComponent buildVaultStats(Vault vault) {
return vaultStatsBuilder.vault(vault).build();
}

View File

@@ -10,14 +10,13 @@ import org.cryptomator.integrations.common.NamedServiceProvider;
import org.cryptomator.integrations.keychain.KeychainAccessException;
import org.cryptomator.integrations.keychain.KeychainAccessProvider;
import org.cryptomator.integrations.quickaccess.QuickAccessService;
import org.cryptomator.integrations.revealpath.RevealFailedException;
import org.cryptomator.integrations.revealpath.RevealPathService;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.fxapp.FxApplicationWindows;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javafx.application.Application;
import javafx.beans.Observable;
import javafx.beans.binding.Bindings;
import javafx.fxml.FXML;
@@ -42,7 +41,7 @@ public class GeneralPreferencesController implements FxController {
private final Settings settings;
private final Optional<AutoStartProvider> autoStartProvider;
private final List<QuickAccessService> quickAccessServices;
private final RevealPathService revealPathService;
private final Application application;
private final Environment environment;
private final List<KeychainAccessProvider> keychainAccessProviders;
private final KeychainManager keychain;
@@ -61,15 +60,9 @@ public class GeneralPreferencesController implements FxController {
private CompletionStage<Void> keychainMigrations = CompletableFuture.completedFuture(null);
@Inject
GeneralPreferencesController(@PreferencesWindow Stage window, //
Settings settings, //
Optional<AutoStartProvider> autoStartProvider, //
List<KeychainAccessProvider> keychainAccessProviders, //
KeychainManager keychain, //
RevealPathService revealPathService, //
Environment environment, //
FxApplicationWindows appWindows, //
ExecutorService backgroundExecutor) {
GeneralPreferencesController(@PreferencesWindow Stage window, Settings settings, Optional<AutoStartProvider> autoStartProvider, //
List<KeychainAccessProvider> keychainAccessProviders, KeychainManager keychain, Application application, //
Environment environment, FxApplicationWindows appWindows, ExecutorService backgroundExecutor) {
this.window = window;
this.settings = settings;
this.autoStartProvider = autoStartProvider;
@@ -77,7 +70,7 @@ public class GeneralPreferencesController implements FxController {
this.keychain = keychain;
this.backgroundExecutor = backgroundExecutor;
this.quickAccessServices = QuickAccessService.get().toList();
this.revealPathService = revealPathService;
this.application = application;
this.environment = environment;
this.appWindows = appWindows;
}
@@ -155,11 +148,7 @@ public class GeneralPreferencesController implements FxController {
@FXML
public void showLogfileDirectory() {
try {
revealPathService.reveal(environment.getLogDir().orElseThrow());
} catch (RevealFailedException e) {
LOG.warn("Failed to reveal log files directory.", e);
}
environment.getLogDir().ifPresent(logDirPath -> application.getHostServices().showDocument(logDirPath.toUri().toString()));
}
/* Helper classes */
@@ -207,5 +196,4 @@ public class GeneralPreferencesController implements FxController {
}
}
}
}

View File

@@ -3,19 +3,18 @@ package org.cryptomator.ui.preferences;
import org.cryptomator.common.Environment;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.integrations.revealpath.RevealFailedException;
import org.cryptomator.integrations.revealpath.RevealPathService;
import org.cryptomator.integrations.update.UpdateStep;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.common.VaultService;
import org.cryptomator.updater.FallbackUpdateInfo;
import org.cryptomator.updater.UpdateChecker;
import org.cryptomator.updater.FallbackUpdateInfo;
import org.cryptomator.updater.UpdateService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javafx.animation.PauseTransition;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding;
@@ -50,7 +49,7 @@ public class UpdatesPreferencesController implements FxController {
private static final Logger LOG = LoggerFactory.getLogger(UpdatesPreferencesController.class);
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(Locale.getDefault());
private final RevealPathService revealPathService;
private final Application application;
private final Environment environment;
private final ResourceBundle resourceBundle;
private final Settings settings;
@@ -73,8 +72,8 @@ public class UpdatesPreferencesController implements FxController {
public CheckBox checkForUpdatesCheckbox;
@Inject
UpdatesPreferencesController(RevealPathService revealPathService, Environment environment, ResourceBundle resourceBundle, Settings settings, UpdateChecker updateChecker, ObservableList<Vault> vaults, VaultService vaultService) {
this.revealPathService = revealPathService;
UpdatesPreferencesController(Application application, Environment environment, ResourceBundle resourceBundle, Settings settings, UpdateChecker updateChecker, ObservableList<Vault> vaults, VaultService vaultService) {
this.application = application;
this.environment = environment;
this.resourceBundle = resourceBundle;
this.settings = settings;
@@ -107,14 +106,9 @@ public class UpdatesPreferencesController implements FxController {
updateService.setOnFailed(this::updateFailed);
}
@FXML
public void showLogfileDirectory() {
try {
revealPathService.reveal(environment.getLogDir().orElseThrow());
} catch (RevealFailedException e) {
LOG.warn("Failed to reveal log files directory.", e);
}
environment.getLogDir().ifPresent(logDirPath -> application.getHostServices().showDocument(logDirPath.toUri().toString()));
}
@FXML

View File

@@ -15,7 +15,7 @@
<BorderPane xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fx:controller="org.cryptomator.ui.notification.NotificationController"
prefHeight="224.0" prefWidth="400.0" maxHeight="224.0" maxWidth="400.0"
prefHeight="200.0" prefWidth="400.0" maxHeight="200.0" maxWidth="400.0"
styleClass="notification-window"
accessibleRole="DIALOG">
<padding>
@@ -65,7 +65,7 @@
<Label text="${controller.message}" styleClass="label-large" wrapText="true"/>
<Label text="${controller.fileName}" styleClass="label" textOverrun="CENTER_ELLIPSIS" visible="${!controller.fileName.empty}" managed="${!controller.fileName.empty}"/>
<Region minHeight="6"/>
<ScrollPane minViewportWidth="370" minViewportHeight="70">
<ScrollPane minViewportWidth="370" minViewportHeight="50">
<Label text="${controller.description}" styleClass="label" wrapText="true" maxWidth="370"/>
</ScrollPane>
<Region VBox.vgrow="ALWAYS"/>

View File

@@ -17,22 +17,22 @@
<TextArea wrapText="true" prefRowCount="4" fx:id="textarea" textFormatter="${controller.recoveryKeyTextFormatter}" onKeyPressed="#onKeyPressed"/>
<VBox>
<Label text="%recoveryKey.recover.wrongKey" visible="false" managed="${textarea.text.empty}" graphicTextGap="6" wrapText="true" >
<Label text="Just some Filler" visible="false" managed="${textarea.text.empty}" graphicTextGap="6">
<graphic>
<FontAwesome5IconView glyph="ANCHOR"/>
</graphic>
</Label>
<Label text="%recoveryKey.recover.correctKey" graphicTextGap="6" wrapText="true" visible="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyCorrect}" managed="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyCorrect}">
<Label text="%recoveryKey.recover.correctKey" graphicTextGap="6" visible="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyCorrect}" managed="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyCorrect}">
<graphic>
<FontAwesome5IconView glyph="CHECK"/>
</graphic>
</Label>
<Label text="%recoveryKey.recover.wrongKey" graphicTextGap="6" wrapText="true" visible="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyWrong}" managed="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyWrong}">
<Label text="%recoveryKey.recover.wrongKey" graphicTextGap="6" visible="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyWrong}" managed="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyWrong}">
<graphic>
<FontAwesome5IconView glyph="TIMES" styleClass="glyph-icon-red"/>
</graphic>
</Label>
<Label text="%recoveryKey.recover.invalidKey" graphicTextGap="6" wrapText="true" visible="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyInvalid}" managed="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyInvalid}">
<Label text="%recoveryKey.recover.invalidKey" graphicTextGap="6" visible="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyInvalid}" managed="${(!textarea.text.empty) &amp;&amp; controller.recoveryKeyInvalid}">
<graphic>
<FontAwesome5IconView glyph="TIMES" styleClass="glyph-icon-red"/>
</graphic>

View File

@@ -696,25 +696,33 @@ eventView.cell.actionsButton.tooltip=Event actions
eventView.entry.vaultLocked.description=Unlock "%s" for details
eventView.entry.conflictResolved.message=Resolved conflict
eventView.entry.conflictResolved.showDecrypted=Show decrypted file
eventView.entry.conflictResolved.copyDecrypted=Copy decrypted path
eventView.entry.conflict.message=Conflict resolution failed
eventView.entry.conflict.showDecrypted=Show decrypted, original file
eventView.entry.conflict.copyDecrypted=Copy decrypted, original path
eventView.entry.conflict.showEncrypted=Show conflicting, encrypted file
eventView.entry.conflict.copyEncrypted=Copy conflicting, encrypted path
eventView.entry.decryptionFailed.message=Decryption failed
eventView.entry.decryptionFailed.showEncrypted=Show encrypted file
eventView.entry.decryptionFailed.copyEncrypted=Copy encrypted path
eventView.entry.brokenDirFile.message=Broken directory link
eventView.entry.brokenDirFile.showEncrypted=Show broken, encrypted link
eventView.entry.brokenDirFile.copyEncrypted=Copy path of broken link
eventView.entry.brokenFileNode.message=Broken filesystem node
eventView.entry.brokenFileNode.showEncrypted=Show broken, encrypted node
eventView.entry.brokenFileNode.copyEncrypted=Copy path of broken, encrypted node
eventView.entry.brokenFileNode.copyDecrypted=Copy decrypted path
eventView.entry.inUse.message=File in use
eventView.entry.inUse.message=Locked File
eventView.entry.inUse.showDecrypted=Show decrypted file
eventView.entry.inUse.copyDecrypted=Copy decrypted path
eventView.entry.inUse.showEncrypted=Show encrypted file
eventView.entry.inUse.copyEncrypted=Copy encrypted path
eventView.entry.inUse.copyUserAndDevice=Copy locking user and device name
eventView.entry.inUse.ignoreLock=Ignore use status
eventView.entry.inUse.ignoreLock=Ignore Lock
# Notifications
## FileIsInUse Notification
notification.inUse.message=File is in use on another device
notification.inUse.description=The file is open by %s on %s. Ask them to close the file and let synchronization finish. You can ignore the status to open it now, but this may cause conflicts or overwrite newer changes.
notification.inUse.action=Ignore Use Status
notification.inUse.message=File is locked by another device
notification.inUse.description=The file is opened by %s on device %s. Ask the user to close the file and sync again. Otherwise, you can ignore the lock and open it anyway.
notification.inUse.action=Ignore Lock

View File

@@ -3,8 +3,6 @@
# Generics
## Button
## Vault state
# Error
# Defaults
@@ -38,7 +36,6 @@
### Register Device Legacy
### Registration Success
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -84,7 +81,7 @@
# Main Window
## Vault List
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -151,7 +148,3 @@
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=إغلاق
generic.button.copy=نسخ
generic.button.copied=تم النسخ!
generic.button.done=تم
generic.button.previous=السابق
generic.button.next=التالي
generic.button.print=طباعة
generic.button.remove=حذف
## Vault state
vault.state.error=خطأ
# Error
error.message=حدث خطأ ما
error.description=لم يتوقع Cryptomator حدوث ذلك. يمكنك البحث عن الحلول الموجودة لهذا الخطأ. وإذا لم يتم الإبلاغ عنه بعد، لا تتردد في فعل ذلك.
@@ -179,7 +175,6 @@ hub.registerSuccess.legacy.description=للدخول إلى الخزينة، يح
hub.registerFailed.message=فشل تسجيل الجهاز
hub.registerFailed.description.generic=حدث خطأ في عملية تسجيل الاسم. لمزيد من التفاصيل، راجع سجل التطبيق.
hub.registerFailed.description.deviceAlreadyExists=هذا الجهاز مسجل لمستخدم مختلف بالفعل. حاول تغيير حساب المستخدم أو استخدام جهاز مختلف.
### Archived
### Unauthorized
hub.unauthorized.message=تم رفض الوصول
hub.unauthorized.description=غير مسموح لك بفتح هذا المستودع. اتصل بمالك المستودع لطلب الوصول.
@@ -391,7 +386,6 @@ stats.access.total=مجموع الوصول: %d
# Main Window
## Vault List
main.vaultlist=المخازن
main.vaultlist.emptyList.onboardingInstruction=انقر هنا لإضافة خزنة
main.vaultlist.contextMenu.remove=حذف…
main.vaultlist.contextMenu.lock=قفل
@@ -400,8 +394,8 @@ main.vaultlist.contextMenu.unlockNow=افتح الان
main.vaultlist.contextMenu.vaultoptions=إظهار خيارات المخزن
main.vaultlist.contextMenu.reveal=اظهار القرص
main.vaultlist.contextMenu.share=مشاركة…
main.vaultlist.addVaultButton.tooltip=أضِف مخزنًا
##Notification
main.vaultlist.showEventsButton.tooltip=عرض الإشعارات
##Notificaition
main.notification.updateAvailable=هناك تحديث متاح.
main.notification.support=دعم Cryptomator.
## Vault Detail
@@ -630,19 +624,19 @@ eventView.clearListButton.tooltip=تفريغ القائمة
eventView.entry.vaultLocked.description=فتح "%s" للحصول على التفاصيل
eventView.entry.conflictResolved.message=تم حل التضارب
eventView.entry.conflictResolved.showDecrypted=إظهار الملف غير المشفر
eventView.entry.conflictResolved.copyDecrypted=نسخ المسار غير المشفر
eventView.entry.conflict.message=فشل حل التضارب
eventView.entry.conflict.showDecrypted=إظهار الملَف غير المشفر الأصلي
eventView.entry.conflict.copyDecrypted=نسخ المسار غير المشفر والأصلي
eventView.entry.conflict.showEncrypted=إظهار ملف متضارب ومشفر
eventView.entry.conflict.copyEncrypted=نسخ مسار التشفير المتعارض
eventView.entry.decryptionFailed.message=فشل فك التشفير
eventView.entry.decryptionFailed.showEncrypted=عرض ملَف المشفر
eventView.entry.decryptionFailed.copyEncrypted=نسخ مسار المشفر
eventView.entry.brokenDirFile.message=رابط الدليل المكسور
eventView.entry.brokenDirFile.showEncrypted=إظهار الرابط المكسور، المشفر
eventView.entry.brokenDirFile.copyEncrypted=نسخ مسار الرابط المكسور
eventView.entry.brokenFileNode.message=عقدة ملفات النظام التافلة
eventView.entry.brokenFileNode.showEncrypted=عرض العقدة المشفّرة التافلة
eventView.entry.brokenFileNode.copyEncrypted=نسخ مسار العقدة المشفّرة التافلة
eventView.entry.brokenFileNode.copyDecrypted=نسخ المسار غير المشفر
eventView.entry.inUse.showDecrypted=إظهار الملف غير المشفر
eventView.entry.inUse.showEncrypted=عرض ملَف المشفر
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=Яп
generic.button.copy=Күсермәһен ал
generic.button.copied=Күсермә алынды!
generic.button.done=Тамам
generic.button.previous=Алдағы
generic.button.next=Киләһе
generic.button.print=Баҫтыр
generic.button.remove=Алып ташлау
## Vault state
vault.state.error=Хата
# Error
error.message=Хата килеп сыҡты
error.description=Cryptomator өсөн көтөлмәгән хәл. Был хатаның булған төҙәтеү варианттарын ҡарай алаһығыҙ. Әлегә тиклем белдерелмәгән булһа, был хаҡта хәбәр итә алаһығыҙ.
@@ -167,7 +163,6 @@ hub.register.registerBtn=Теркәл
### Registration Success
hub.registerSuccess.unlockBtn=Биген ас
### Registration Failed
### Archived
### Unauthorized
hub.unauthorized.message=Инеү кире ҡағылды
### Requires Account Initialization
@@ -362,7 +357,6 @@ stats.access.total=Барлыҡ инеү: %d
# Main Window
## Vault List
main.vaultlist=Һаҡлағыстар
main.vaultlist.emptyList.onboardingInstruction=Һаҡлағыс өҫтәү өсөн бында баҫығыҙ
main.vaultlist.contextMenu.remove=Алып ташлау…
main.vaultlist.contextMenu.lock=Биклә
@@ -370,8 +364,7 @@ main.vaultlist.contextMenu.unlock=Бикте асыу…
main.vaultlist.contextMenu.unlockNow=Хәҙер бикте ас
main.vaultlist.contextMenu.vaultoptions=Һаҡлағыс варианттарын күрһәт
main.vaultlist.contextMenu.reveal=Дискты күрһәт
main.vaultlist.addVaultButton.tooltip=Һаҡлағыс өҫтәү
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Файлдарығыҙҙы һаҡлау өсөн Cryptomator-ҙы һайлағанығыҙ өсөн рәхмәт. Әгәр һеҙгә ярҙам кәрәк булһа, башлау буйынса белешмәләребеҙҙе ҡарағыҙ:
@@ -552,7 +545,3 @@ dokanySupportEnd.preferencesBtn=Көйләүҙәрҙе ас
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,13 +12,10 @@ generic.button.close=Зачыніць
generic.button.copy=Капіяваць
generic.button.copied=Скапіявана!
generic.button.done=Файна
generic.button.previous=Папярэдні
generic.button.next=Далей
generic.button.print=Друкаваць
generic.button.remove=Выдаліць
## Vault state
# Error
error.message=Адбылася памылка
error.description=Cryptomator не чакаў такога павароту. Ты можаш пашукаць рашэнні гэтай праблемы. Калі пра гэтую хібу яшчэ ніхто не паведаміў, калі ласка, зрабі ты гэта.
@@ -159,7 +156,6 @@ hub.register.nameLabel=Назва прылады
### Registration Success
hub.registerSuccess.unlockBtn=Адамкнуць
### Registration Failed
### Archived
### Unauthorized
hub.unauthorized.message=Адмова ў доступе
### Requires Account Initialization
@@ -355,8 +351,7 @@ main.vaultlist.contextMenu.unlock=Адамкнуць…
main.vaultlist.contextMenu.unlockNow=Разамкнуць зараз
main.vaultlist.contextMenu.vaultoptions=Паказаць параметры скарбніцы
main.vaultlist.contextMenu.reveal=Паказаць дыск
main.vaultlist.addVaultButton.tooltip=Дадаць скарбніцу
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Дзякуй, што ты абраў Cryptomator для абароны тваіх файлаў. Калі табе патрэбна дапамога, калі ласка, паглядзі нашы інструкцыі:
@@ -529,7 +524,3 @@ dokanySupportEnd.preferencesBtn=Адчыніць налады
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,19 +12,10 @@ generic.button.close=Затваряне
generic.button.copy=Копиране
generic.button.copied=Копирано!
generic.button.done=Готово
generic.button.previous=Назад
generic.button.next=Напред
generic.button.print=Отпечатване
generic.button.remove=Премахване
## Vault state
vault.state.locked=Заключено
vault.state.unlocked=Отключено
vault.state.missing=Липсващ
vault.state.migrationNeeded=Необходима е миграция
vault.state.processing=Обработване
vault.state.error=Грешка
# Error
error.message=Възникна грешка
error.description=Това е неочаквано за Криптоматор. Можете да потърсите съществуващи ревения за тази грешка. Или ако все още не е докладвана се чувствайте свободни да го направите.
@@ -104,7 +95,6 @@ addvault.new.readme.accessLocation.4=При желание можете да п
## Existing
addvaultwizard.existing.title=Добавяне на съществуващо хранилище
addvaultwizard.existing.instruction=Изберете файла „vault.cryptomator“ от съществуващото хранилище, но ако има само файл „masterkey.cryptomator“, изберете него.
addvaultwizard.existing.restore=Възстановяване…
addvaultwizard.existing.chooseBtn=Избиране…
addvaultwizard.existing.filePickerTitle=Избор на файл на хранилището
addvaultwizard.existing.filePickerMimeDesc=Хранилище на Криптоматор
@@ -152,7 +142,6 @@ unlock.error.customPath.description.hideawayNotDir=Временният, скр
unlock.error.customPath.description.couldNotBeCleaned=Хранилището не може да бъде монтирано на „%s“. Опитайте отново или изберете друг път.
unlock.error.customPath.description.notEmptyDir=Потребителският път на монтиране „%s“ не е празна папка. Изберете празна папка и опитайте отново.
unlock.error.customPath.description.generic=Избрали сте потребителски път за монтиране на това хранилище, но при използването му възникна следната грешка: %2$s
unlock.error.restartRequired.message=Хранилището не може да бъде отключено
unlock.error.title=Неуспешно отключване на „%s“
## Hub
hub.noKeychain.message=Няма достъп до ключа на устройството
@@ -174,7 +163,6 @@ hub.register.registerBtn=Регистриране
### Registration Success
hub.registerSuccess.unlockBtn=Отключване
### Registration Failed
### Archived
### Unauthorized
hub.unauthorized.message=Отказан достъп
### Requires Account Initialization
@@ -377,9 +365,7 @@ main.vaultlist.contextMenu.unlock=Отключване…
main.vaultlist.contextMenu.unlockNow=Отключване сега
main.vaultlist.contextMenu.vaultoptions=Настройки на хранилището
main.vaultlist.contextMenu.reveal=Разкриване на диска
main.vaultlist.contextMenu.share=Споделяне…
main.vaultlist.addVaultButton.tooltip=Добавяне на хранилище
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Благодарим ви, че избрахте Криптоматор, за да предпазвате файловете си. Ако имате нужда от съдействие прочетете ръководствата за започване на работа с приложението:
@@ -560,7 +546,3 @@ dokanySupportEnd.preferencesBtn=Към настройките
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -11,14 +11,10 @@ generic.button.close=বন্ধ করুন
generic.button.copy=কপি
generic.button.copied=কপি হয়েছে!
generic.button.done=সম্পন্ন হয়েছে
generic.button.previous=পিছনে
generic.button.next=পরবর্তী
generic.button.print=প্রিন্ট
generic.button.remove=বাতিল
## Vault state
vault.state.error=ত্রুটি দেখা দিয়েছে
# Error
error.message=ত্রুটি %s
error.description=ওহো! ক্রিপ্টোমেটর এটা যে হবে তা আশা করেনি. আপনি এই ত্রুটির সমাধানটি খুঁজে দেখুন. ত্রুটিটি সম্পর্কে যদি বিবরণ না পান, আপনি সেটি রিপোর্ট করতে পারেন.
@@ -99,7 +95,6 @@ unlock.unlockBtn=আনলক করুন
### Registration Success
hub.registerSuccess.unlockBtn=আনলক করুন
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -147,8 +142,7 @@ lock.forced.retryBtn=পুনরায় চেষ্টা করুন
# Main Window
## Vault List
main.vaultlist.contextMenu.lock=লক করুন
main.vaultlist.addVaultButton.tooltip=ভোল্ট যুক্ত করুন
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -218,7 +212,3 @@ vaultOptions.mount.mountPoint.directoryPickerButton=নির্বাচন ক
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -15,8 +15,6 @@ generic.button.next=Sljedeće
generic.button.print=Ispis
generic.button.remove=Ukloni
## Vault state
# Error
error.message=Došlo je do greške
@@ -111,7 +109,6 @@ unlock.success.revealBtn=Otkrij pogon
### Registration Success
hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -212,7 +209,6 @@ stats.write.accessCount=Ukupno upisano: %d
# Main Window
## Vault List
main.vaultlist=Sef
main.vaultlist.emptyList.onboardingInstruction=Kliknite ovdje da dodate sef
main.vaultlist.contextMenu.remove=Ukloni…
main.vaultlist.contextMenu.lock=Zaključaj
@@ -220,8 +216,7 @@ main.vaultlist.contextMenu.unlock=Otključaj…
main.vaultlist.contextMenu.unlockNow=Otključaj sada
main.vaultlist.contextMenu.vaultoptions=Pokaži opcije sefa
main.vaultlist.contextMenu.reveal=Otkrij pogon
main.vaultlist.addVaultButton.tooltip=Dodaj sef
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Hvala što ste izabrali Cryptomator za zaštitu podataka. Ako vam je potrebna pomoć, pogledajte naše vodiče za početak:
@@ -353,7 +348,3 @@ quit.lockAndQuitBtn=Zaključaj i zatvori
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,15 +12,10 @@ generic.button.close=Tanca
generic.button.copy=Copia
generic.button.copied=Copiat!
generic.button.done=Fet
generic.button.previous=Anterior
generic.button.next=Següent
generic.button.print=Imprimeix
generic.button.remove=Elimina
## Vault state
vault.state.locked=Bloquejada
vault.state.error=Error
# Error
error.message=S'ha produït un error
error.description=Ui! Cryptomator no esperava que passés això. Podeu cercar alguna de les solucions existents per a aquest error. Si no ha estat reportat encara, sentiu-vos lliure de fer-ho vós mateix.
@@ -180,7 +175,6 @@ hub.registerSuccess.legacy.description=Per a accedir a la caixa forta, el vostre
hub.registerFailed.message=El registre del dispositiu ha fallat
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.
### Archived
### Unauthorized
hub.unauthorized.message=Accés denegat
hub.unauthorized.description=No estàs autoritzat a obrir aquesta caixa forta. Contacta amb el seu propietari per obtenir accés.
@@ -392,7 +386,6 @@ stats.access.total=Total d'accessos: %d
# Main Window
## Vault List
main.vaultlist=Caixes fortes
main.vaultlist.emptyList.onboardingInstruction=Feu clic aquí per afegir una caixa forta
main.vaultlist.contextMenu.remove=Elimina…
main.vaultlist.contextMenu.lock=Bloqueja
@@ -401,14 +394,12 @@ main.vaultlist.contextMenu.unlockNow=Desbloqueja ara
main.vaultlist.contextMenu.vaultoptions=Opcions de la caixa forta
main.vaultlist.contextMenu.reveal=Mostra la unitat
main.vaultlist.contextMenu.share=Compateix…
main.vaultlist.addVaultButton.tooltip=Afegir una caixa forta
##Notification
##Notificaition
main.notification.updateAvailable=Hi ha una actualització disponible.
main.notification.support=Doneu suport a Cryptomator.
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Gràcies per escollir Cryptomator per protegir els vostres fitxers. Si vos cal ajuda, llegiu les nostres guies per donar els Primers passos:
main.vaultDetail.storageLocation=Ubicació de la caixa forta
### Locked
main.vaultDetail.lockedStatus=BLOQUEJADA
main.vaultDetail.unlockBtn=Desbloca…
@@ -608,7 +599,3 @@ shareVault.hub.openHub=Obre Cryptomator Hub
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=Zavřít
generic.button.copy=Kopírovat
generic.button.copied=Zkopírováno!
generic.button.done=Hotovo
generic.button.previous=Předchozí
generic.button.next=Další
generic.button.print=Tisk
generic.button.remove=Odstranit
## Vault state
vault.state.error=Chyba
# Error
error.message=Chyba %s
error.description=Jejda! Tohle Cryptomator nečekal. Můžete najít již existující řešení pro tuto chybu. Nebo pokud ještě nebyla nahlášena, neváhejte tak učinit.
@@ -175,7 +171,6 @@ hub.registerSuccess.legacy.description=Pro přístup k trezoru musí být vaše
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í.
### Archived
### Unauthorized
hub.unauthorized.message=Přístup odepřen
### Requires Account Initialization
@@ -362,7 +357,6 @@ stats.access.total=Přístup celkem: %d
# Main Window
## Vault List
main.vaultlist=Trezory
main.vaultlist.emptyList.onboardingInstruction=Klikněte zde pro přidání nového trezoru
main.vaultlist.contextMenu.remove=Odstranit…
main.vaultlist.contextMenu.lock=Zamknout
@@ -371,8 +365,7 @@ main.vaultlist.contextMenu.unlockNow=Odemknout nyní
main.vaultlist.contextMenu.vaultoptions=Zobrazit možnosti trezoru
main.vaultlist.contextMenu.reveal=Zobrazit jednotku
main.vaultlist.contextMenu.share=Sdílet…
main.vaultlist.addVaultButton.tooltip=Přidat trezor
##Notification
##Notificaition
## Vault Detail
### 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:
@@ -569,7 +562,3 @@ shareVault.hub.openHub=Otevřít Cryptomator Hub
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,19 +12,10 @@ generic.button.close=Luk
generic.button.copy=Kopiér
generic.button.copied=Kopieret!
generic.button.done=Færdig
generic.button.previous=Tidligere
generic.button.next=Næste
generic.button.print=Print
generic.button.remove=Fjern
## Vault state
vault.state.locked=Låst
vault.state.unlocked=Låst op
vault.state.missing=Mangler
vault.state.migrationNeeded=Migration påkrævet
vault.state.processing=Bearbejder
vault.state.error=Fejl
# Error
error.message=Der opstod en fejl
error.description=Cryptomator forventede ikke at dette skete. Du kan gennemse eksisterende løsninger for denne fejl - eller hvis denne fejl ikke er blevet rapporteret før, er du meget velkommen til at rapportere den.
@@ -86,7 +77,7 @@ addvaultwizard.new.generateRecoveryKeyChoice=Du kan ikke tilgå dine data uden d
addvaultwizard.new.generateRecoveryKeyChoice.yes=Ja tak - for en sikkerheds skyld
addvaultwizard.new.generateRecoveryKeyChoice.no=Nej tak. Jeg mister ikke min adgangskode
### Information
addvault.new.readme.storageLocation.fileName=IMPORTANT.rtf
addvault.new.readme.storageLocation.fileName=VIGTIGT.rtf
addvault.new.readme.storageLocation.1=⚠️ BOKS-FILER ⚠️
addvault.new.readme.storageLocation.2=Det er her er lokationen for din boks' data.
addvault.new.readme.storageLocation.3=SØRG FOR ALDRIG AT
@@ -97,14 +88,14 @@ addvault.new.readme.storageLocation.7=1. Tilføj denne boks til Cryptomator.
addvault.new.readme.storageLocation.8=2. Lås boksen op i Cryptomator.
addvault.new.readme.storageLocation.9=3. Åbn placeringen ved at klikke på knappen "Vis boks".
addvault.new.readme.storageLocation.10=Hvis du har brug for hjælp, så kig i dokumentationen: %s
addvault.new.readme.accessLocation.fileName=WELCOME.rtf
addvault.new.readme.accessLocation.fileName=VELKOMMEN.rtf
addvault.new.readme.accessLocation.1=🔐️ KRYPTERET DREV 🔐️
addvault.new.readme.accessLocation.2=Det er her indholdet af din boks tilgås.
addvault.new.readme.accessLocation.3=Filer du tilføjer til dette drev vil blive krypteret af Cryptomator. Du har arbejde med filerne ligesom enhver anden fil/mappe. Dette er blot en dekrypteret visning af indholdet. Dine filer er stadig krypterede på din harddisk hele tiden.
addvault.new.readme.accessLocation.4=Fjern denne fil hvis du har lyst.
## Existing
addvaultwizard.existing.title=Tilføj Eksisterende Boks
addvaultwizard.existing.instruction=Vælg filen "vault.cryptomator" i mappen med dine boks-filer. Hvis der kun findes en fil med navnet "masterkey.cryptomator", skal du vælge den i stedet.
addvaultwizard.existing.instruction=Vælgt filen "vault.cryptomator" i mappen med dine boks-filer. Hvis der kun findes en fil med navnet "masterkey.cryptomator", skal du vælge den i stedet.
addvaultwizard.existing.restore=Gendan…
addvaultwizard.existing.chooseBtn=Vælg…
addvaultwizard.existing.filePickerTitle=Vælg boks-fil
@@ -170,9 +161,9 @@ hub.receive.message=Behandler svar…
hub.receive.description=Cryptomator modtager og behandler svaret fra hubben. Vent venligst.
### Register Device
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 kontonøgle.
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.invalidAccountKeyLabel=Ugyldig kontonøgle
hub.register.invalidAccountKeyLabel=Ugyldig Account Key
hub.register.registerBtn=Registrer
### Register Device Legacy
hub.register.legacy.occupiedMsg=Navnet er allerede i brug
@@ -186,9 +177,6 @@ hub.registerSuccess.legacy.description=For at få adgang til boksen, skal din en
hub.registerFailed.message=Enheds registrering mislykkedes
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.
### Archived
hub.archived.message=Boksen er arkiveret
hub.archived.description=Denne boks er blevet arkiveret og er ikke længere tilgængelig. Kontakt venligst boksens ejer.
### Unauthorized
hub.unauthorized.message=Adgang nægtet
hub.unauthorized.description=Du har ikke tilladelse til at åbne denne boks. Kontant ejeren af boksen for at anmode om adgang.
@@ -244,7 +232,7 @@ migration.impossible.moreInfo=Boksen kan stadig åbnes med en ældre version. Fo
## Start
health.title=Sundhedstjek af "%s"
health.intro.header=Sundhedstjek
health.intro.text=Sundhedstjek afvikler en række procedurer for at opdage og muligvis løse problemer, i den interne struktur i din boks. Vær opmærksom på:
health.intro.text=Sundhedstjek afvikler en række procedurer for at opdage og muligvis løse problemer, i den interne struktur i bin boks. Vær opmærksom på:
health.intro.remarkSync=Sørg for, at alle enheder er synkroniseret fuldstændig, dette løser de fleste problemer.
health.intro.remarkFix=Ikke alle problemer kan løses.
health.intro.remarkBackup=Hvis data er beskadiget, kan kun en sikkerhedskopi hjælpe.
@@ -323,7 +311,7 @@ preferences.volume.type=Standard Drev Type
preferences.volume.type.automatic=Automatisk
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.tcp.port=Standard TCP-Port
preferences.volume.tcp.port=Standard TCP- Port
preferences.volume.supportedFeatures=Den valgte type drev understøtter følgende funktioner:
preferences.volume.feature.mountAuto=Automatisk valg af monteringspunkt
preferences.volume.feature.mountToDir=Brugerdefineret mappe som monteringspunkt
@@ -341,13 +329,8 @@ preferences.updates.lastUpdateCheck.never=aldrig
preferences.updates.lastUpdateCheck.recently=for nylig
preferences.updates.lastUpdateCheck.daysAgo=%s dage siden
preferences.updates.lastUpdateCheck.hoursAgo=%s timer siden
preferences.updates.prohibitedDueToUnlockedVaults.1=Venligst
preferences.updates.prohibitedDueToUnlockedVaults.2=lås dine bokse
preferences.updates.prohibitedDueToUnlockedVaults.3=for at installere opdateringen.
preferences.updates.checkFailed=Søgning efter opdateringer fejlede. Tjek din internetforbindelse eller forsøg igen senere.
preferences.updates.updateFailed=Opdatering mislykkedes. Installér venligst opdateringen manuelt.
preferences.updates.upToDate=Cryptomator er opdateret.
preferences.updates.visitDownloadPage=Besøg Downloadside
## Contribution
preferences.contribute=Støt os
@@ -405,7 +388,6 @@ stats.access.total=Samlede adgang: %d
# Main Window
## Vault List
main.vaultlist=Bokse
main.vaultlist.emptyList.onboardingInstruction=Klik her for at tilføje en boks
main.vaultlist.contextMenu.remove=Fjern…
main.vaultlist.contextMenu.lock=Lås
@@ -417,9 +399,8 @@ main.vaultlist.contextMenu.share=Del…
main.vaultlist.addVaultBtn.menuItemNew=Opret ny boks…
main.vaultlist.addVaultBtn.menuItemExisting=Åbn eksisterende boks…
main.vaultlist.addVaultBtn.menuItemRecover=Genopret eksisterende boks…
main.vaultlist.addVaultButton.tooltip=Tilføj boks
main.vaultlist.showEventsButton.tooltip=Åbn begivenhedsvisning
##Notification
##Notificaition
main.notification.updateAvailable=Opdatering er tilgængelig.
main.notification.support=Støt Cryptomator.
## Vault Detail
@@ -487,7 +468,7 @@ vaultOptions.general.actionAfterUnlock=Efter oplåsning af boks
vaultOptions.general.actionAfterUnlock.ignore=Gør intet
vaultOptions.general.actionAfterUnlock.reveal=Vis drev
vaultOptions.general.actionAfterUnlock.ask=Spørg
vaultOptions.general.startHealthCheckBtn=Start sundhedstjek
vaultOptions.general.startHealthCheckBtn=Start sunhedstjek
## Mount
vaultOptions.mount=Montering
@@ -537,11 +518,9 @@ recoveryKey.printout.heading=Cryptomator gendannelsesnøgle\n"%s"\n
recoveryKey.recover.resetBtn=Nulstil
recoveryKey.recover.recoverBtn=Gendan
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=Adgangskode nulstillet
recoveryKey.recover.resetSuccess.message=Adgangskod nulstillet
recoveryKey.recover.resetSuccess.description=Du kan nu låse din boks op med den nye adgangskode.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Bokskonfiguration gendannet
recoveryKey.recover.resetMasterkeyFileSuccess.message=Masterkey-fil genoprettet
recoveryKey.recover.resetMasterkeyFileSuccess.description=Du kan låse din boks op med din adgangskode nu.
# Recover Vault Config File and/or Masterkey
@@ -651,7 +630,7 @@ 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 Cryptomator Hub
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:
@@ -667,7 +646,7 @@ decryptNames.copyTable.tooltip=Kopiér tabel
decryptNames.clearTable.tooltip=Ryd tabel
decryptNames.copyHint=Kopiér celleindhold med %s
decryptNames.dropZone.message=Slip filer eller klik for at vælge
decryptNames.dropZone.error.vaultInternalFiles=Boks interne filer med intet dekryptérbart navn valgt
decryptNames.dropZone.error.vaultInternalFiles=Boks interne filer med intet dekrypterbart navn valgt
decryptNames.dropZone.error.foreignFiles=Filer hører ikke til boksen "%s"
decryptNames.dropZone.error.noDirIdBackup=Mappe af valgte filer indeholder ikke dirId.c9r fil
decryptNames.dropZone.error.generic=Kunne ikke dekryptere filnavne
@@ -681,24 +660,19 @@ eventView.clearListButton.tooltip=Ryd liste
eventView.entry.vaultLocked.description=Lås "%s" op for detaljer
eventView.entry.conflictResolved.message=Løst konflikt
eventView.entry.conflictResolved.showDecrypted=Vis dekrypteret fil
eventView.entry.conflictResolved.copyDecrypted=Kopiér dekrypteret sti
eventView.entry.conflict.message=Konfliktløsning mislykkedes
eventView.entry.conflict.showDecrypted=Vis dekrypteret, original fil
eventView.entry.conflict.copyDecrypted=Kopier dekrypteret, original sti
eventView.entry.conflict.showEncrypted=Vis modstridende, krypteret fil
eventView.entry.conflict.copyEncrypted=Kopier modstridende, krypteret sti
eventView.entry.decryptionFailed.message=Dekryptering mislykkedes
eventView.entry.decryptionFailed.showEncrypted=Vis krypteret fil
eventView.entry.decryptionFailed.copyEncrypted=Kopiér krypteret sti
eventView.entry.brokenDirFile.message=Brudt mappelink
eventView.entry.brokenDirFile.showEncrypted=Vis brudt, krypteret link
eventView.entry.brokenDirFile.copyEncrypted=Kopiér sti til brudt link
eventView.entry.brokenFileNode.message=Brudt filsystem-node
eventView.entry.brokenFileNode.showEncrypted=Vis brudt, krypteret node
eventView.entry.brokenFileNode.copyEncrypted=Kopiér sti af brudt, krypteret node
eventView.entry.brokenFileNode.copyDecrypted=Kopiér dekrypteret sti
eventView.entry.inUse.message=Fil i brug
eventView.entry.inUse.showDecrypted=Vis dekrypteret fil
eventView.entry.inUse.showEncrypted=Vis krypteret fil
eventView.entry.inUse.ignoreLock=Ignorér anvendelsesstatus
# Notifications
## FileIsInUse Notification
notification.inUse.message=Filen er i brug på en anden enhed
notification.inUse.description=Filen er åbnet af %s på %s. Bed dem om at lukke filen og lade synkroniseringen afslutte. Du kan ignorere status for at åbne den nu, men det kan forårsage konflikter eller overskrive nyere ændringer.
notification.inUse.action=Ignorér anvendelsesstatus

View File

@@ -12,14 +12,10 @@ generic.button.close=Schließen
generic.button.copy=Kopieren
generic.button.copied=Kopiert!
generic.button.done=Fertig
generic.button.previous=Vorheriges
generic.button.next=Weiter
generic.button.print=Drucken
generic.button.remove=Entfernen
## Vault state
vault.state.error=Fehler
# Error
error.message=Ein Fehler ist aufgetreten
error.description=Cryptomator hat diesen Fehler nicht erwartet. Du kannst für ihn nach bestehenden Lösungen suchen oder falls der Fehler noch nicht gemeldet wurde einen Fehlerbericht einreichen.
@@ -181,9 +177,6 @@ hub.registerSuccess.legacy.description=Für den Zugriff auf den Tresor muss dein
hub.registerFailed.message=Gerät konnte nicht registriert werden
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.
### Archived
hub.archived.message=Tresor ist archiviert
hub.archived.description=Dieser Tresor wurde archiviert, daher ist ein Zugriff darauf nicht mehr möglich. Kontaktiere den Eigentümer des Tresors.
### Unauthorized
hub.unauthorized.message=Zugriff verweigert
hub.unauthorized.description=Du bist nicht berechtigt, diesen Tresor zu öffnen. Wende dich an den Tresoreigentümer, um Zugriff zu erhalten.
@@ -336,13 +329,8 @@ 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.prohibitedDueToUnlockedVaults.1=Bitte
preferences.updates.prohibitedDueToUnlockedVaults.2=sperre deine Tresore
preferences.updates.prohibitedDueToUnlockedVaults.3=um das Update zu installieren.
preferences.updates.checkFailed=Die Suche nach Updates ist fehlgeschlagen. Bitte überprüfe deine Internetverbindung oder versuche es später erneut.
preferences.updates.updateFailed=Update fehlgeschlagen. Bitte installiere das Update manuell.
preferences.updates.upToDate=Cryptomator ist aktuell.
preferences.updates.visitDownloadPage=Besuche die Download-Seite
## Contribution
preferences.contribute=Unterstütze uns
@@ -353,7 +341,6 @@ preferences.contribute.promptText=Füge hier den Code des Supporter-Zertifikats
preferences.contribute.thankYou=Danke, dass Du die Open-Source-Entwicklung von Cryptomator unterstützt!
preferences.contribute.donate=Spenden
preferences.contribute.sponsor=Sponsern
preferences.contribute.removeCert.tooltip=Zertifikat entfernen
### Remove License Key Dialog
removeCert.title=Zertifikat entfernen
@@ -363,7 +350,6 @@ removeCert.description=Die Kernfunktionen von Cryptomator sind davon nicht betro
## About
preferences.about=Über
preferences.about.thirdPartyLicenses=Drittanbieter-Lizenzen
# Vault Statistics
stats.title=Statistiken für %s
@@ -402,7 +388,6 @@ stats.access.total=Gesamtzugriffe: %d
# Main Window
## Vault List
main.vaultlist=Tresore
main.vaultlist.emptyList.onboardingInstruction=Klicke hier, um einen Tresor hinzuzufügen
main.vaultlist.contextMenu.remove=Entfernen …
main.vaultlist.contextMenu.lock=Sperren
@@ -414,10 +399,8 @@ main.vaultlist.contextMenu.share=Teilen …
main.vaultlist.addVaultBtn.menuItemNew=Neuen Tresor erstellen…
main.vaultlist.addVaultBtn.menuItemExisting=Bestehenden Tresor öffnen…
main.vaultlist.addVaultBtn.menuItemRecover=Bestehenden Tresor wiederherstellen…
main.vaultlist.addVaultButton.tooltip=Tresor hinzufügen
main.vaultlist.showEventsButton.tooltip=Ereignisansicht öffnen
main.vaultlist.showPreferencesButton.tooltip=Einstellungen anzeigen
##Notification
main.vaultlist.showEventsButton.tooltip=Ereignis-Ansicht öffnen
##Notificaition
main.notification.updateAvailable=Eine neue Version ist verfügbar.
main.notification.support=Unterstütze Cryptomator.
## Vault Detail
@@ -480,7 +463,6 @@ vaultOptions.general=Allgemein
vaultOptions.general.vaultName=Tresorname
vaultOptions.general.autoLock.lockAfterTimePart1=Nach
vaultOptions.general.autoLock.lockAfterTimePart2=Minuten Inaktivität sperren
vaultOptions.general.autoLock.accessibleText=Sperr-Timeout in Minuten
vaultOptions.general.unlockAfterStartup=Tresor beim Start von Cryptomator entsperren
vaultOptions.general.actionAfterUnlock=Nach erfolgreichem Entsperren
vaultOptions.general.actionAfterUnlock.ignore=Nichts tun
@@ -664,8 +646,6 @@ decryptNames.filePicker.title=Verschlüsselte Datei auswählen
decryptNames.filePicker.extensionDescription=Cryptomator-verschlüsselte Datei
decryptNames.copyTable.tooltip=Tabelle kopieren
decryptNames.clearTable.tooltip=Tabelle leeren
decryptNames.column.encrypted=Verschlüsselt
decryptNames.column.decrypted=Entschlüsselt
decryptNames.copyHint=Inhalt der Zelle mit %s kopieren
decryptNames.dropZone.message=Dateien ablegen oder zum Auswählen klicken
decryptNames.dropZone.error.vaultInternalFiles=Tresor interne Dateien mit nicht-entschlüsselbaren Namen ausgewählt
@@ -678,27 +658,23 @@ decryptNames.dropZone.error.generic=Fehler beim Entschlüsseln der Dateinamen
eventView.title=Ereignisse
eventView.filter.allVaults=Alle
eventView.clearListButton.tooltip=Liste leeren
eventView.filterVaults=Nach Tresor filtern
eventView.cell.actionsButton.tooltip=Ereignisaktionen
## event list entries
eventView.entry.vaultLocked.description=Entsperre "%s" für Details
eventView.entry.conflictResolved.message=Konflikt gelöst
eventView.entry.conflictResolved.showDecrypted=Entschlüsselte Datei anzeigen
eventView.entry.conflictResolved.copyDecrypted=Pfad der entschlüsselten Datei kopieren
eventView.entry.conflict.message=Konfliktlösung fehlgeschlagen
eventView.entry.conflict.showDecrypted=Entschlüsselte, ursprüngliche Datei anzeigen
eventView.entry.conflict.copyDecrypted=Entschlüsselten, ursprünglicher Pfad kopieren
eventView.entry.conflict.showEncrypted=Zeige verschlüsselte Konfliktdatei
eventView.entry.conflict.copyEncrypted=Verschlüsselten Konfliktpfad kopieren
eventView.entry.decryptionFailed.message=Entschlüsselung fehlgeschlagen
eventView.entry.decryptionFailed.showEncrypted=Verschlüsselte Datei anzeigen
eventView.entry.decryptionFailed.copyEncrypted=Pfad der verschlüsselten Datei kopieren
eventView.entry.brokenDirFile.message=Ungültiger Verzeichnislink
eventView.entry.brokenDirFile.showEncrypted=Defekten, verschlüsselten Link anzeigen
eventView.entry.brokenDirFile.copyEncrypted=Pfad des ungültigen Links kopieren
eventView.entry.brokenFileNode.message=Beschädigter Dateisystemknoten
eventView.entry.brokenFileNode.showEncrypted=Beschädigten, verschlüsselten Knoten anzeigen
eventView.entry.brokenFileNode.copyEncrypted=Pfad des beschädigten, verschlüsselten Knotens kopieren
eventView.entry.brokenFileNode.copyDecrypted=Pfad der entschlüsselten Datei kopieren
eventView.entry.inUse.showDecrypted=Entschlüsselte Datei anzeigen
eventView.entry.inUse.showEncrypted=Verschlüsselte Datei anzeigen
eventView.entry.inUse.copyUserAndDevice=Benutzer- und Gerätenamen der Sperre kopieren
# Notifications
## FileIsInUse Notification
notification.inUse.action=Verwendungsstatus ignorieren

View File

@@ -12,14 +12,10 @@ generic.button.close=Κλείσιμο
generic.button.copy=Αντιγραφή
generic.button.copied=Αντιγράφηκε!
generic.button.done=Κλείσιμο
generic.button.previous=Προηγούμενο
generic.button.next=Επόμενο
generic.button.print=Εκτύπωση
generic.button.remove=Αφαίρεση
## Vault state
vault.state.error=Σφάλμα
# Error
error.message=Παρουσιάστηκε σφάλμα
error.description=Ωχ! Το Cryptomator δεν περίμενε να συμβεί αυτό. Μπορείτε να αναζητήσετε υπάρχουσες λύσεις για αυτό το σφάλμα. Ή εάν δεν έχει αναφερθεί ακόμα, μη διστάσετε να το κάνετε.
@@ -179,7 +175,6 @@ hub.registerSuccess.legacy.description=Για να αποκτήσετε πρόσ
hub.registerFailed.message=Η εγγραφή της συσκευής απέτυχε
hub.registerFailed.description.generic=Παρουσιάστηκε σφάλμα στη διαδικασία εγγραφής. Για περισσότερες λεπτομέρειες, ανατρέξτε στο αρχείο καταγραφής της εφαρμογής.
hub.registerFailed.description.deviceAlreadyExists=Αυτή η συσκευή είναι ήδη εγγεγραμμένη για διαφορετικό χρήστη. Προσπαθήστε να αλλάξετε τον λογαριασμό χρήστη ή να χρησιμοποιήσετε διαφορετική συσκευή.
### Archived
### Unauthorized
hub.unauthorized.message=Δεν επιτρέπεται η πρόσβαση
hub.unauthorized.description=Δεν είστε εξουσιοδοτημένοι να ανοίξετε αυτή την κρύπτη. Επικοινωνήστε με τον ιδιοκτήτη τς κρύπτης για να ζητήσετε πρόσβαση.
@@ -391,7 +386,6 @@ stats.access.total=Συνολική πρόσβαση: %d
# Main Window
## Vault List
main.vaultlist=Κρύπτες
main.vaultlist.emptyList.onboardingInstruction=Κάντε κλικ εδώ για να προσθέσετε ένα vault
main.vaultlist.contextMenu.remove=Αφαίρεση…
main.vaultlist.contextMenu.lock=Κλείδωμα
@@ -400,8 +394,8 @@ main.vaultlist.contextMenu.unlockNow=Ξεκλείδωμα τώρα
main.vaultlist.contextMenu.vaultoptions=Εμφάνιση επιλογών Vault
main.vaultlist.contextMenu.reveal=Αποκάλυψη εικονικού δίσκου
main.vaultlist.contextMenu.share=Κοινοποίηση…
main.vaultlist.addVaultButton.tooltip=Προσθήκη Κρύπτης
##Notification
main.vaultlist.showEventsButton.tooltip=Άνοιγμα προβολής συμβάντων
##Notificaition
main.notification.updateAvailable=Η ενημέρωση είναι διαθέσιμη.
main.notification.support=Υποστήριξη Cryptomator.
## Vault Detail
@@ -630,19 +624,19 @@ eventView.clearListButton.tooltip=Εκκαθάριση λίστας
eventView.entry.vaultLocked.description=Ξεκλείδωμα "%s" για λεπτομέρειες
eventView.entry.conflictResolved.message=Επίλυση σύγκρουσης
eventView.entry.conflictResolved.showDecrypted=Εμφάνιση αποκρυπτογραφημένου αρχείου
eventView.entry.conflictResolved.copyDecrypted=Αντιγραφή αποκρυπτογραφημένης διαδρομής
eventView.entry.conflict.message=Η επίλυση συγκρούσεων απέτυχε
eventView.entry.conflict.showDecrypted=Εμφάνιση αποκρυπτογραφημένων, αρχικό αρχείο
eventView.entry.conflict.copyDecrypted=Αντιγραφή αποκρυπτογραφημένων, αρχική διαδρομή
eventView.entry.conflict.showEncrypted=Εμφάνιση αντικρουόμενου, κρυπτογραφημένο αρχείο
eventView.entry.conflict.copyEncrypted=Αντιγραφή σύγκρουσης, κρυπτογραφημένη διαδρομή
eventView.entry.decryptionFailed.message=Η αποκρυπτογράφηση απέτυχε
eventView.entry.decryptionFailed.showEncrypted=Εμφάνιση κρυπτογραφημένου αρχείου
eventView.entry.decryptionFailed.copyEncrypted=Αντιγραφή κρυπτογραφημένης διαδρομής
eventView.entry.brokenDirFile.message=Μη λειτουργικός σύνδεσμος καταλόγου
eventView.entry.brokenDirFile.showEncrypted=Εμφάνιση μη λειτουργικού, κρυπτογραφημένου συνδέσμου
eventView.entry.brokenDirFile.copyEncrypted=Αντιγραφή διαδρομής του μη λειτουργικού συνδέσμου
eventView.entry.brokenFileNode.message=Μη λειτουργικός κόμβος συστήματος αρχείων
eventView.entry.brokenFileNode.showEncrypted=Εμφάνιση μη λειτουργικού, κρυπτογραφημένου κόμβου
eventView.entry.brokenFileNode.copyEncrypted=Αντιγραφή διαδρομής του μη λειτουργικού, κρυπτογραφημένου κόμβου
eventView.entry.brokenFileNode.copyDecrypted=Αντιγραφή αποκρυπτογραφημένης διαδρομής
eventView.entry.inUse.showDecrypted=Εμφάνιση αποκρυπτογραφημένου αρχείου
eventView.entry.inUse.showEncrypted=Εμφάνιση κρυπτογραφημένου αρχείου
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=Cerrar
generic.button.copy=Copiar
generic.button.copied=¡Copiado!
generic.button.done=Hecho
generic.button.previous=Anterior
generic.button.next=Siguiente
generic.button.print=Imprimir
generic.button.remove=Eliminar
## Vault state
vault.state.error=Error
# Error
error.message=Ocurrió un error
error.description=Cryptomator no esperaba que esto sucediera. Puede buscar soluciones existentes para este error. O si aún no se ha notificado, siéntase libre de hacerlo.
@@ -181,7 +177,6 @@ hub.registerSuccess.legacy.description=Para acceder a la bóveda, su dispositivo
hub.registerFailed.message=El registro del dispositivo ha fallado
hub.registerFailed.description.generic=Ha ocurrido un error al intentar registrarse. Para más detalles, consulte el registro de la aplicación.
hub.registerFailed.description.deviceAlreadyExists=Este dispositivo ya se ha registrado para otro usuario. Intente cambiar la cuenta de usuario o utilice un dispositivo diferente.
### Archived
### Unauthorized
hub.unauthorized.message=Acceso denegado
hub.unauthorized.description=No tiene autorización para abrir esta bóveda. Contacta al propietario de la bóveda para solicitar acceso.
@@ -262,8 +257,6 @@ health.check.detail.checkFinishedAndFound=La comprobación terminó de ejecutars
health.check.detail.checkFailed=La comprobación terminó debido a un error.
health.check.detail.checkCancelled=La comprobación se canceló.
health.check.detail.listFilters.label=Filtro
health.check.detail.filterSeverity=Filtrar por gravedad
health.check.detail.filterFixState=Filtrar por estado fijo
health.check.detail.fixAllSpecificBtn=Reparar todo del tipo
health.check.exportBtn=Exportar informe
## Result view
@@ -336,13 +329,8 @@ 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.prohibitedDueToUnlockedVaults.1=Por favor,
preferences.updates.prohibitedDueToUnlockedVaults.2=bloquee sus bóvedas
preferences.updates.prohibitedDueToUnlockedVaults.3=para instalar la actualización.
preferences.updates.checkFailed=La comprobación de actualizaciones ha fallado. Compruebe su conexión a Internet o inténtelo más tarde.
preferences.updates.updateFailed=Actualización fallida. Por favor, instale la actualización manualmente.
preferences.updates.upToDate=Cryptomator está actualizado.
preferences.updates.visitDownloadPage=Visita la página de descarga
## Contribution
preferences.contribute=Apóyenos
@@ -353,7 +341,6 @@ preferences.contribute.promptText=Pegue aquí el código de certificado de segui
preferences.contribute.thankYou=¡Gracias por apoyar el desarrollo de código abierto de Cryptomator!
preferences.contribute.donate=Donar
preferences.contribute.sponsor=Patrocinador
preferences.contribute.removeCert.tooltip=Eliminar certificado
### Remove License Key Dialog
removeCert.title=Eliminar Certificado
@@ -363,7 +350,6 @@ removeCert.description=Las características principales de Cryptomator no se ven
## About
preferences.about=Acerca de
preferences.about.thirdPartyLicenses=Licencias de terceros
# Vault Statistics
stats.title=Estadísticas para %s
@@ -402,7 +388,6 @@ stats.access.total=Accesos totales: %d
# Main Window
## Vault List
main.vaultlist=Bóvedas
main.vaultlist.emptyList.onboardingInstruction=Haga clic aquí para añadir una bóveda
main.vaultlist.contextMenu.remove=Eliminar…
main.vaultlist.contextMenu.lock=Bloquear
@@ -414,10 +399,8 @@ main.vaultlist.contextMenu.share=Compartir…
main.vaultlist.addVaultBtn.menuItemNew=
main.vaultlist.addVaultBtn.menuItemExisting=
main.vaultlist.addVaultBtn.menuItemRecover=
main.vaultlist.addVaultButton.tooltip=Añadir bóveda
main.vaultlist.showEventsButton.tooltip=Abrir vista de evento
main.vaultlist.showPreferencesButton.tooltip=Mostrar preferencias
##Notification
##Notificaition
main.notification.updateAvailable=Existen actualizaciones disponibles.
main.notification.support=Soporte de Cryptomator.
## Vault Detail
@@ -480,7 +463,6 @@ vaultOptions.general=General
vaultOptions.general.vaultName=Nombre de la bóveda
vaultOptions.general.autoLock.lockAfterTimePart1=Bloquear después de
vaultOptions.general.autoLock.lockAfterTimePart2=minutos
vaultOptions.general.autoLock.accessibleText=Tiempo de bloqueo en minutos
vaultOptions.general.unlockAfterStartup=Desbloquear bóveda al iniciar Cryptomator
vaultOptions.general.actionAfterUnlock=Después de desbloquear con éxito
vaultOptions.general.actionAfterUnlock.ignore=No hacer nada
@@ -534,59 +516,29 @@ recoveryKey.recover.invalidKey=Esta clave de recuperación no es válida
recoveryKey.printout.heading=Clave de recuperación de Cryptomator\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=## Reiniciar contraseña\nrecoveryKey.recover.resetBtn
recoveryKey.recover.recoverBtn=Recuperar
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=Contraseña restablecida con éxito
recoveryKey.recover.resetSuccess.description=Puede desbloquear su bóveda con la contraseña nueva.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Configuración de bóveda recuperada
recoveryKey.recover.resetMasterkeyFileSuccess.message=Archivo Masterkey recuperado
recoveryKey.recover.resetMasterkeyFileSuccess.description=Ahora puedes desbloquear tu bóveda con tu contraseña.
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=Bóveda añadida
recover.existing.message=La bóveda se ha añadido correctamente
recover.existing.description=Tu bóveda "%s" ha sido añadida a la lista de bóvedas. No ha sido necesario ningún proceso de recuperación.
##Vault Already Exists - Dialog
recover.alreadyExists.title=La bóveda ya existe
recover.alreadyExists.message=Esta bóveda ya ha sido añadida
recover.alreadyExists.description=Tu bóveda "%s" ya está presente en tu lista de bóvedas y, por lo tanto, no se ha añadido de nuevo.
##Invalid Selection - Dialog
recover.invalidSelection.title=Selección no válida
recover.invalidSelection.message=Su selección no es una bóveda
recover.invalidSelection.description=La carpeta seleccionada debe ser una bóveda de Cryptomator válida.
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Bóveda de Hub
contactHubVaultOwner.message=Esta bóveda fue creada con Cryptomator Hub
contactHubVaultOwner.description=Póngase en contacto con el propietario de la bóveda para restaurar el archivo que falta. Pueden descargar la plantilla de la bóveda desde Cryptomator Hub.
##Dialog Title
recover.recoverVaultConfig.title=Recuperar configuración de bóveda
recover.recoverMasterkey.title=Recuperar MasterKey
## OnBoarding
recover.onBoarding.chooseMethod=Elija el método de recuperación:
recover.onBoarding.useRecoveryKey=Usar clave de recuperación
recover.onBoarding.usePassword=Usar contraseña
recover.onBoarding.intro=Asegúrese de comprobar lo siguiente:
recover.onBoarding.pleaseConfirm=Antes de proceder, confirme que:
recover.onBoarding.otherwisePleaseConfirm=De lo contrario, confirme que:
recover.onBoarding.allMissing.intro=Si esta bóveda es administrada por Cryptomator Hub, el propietario de la bóveda debe restaurarla por usted.
recover.onBoarding.intro.ensure=Todos los archivos están totalmente sincronizados.
recover.onBoarding.affirmation=He leído y comprendido estos requisitos
###Vault Config Missing
recover.onBoarding.intro.recoveryKey=Tiene la clave de recuperación y sabe si se han utilizado los ajustes expertos.
recover.onBoarding.intro.password=Tiene la contraseña y sabe si se han utilizado los ajustes expertos.
###Masterkey Missing
recover.onBoarding.intro.masterkey.recoveryKey=Tiene la clave de recuperación de la bóveda.
## Expert Settings
recover.expertSettings.shorteningThreshold.title=Este valor debe coincidir con el utilizado antes de la recuperación para asegurar la compatibilidad con datos cifrados previamente.
# Convert Vault
convertVault.title=Convertir bóveda
@@ -664,8 +616,6 @@ decryptNames.filePicker.title=Seleccione archivo cifrado
decryptNames.filePicker.extensionDescription=Archivo cifrado Cryptomator
decryptNames.copyTable.tooltip=Copiar tabla
decryptNames.clearTable.tooltip=Limpiar tabla
decryptNames.column.encrypted=Cifrado
decryptNames.column.decrypted=Descifrado
decryptNames.copyHint=Copiar contenido de celda con %s
decryptNames.dropZone.message=Soltar archivos o hacer clic para seleccionar
decryptNames.dropZone.error.vaultInternalFiles=Archivos internos de la bóveda sin nombre descifrable seleccionado
@@ -678,30 +628,23 @@ decryptNames.dropZone.error.generic=Error al descifrar nombre de archivos
eventView.title=Eventos
eventView.filter.allVaults=Todos
eventView.clearListButton.tooltip=Borrar lista
eventView.filterVaults=Filtrar por bóveda
eventView.cell.actionsButton.tooltip=Acciones del evento
## event list entries
eventView.entry.vaultLocked.description=Desbloquear "%s" para más detalles
eventView.entry.conflictResolved.message=Conflicto resuelto
eventView.entry.conflictResolved.showDecrypted=Mostrar archivo descifrado
eventView.entry.conflictResolved.copyDecrypted=Copiar ruta descifrada
eventView.entry.conflict.message=Resolución de conflictos fallida
eventView.entry.conflict.showDecrypted=Mostrar archivo descifrado, original
eventView.entry.conflict.copyDecrypted=Copiar ruta descifrada, original
eventView.entry.conflict.showEncrypted=Mostrar archivo en conflicto, cifrado
eventView.entry.conflict.copyEncrypted=Copiar ruta en conflicto, cifrada
eventView.entry.decryptionFailed.message=Desencriptación fallida
eventView.entry.decryptionFailed.showEncrypted=Mostrar archivo cifrado
eventView.entry.decryptionFailed.copyEncrypted=Copiar ruta cifrada
eventView.entry.brokenDirFile.message=Enlace de directorio roto
eventView.entry.brokenDirFile.showEncrypted=Mostrar enlace roto, cifrado
eventView.entry.brokenDirFile.copyEncrypted=Copiar ruta del enlace roto
eventView.entry.brokenFileNode.message=Nodo de sistema de archivos roto
eventView.entry.brokenFileNode.showEncrypted=Mostrar nodo roto, cifrado
eventView.entry.brokenFileNode.copyEncrypted=Copiar ruta del enlace roto, encriptado
eventView.entry.brokenFileNode.copyDecrypted=Copiar ruta descifrada
eventView.entry.inUse.message=Fichero en uso
eventView.entry.inUse.showDecrypted=Mostrar archivo descifrado
eventView.entry.inUse.showEncrypted=Mostrar archivo cifrado
eventView.entry.inUse.ignoreLock=Ignorar el estado de uso
# Notifications
## FileIsInUse Notification
notification.inUse.message=El archivo está en uso en otro dispositivo
notification.inUse.description=El archivo está abierto por %s en %s. Solicítale que cierre el archivo y deje que finalice la sincronización. Puede ignorar el estado para abrirlo ahora, pero esto puede causar conflictos o sobrescribir cambios más recientes.
notification.inUse.action=Ignorar el Estado de Uso

View File

@@ -12,13 +12,10 @@ generic.button.close=ببند
generic.button.copy=کپی
generic.button.copied=کپی شد!
generic.button.done=انجام شده
generic.button.previous=قبلی
generic.button.next=بعدی
generic.button.print=چاپ
generic.button.remove=حذف
## Vault state
# Error
error.message=خطایی رخ داده است
error.description=کریپتوماتور انتظار رخ دادن این مورد را نداشت. شما میتوانید به دنبال راهکار های موجود برای این خطا بگردید، یا اگر قبلا گزارش نشده است، گزارش کنید.
@@ -122,7 +119,6 @@ hub.register.message=دستگاه جدید
### Registration Success
hub.registerSuccess.unlockBtn=بازکردن قفل
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -179,8 +175,7 @@ preferences.updates.upToDate=Cryptomator به روز می باشد.
## Vault List
main.vaultlist.contextMenu.lock=قفل
main.vaultlist.contextMenu.reveal=نمایش درایو
main.vaultlist.addVaultButton.tooltip=اضافه کردن گاوصندوق
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -253,7 +248,3 @@ dokanySupportEnd.preferencesBtn=باز کردن تنظیمات
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=Sulje
generic.button.copy=Kopioi
generic.button.copied=Kopioitu!
generic.button.done=Valmis
generic.button.previous=Edellinen
generic.button.next=Seuraava
generic.button.print=Tulosta
generic.button.remove=Poista
## Vault state
vault.state.error=Virhe
# Error
error.message=Tapahtui virhe
error.description=Cryptomator ei odottanut tämän tapahtuvan. Voit etsiä olemassa olevia ratkaisuja tähän virheeseen. Tai jos sitä ei ole vielä raportoitu, voit tehdä niin.
@@ -100,7 +96,6 @@ addvault.new.readme.accessLocation.4=Voit halutessasi poistaa tämän tiedoston.
## Existing
addvaultwizard.existing.title=Lisää olemassa oleva holvi
addvaultwizard.existing.instruction=Valitse olemassa olevan Cryptomator holvin "vault.cryptomator" -tiedosto. Mikäli "vault.cryptomator" -tiedostoa ei ole, valitse "masterkey.cryptomator" -tiedosto.
addvaultwizard.existing.restore=Palauta…
addvaultwizard.existing.chooseBtn=Valitse…
addvaultwizard.existing.filePickerTitle=Valitse Holvi -tiedosto
addvaultwizard.existing.filePickerMimeDesc=Cryptomator Holvi
@@ -132,7 +127,6 @@ unlock.unlockBtn=Avaa
## Select
unlock.chooseMasterkey.message=Masterkey-tiedostoa ei löydy
unlock.chooseMasterkey.description=Cryptomator ei paikantanut masterkey-tiedostoa holville "%s". Ole hyvä ja valitse tiedosto manuaalisesti.
unlock.chooseMasterkey.restoreInstead=Palauta pääavaintiedosto
unlock.chooseMasterkey.filePickerTitle=Valitse masterkey-tiedosto
unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator masterkey
## Success
@@ -181,7 +175,6 @@ hub.registerSuccess.legacy.description=Käyttääksesi holvia, holvin omistajan
hub.registerFailed.message=Laitteen rekisteröinti epäonnistui
hub.registerFailed.description.generic=Rekisteröinnissä tapahtui virhe. Löydät lisätietoja lokitiedostoista.
hub.registerFailed.description.deviceAlreadyExists=Tämä laite on jo rekisteröity toiselle käyttäjälle. Yritä vaihtaa käyttäjätiliä tai käytää toista laitetta.
### Archived
### Unauthorized
hub.unauthorized.message=Pääsy estetty
hub.unauthorized.description=Sinulla ei ole oikeutta avata tätä holvia. Ota yhteyttä holvin omistajaan pyytääksesi pääsyä.
@@ -262,8 +255,6 @@ health.check.detail.checkFinishedAndFound=Testi suorietttiin loppuun. Ole hyvä
health.check.detail.checkFailed=Testi päättyi virheen vuoksi.
health.check.detail.checkCancelled=Testi peruutettiin.
health.check.detail.listFilters.label=Suodata
health.check.detail.filterSeverity=Suodata vakavuuden mukaan
health.check.detail.filterFixState=Suodata korjauksen tilan mukaan
health.check.detail.fixAllSpecificBtn=Korjaa kaikki tyyppiä
health.check.exportBtn=Vie raportti
## Result view
@@ -336,13 +327,8 @@ preferences.updates.lastUpdateCheck.never=ei koskaan
preferences.updates.lastUpdateCheck.recently=viimeaikoina
preferences.updates.lastUpdateCheck.daysAgo=%s päivää sitten
preferences.updates.lastUpdateCheck.hoursAgo=%s tuntia sitten
preferences.updates.prohibitedDueToUnlockedVaults.1=Ole hyvä
preferences.updates.prohibitedDueToUnlockedVaults.2=lukitse holvisi
preferences.updates.prohibitedDueToUnlockedVaults.3=asentaaksesi päivityksen.
preferences.updates.checkFailed=Päivitysten etsiminen epäonnistui. Tarkista internetyhteys tai yritä myöhemmin uudelleen.
preferences.updates.updateFailed=Päivitys epäonnistui. Asenna päivitys manuaalisesti.
preferences.updates.upToDate=Cryptomator on ajan tasalla.
preferences.updates.visitDownloadPage=Mene lataussivulle
## Contribution
preferences.contribute=Tue meitä
@@ -353,7 +339,6 @@ preferences.contribute.promptText=Liitä tukijasertifikaatin koodi tähän
preferences.contribute.thankYou=Kiitos tuestasi Cryptomatorin avoimeen kehittämiseen!
preferences.contribute.donate=Lahjoita
preferences.contribute.sponsor=Sponsori
preferences.contribute.removeCert.tooltip=Poista lisenssi
### Remove License Key Dialog
removeCert.title=Poista sertifikaatti
@@ -363,11 +348,9 @@ removeCert.description=Tämä ei vaikuta Cryptomatorin ydintoimintoihin. Holveih
## About
preferences.about=Tietoja
preferences.about.thirdPartyLicenses=Kolmansien osapuolien käyttöoikeudet
# Vault Statistics
stats.title=%s tilastot
stats.cacheHitRate=Välimuistin osumatarkkuus
## Read
stats.read.throughput.idle=Luku: toimeton
stats.read.throughput.kibs=Luku: %.2f KiB/s
@@ -410,13 +393,8 @@ main.vaultlist.contextMenu.unlockNow=Avaa Nyt
main.vaultlist.contextMenu.vaultoptions=Näytä holvin asetukset
main.vaultlist.contextMenu.reveal=Paljasta Asema
main.vaultlist.contextMenu.share=Jaa…
main.vaultlist.addVaultBtn.menuItemNew=Luo uusi holvi…
main.vaultlist.addVaultBtn.menuItemExisting=Avaa olemassaoleva holvi…
main.vaultlist.addVaultBtn.menuItemRecover=Palauta olemassaoleva holvi…
main.vaultlist.addVaultButton.tooltip=Lisää holvi
main.vaultlist.showEventsButton.tooltip=Avaa tapahtumanäkymä
main.vaultlist.showPreferencesButton.tooltip=Näytä asetukset
##Notification
##Notificaition
main.notification.updateAvailable=Päivitys on saatavilla.
main.notification.support=Tue Cryptomatoria.
## Vault Detail
@@ -453,8 +431,6 @@ main.vaultDetail.missing.recheck=Tarkista uudelleen
main.vaultDetail.missing.remove=Poista holvilistalta…
main.vaultDetail.missing.changeLocation=Vaihda holvin sijaintia…
### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=Holvin asetuksia ei löydy.
main.vaultDetail.missingVaultConfig.restore=Palauta holvin asetukset
### Needs Migration
main.vaultDetail.migrateButton=Päivitä Holvi
main.vaultDetail.migratePrompt=Holvisi täytyy muuntaa uuteen muotoon ennen kuin voit avata sen
@@ -479,7 +455,6 @@ vaultOptions.general=Yleiset
vaultOptions.general.vaultName=Holvin nimi
vaultOptions.general.autoLock.lockAfterTimePart1=Lukitse kun ollut käyttämättä
vaultOptions.general.autoLock.lockAfterTimePart2=minuuttia
vaultOptions.general.autoLock.accessibleText=Lukituksen aikakatkaisu minuuteissa
vaultOptions.general.unlockAfterStartup=Avaa holvi kun Cryptomator käynnistyy
vaultOptions.general.actionAfterUnlock=Avauksen jälkeen
vaultOptions.general.actionAfterUnlock.ignore=Älä tee mitään
@@ -520,7 +495,6 @@ vaultOptions.hub.convertBtn=Muunna salasanapohjaiseksi holviksi
recoveryKey.display.title=Näytä palautusavain
recoveryKey.create.message=Salasana vaaditaan
recoveryKey.create.description=Syötä salasana holville "%s" näyttääksesi sen palautusavaimen.
recoveryKey.recover.description=Syötä salasana "%s":lle palauttaaksesi holvin asetukset.
recoveryKey.display.description=Tällä palautusavaimella voidaan palauttaa pääsy holviin "%s":
recoveryKey.display.StorageHints=Pidä se hyvin tallessa, esimerkiksi\n • Säilytä se salasananhallintaohjelmassa\n • Tallenna se USB-asemalle\n • Tulosta se paperille
## Reset Password
@@ -533,59 +507,28 @@ recoveryKey.recover.invalidKey=Tämä palautusavain ei ole kelvollinen
recoveryKey.printout.heading=Cryptomator palautusavain\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=Palauta
recoveryKey.recover.recoverBtn=Palauta
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=Salasanan palautus onnistui
recoveryKey.recover.resetSuccess.description=Voit avata holvin uudella salasanalla.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Holvin asetukset palautettu
recoveryKey.recover.resetMasterkeyFileSuccess.message=Pääavaintiedosto palautettu
recoveryKey.recover.resetMasterkeyFileSuccess.description=Voit nyt avata holvisi salasanalla.
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=Holvi lisätty
recover.existing.message=Holvi lisättiin onnistuneesti
recover.existing.description=Holvisi "%s" on lisätty holviluetteloon. Palauttaminen ei ollut tarpeen.
##Vault Already Exists - Dialog
recover.alreadyExists.title=Holvi on jo olemassa
recover.alreadyExists.message=Tämä holvi on jo lisätty
recover.alreadyExists.description=Holvisi "%s" on jo holviluettelossasi, eikä sitä siksi lisätty uudelleen.
##Invalid Selection - Dialog
recover.invalidSelection.title=Virheellinen valinta
recover.invalidSelection.message=Valintasi ei ole holvi
recover.invalidSelection.description=Valitun kansion on oltava kelvollinen Cryptomator holvi.
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Hub -holvi
contactHubVaultOwner.message=Tämä holvi on luotu Cryptomator Hubilla
contactHubVaultOwner.description=Ota yhteys holvin omistajaan palauttaaksesi puuttuvan tiedoston. Hän voi ladata holvimallin Cryptomator Hubista.
##Dialog Title
recover.recoverVaultConfig.title=Palauta holvin asetukset
recover.recoverMasterkey.title=Palauta pääavain
## OnBoarding
recover.onBoarding.chooseMethod=Valitse palautusmenetelmä:
recover.onBoarding.useRecoveryKey=Käytä palautusavainta
recover.onBoarding.usePassword=Käytä salasanaa
recover.onBoarding.intro=Tarkista seuraavat:
recover.onBoarding.pleaseConfirm=Ennen jatkamista, vahvista että:
recover.onBoarding.otherwisePleaseConfirm=Muutoin, varmista että:
recover.onBoarding.allMissing.intro=Jos tätä holvia hallitaan Cryptomator Hubilla, holvin omistaja palauttaa holvin puolestasi.
recover.onBoarding.intro.ensure=Kaikki tiedostot ovat synkronoitu.
recover.onBoarding.affirmation=Olen lukenut ja ymmärtänyt nämä vaatimukset
###Vault Config Missing
recover.onBoarding.intro.recoveryKey=Sinulla on palautusavain ja tiedät onko edistyneitä asetuksia käytetty.
recover.onBoarding.intro.password=Sinulla on salasana ja tiedät onko edistyneitä asetuksia käytetty.
###Masterkey Missing
recover.onBoarding.intro.masterkey.recoveryKey=Sinulla on holvin palautusavain.
## Expert Settings
recover.expertSettings.shorteningThreshold.title=Tämän arvon on täsmättävä ennen palautusta olleeseen salatun tiedon yhteensopivuuden varmistamiseksi.
# Convert Vault
convertVault.title=Muunna holvi
@@ -626,9 +569,6 @@ updateReminder.yesOnce=Kyllä, vain tämän kerran
updateReminder.yesAutomatically=Kyllä, automaattisesti
#Dokany Support End
dokanySupportEnd.title=Huomio
dokanySupportEnd.message=Dokany tuen loppuminen
dokanySupportEnd.description=Cryptomator ei enää tue Dokany -osiotyyppiä. Asetuksesi muutetaan oletusosiotyyppiä varten. Voit tarkistaa oletusosiotyypin asetuksista.
dokanySupportEnd.preferencesBtn=Avaa asetukset
#Retry If Readonly
@@ -660,16 +600,7 @@ shareVault.hub.openHub=Avaa Cryptomator Hub
# Decrypt File Names
decryptNames.title=Pura tiedostonimien salaus
decryptNames.filePicker.title=Valitse salattu tiedosto
decryptNames.filePicker.extensionDescription=Cryptomatorilla salattu tiedosto
decryptNames.copyTable.tooltip=Kopioi taulukko
decryptNames.clearTable.tooltip=Tyhjennä taulukko
decryptNames.column.encrypted=Salattu
decryptNames.column.decrypted=Purettu
decryptNames.copyHint=Kopioi solun sisältö: %s
decryptNames.dropZone.message=Pudota tiedostoja tai napsauta valitaksesi
decryptNames.dropZone.error.vaultInternalFiles=Valittu holvin sisäiset tiedostot joissa ei ole purkukelpoista nimeä
decryptNames.dropZone.error.foreignFiles=Tiedostot eivät kuulu holviin "%s"
decryptNames.dropZone.error.noDirIdBackup=Valittujen tiedostojen hakemistossa ei ole dirld.c9r tiedostoa
decryptNames.dropZone.error.generic=Tiedostonimien salauksen purku epäonnistui
@@ -677,25 +608,23 @@ decryptNames.dropZone.error.generic=Tiedostonimien salauksen purku epäonnistui
eventView.title=Tapahtumat
eventView.filter.allVaults=Kaikki
eventView.clearListButton.tooltip=Tyhjennä luettelo
eventView.filterVaults=Suodata holvin mukaan
eventView.cell.actionsButton.tooltip=Toiminnot
## event list entries
eventView.entry.vaultLocked.description=Avaa "%s" lisätietoja varten
eventView.entry.conflictResolved.message=Ratkaistu ristiriita
eventView.entry.conflictResolved.showDecrypted=Näytä purettu tiedosto
eventView.entry.conflictResolved.copyDecrypted=Kopioi purettu polku
eventView.entry.conflict.message=Ristiriidan ratkaisu epäonnistui
eventView.entry.conflict.showDecrypted=Näytä purettu, alkuperäinen tiedosto
eventView.entry.conflict.copyDecrypted=Näytä purettu, alkuperäinen polku
eventView.entry.conflict.showEncrypted=Näytä ristiriitainen, salattu tiedosto
eventView.entry.conflict.copyEncrypted=Kopioi ristiriitainen, salattu polku
eventView.entry.decryptionFailed.message=Salauksen purku epäonnistui
eventView.entry.decryptionFailed.showEncrypted=Näytä salattu tiedosto
eventView.entry.decryptionFailed.copyEncrypted=Kopioi salattu polku
eventView.entry.brokenDirFile.message=Virheellinen hakemiston linkki
eventView.entry.brokenDirFile.showEncrypted=Näytä virheellinen, salattu linkki
eventView.entry.brokenDirFile.copyEncrypted=Kopioi virheellisen polun linkki
eventView.entry.brokenFileNode.message=Virheellinen tiedostojärjestelmän solmu
eventView.entry.brokenFileNode.showEncrypted=Näytä virheellinen, salattu solmu
eventView.entry.brokenFileNode.copyEncrypted=Kopioi virheellisen, salatun solmun polku
eventView.entry.brokenFileNode.copyDecrypted=Kopioi purettu polku
eventView.entry.inUse.showDecrypted=Näytä purettu tiedosto
eventView.entry.inUse.showEncrypted=Näytä salattu tiedosto
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=Isara
generic.button.copy=Kopyahin
generic.button.copied=Nakopya na!
generic.button.done=Tapos na
generic.button.previous=Nakaraan
generic.button.next=Sunod
generic.button.print=I-print
generic.button.remove=Tanggalin
## Vault state
vault.state.error=Error
# Error
error.message=Error %s
error.description=Oops! Hindi inaasahan ng Cryptomator na ito'y mangyari. Maaari kang humanap ng umiiral na solusyon sa problemang ito. Maaaring i-report ito kung hindi pa umiiral.
@@ -179,7 +175,6 @@ hub.registerSuccess.legacy.description=Para ma-access ang vault, kailangang pahi
hub.registerFailed.message=Ang pag rehistrado ng device ay pumalya
hub.registerFailed.description.generic=Nagkaroon ng error sa proseso ng pag registrado. Para sa higit pang mga detalye, tingnan ang log ng aplikasyon.
hub.registerFailed.description.deviceAlreadyExists=Ang device na ito ay registrado na sa ibang user. Subukang palitan ang user account o gumamit ng ibang device.
### Archived
### Unauthorized
hub.unauthorized.message=Walang pahintulot
### Requires Account Initialization
@@ -382,7 +377,6 @@ stats.access.total=Kabuuang mga access: %d
# Main Window
## Vault List
main.vaultlist=Mga Vault
main.vaultlist.emptyList.onboardingInstruction=Mag-click dito para magdagdag ng vault
main.vaultlist.contextMenu.remove=Alisin…
main.vaultlist.contextMenu.lock=I-lock
@@ -391,8 +385,7 @@ main.vaultlist.contextMenu.unlockNow=I-unlock Ngayon
main.vaultlist.contextMenu.vaultoptions=Ipakita ang Mga Opsyon sa Vault
main.vaultlist.contextMenu.reveal=Ibunyag ang Drive
main.vaultlist.contextMenu.share=Ibahagi…
main.vaultlist.addVaultButton.tooltip=Magdagdag ng Vault
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Salamat sa pagpili sa Cryptomator para protektahan ang iyong mga file. Kung kailangan mo ng anumang tulong, tingnan ang aming mga gabay sa pagsisimula:
@@ -595,7 +588,3 @@ shareVault.hub.openHub=Buksan ang Cryptomator Hub
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,19 +12,10 @@ generic.button.close=Fermer
generic.button.copy=Copier
generic.button.copied=Copié !
generic.button.done=OK
generic.button.previous=Précédent
generic.button.next=Suivant
generic.button.print=Imprimer
generic.button.remove=Supprimer
## Vault state
vault.state.locked=Verrouillé
vault.state.unlocked=Déverrouillé
vault.state.missing=Manquant
vault.state.migrationNeeded=Migration nécessaire
vault.state.processing=Traitement en cours
vault.state.error=Erreur
# Error
error.message=Une erreur s'est produite
error.description=Oups ! Cryptomator ne s'attendait pas à ce que cela se produise. Vous pouvez rechercher des solutions existantes pour cette erreur. Ou si elle n'a pas encore été signalée, n'hésitez pas à le faire.
@@ -186,9 +177,6 @@ hub.registerSuccess.legacy.description=Pour accéder au coffre, votre appareil d
hub.registerFailed.message=Échec de l'enregistrement de l'appareil
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.
### Archived
hub.archived.message=Le coffre est archivé
hub.archived.description=Ce coffre a été archivé et n'est plus accessible. Veuillez contacter le propriétaire du coffre.
### Unauthorized
hub.unauthorized.message=Accès refusé
hub.unauthorized.description=Vous n'êtes pas autorisé à ouvrir ce coffre. Contactez le propriétaire du coffre pour en demander l'accès.
@@ -269,8 +257,6 @@ health.check.detail.checkFinishedAndFound=Le test est terminé. Veuillez vérifi
health.check.detail.checkFailed=La vérification s'est arrêtée en raison d'une erreur.
health.check.detail.checkCancelled=Vérification annulée.
health.check.detail.listFilters.label=Filtre
health.check.detail.filterSeverity=Filtrer par sévérité
health.check.detail.filterFixState=Filtrer par état de réparation
health.check.detail.fixAllSpecificBtn=Corriger tout le type
health.check.exportBtn=Exporter le rapport
## Result view
@@ -343,13 +329,8 @@ 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.prohibitedDueToUnlockedVaults.1=Veuillez s'il vous plaît
preferences.updates.prohibitedDueToUnlockedVaults.2=verrouiller vos coffres
preferences.updates.prohibitedDueToUnlockedVaults.3=pour installer la mise à jour.
preferences.updates.checkFailed=La recherche de mises à jour a échoué. Veuillez vérifier votre connexion internet ou réessayez plus tard.
preferences.updates.updateFailed=Échec de la mise à jour. Merci d'installer la mise à jour manuellement.
preferences.updates.upToDate=Cryptomator est à jour.
preferences.updates.visitDownloadPage=Visiter la page de téléchargement
## Contribution
preferences.contribute=Nous soutenir
@@ -360,7 +341,6 @@ preferences.contribute.promptText=Collez le code du certificat du supporter ici
preferences.contribute.thankYou=Merci de soutenir le développement open-source de Cryptomator !
preferences.contribute.donate=Faire un don
preferences.contribute.sponsor=Parrain
preferences.contribute.removeCert.tooltip=Supprimer le certificat
### Remove License Key Dialog
removeCert.title=Supprimer le certificat
@@ -370,7 +350,6 @@ removeCert.description=Les fonctionnalités principales de Cryptomator ne sont p
## About
preferences.about=A propos
preferences.about.thirdPartyLicenses=Licences tierces
# Vault Statistics
stats.title=Statistiques sur %s
@@ -409,8 +388,6 @@ stats.access.total=Total des accès: %d
# Main Window
## Vault List
main.vaultlist=Coffres
main.vaultlist.listEntry=Coffre %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Cliquez ici pour ajouter un volume chiffré
main.vaultlist.contextMenu.remove=Retirer…
main.vaultlist.contextMenu.lock=Verrouiller
@@ -422,17 +399,13 @@ main.vaultlist.contextMenu.share=Partager…
main.vaultlist.addVaultBtn.menuItemNew=Créer un nouveau coffre…
main.vaultlist.addVaultBtn.menuItemExisting=Ouvrir le coffre existant…
main.vaultlist.addVaultBtn.menuItemRecover=Restaurer le coffre existant…
main.vaultlist.addVaultButton.tooltip=Ajouter un coffre
main.vaultlist.showEventsButton.tooltip=Ouvrir la vue Événements
main.vaultlist.showPreferencesButton.tooltip=Afficher les préférences
##Notification
##Notificaition
main.notification.updateAvailable=Mise à jour disponible.
main.notification.support=Soutenir Cryptomator.
main.notification.closeButton.tooltip="Fermer la barre d'information"
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Merci d'avoir choisi Cryptomator pour protéger vos fichiers. Si vous avez besoin d'aide, consultez nos guides de démarrage :
main.vaultDetail.storageLocation=Emplacement du stockage du coffre
### Locked
main.vaultDetail.lockedStatus=VERROUILLÉ
main.vaultDetail.unlockBtn=Déverrouiller…
@@ -490,7 +463,6 @@ vaultOptions.general=Général
vaultOptions.general.vaultName=Nom du volume chiffré
vaultOptions.general.autoLock.lockAfterTimePart1=Verrouiler en cas d'inactivité pendant
vaultOptions.general.autoLock.lockAfterTimePart2=minutes
vaultOptions.general.autoLock.accessibleText=Délai de verrouillage en minutes
vaultOptions.general.unlockAfterStartup=Déverrouiller le volume chiffré au démarrage
vaultOptions.general.actionAfterUnlock=Après un déverrouillage réussi
vaultOptions.general.actionAfterUnlock.ignore=Ne rien faire
@@ -521,7 +493,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Oublier le mot de passe enregistr
vaultOptions.masterkey.recoveryKeyExplanation=Une clé de récupération est le seul moyen de rétablir l'accès à un volume chiffré si vous en perdez le mot de passe.
vaultOptions.masterkey.showRecoveryKeyBtn=Afficher la clé de récupération
vaultOptions.masterkey.recoverPasswordBtn=Réinitialiser le mot de passe
vaultOptions.masterkey.missingMasterkeyFile=Ces options ne sont disponibles que si le fichier masterkey est présent dans le répertoire du coffre.
## Hub
vaultOptions.hub=Récupération
vaultOptions.hub.convertInfo=Vous pouvez utiliser la clé de récupération pour convertir ce coffre Hub en coffre à mot de passe en cas d'urgence.
@@ -550,8 +521,6 @@ recoveryKey.recover.recoverBtn=Restaurer
recoveryKey.recover.resetSuccess.message=Réinitialisation du mot de passe réussie
recoveryKey.recover.resetSuccess.description=Vous pouvez déverrouiller votre coffre avec le nouveau mot de passe.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Configuration du coffre-fort récupérée
recoveryKey.recover.resetMasterkeyFileSuccess.message=Fichier masterkey récupéré
recoveryKey.recover.resetMasterkeyFileSuccess.description=Vous pouvez maintenant déverrouiller votre coffre avec votre mot de passe.
# Recover Vault Config File and/or Masterkey
@@ -675,8 +644,6 @@ decryptNames.filePicker.title=Sélectionner le fichier chiffré
decryptNames.filePicker.extensionDescription=Fichier chiffré Cryptomator
decryptNames.copyTable.tooltip=Copier le tableau
decryptNames.clearTable.tooltip=Effacer le tableau
decryptNames.column.encrypted=Chiffré
decryptNames.column.decrypted=Déchiffré
decryptNames.copyHint=Copier le contenu de la cellule avec %s
decryptNames.dropZone.message=Déposer des fichiers ou cliquer pour en sélectionner
decryptNames.dropZone.error.vaultInternalFiles=Fichiers internes du coffre sans nom déchiffrable sélectionnés
@@ -689,31 +656,23 @@ decryptNames.dropZone.error.generic=Impossible de déchiffrer les noms de fichie
eventView.title=Événements
eventView.filter.allVaults=Tous
eventView.clearListButton.tooltip=Effacer la liste
eventView.filterVaults=Filtrer par coffre
eventView.cell.actionsButton.tooltip=Actions d'évènement
## event list entries
eventView.entry.vaultLocked.description=Déverrouillez "%s" pour plus de détails
eventView.entry.conflictResolved.message=Conflit résolu
eventView.entry.conflictResolved.showDecrypted=Afficher le fichier déchiffré
eventView.entry.conflictResolved.copyDecrypted=Copier le chemin déchiffré
eventView.entry.conflict.message=La résolution des conflits a échoué
eventView.entry.conflict.showDecrypted=Afficher le fichier original déchiffré
eventView.entry.conflict.copyDecrypted=Copier le chemin original déchiffré
eventView.entry.conflict.showEncrypted=Afficher le fichier chiffré en conflit
eventView.entry.conflict.copyEncrypted=Copier le chemin chiffré en conflit
eventView.entry.decryptionFailed.message=Le déchiffrement a échoué
eventView.entry.decryptionFailed.showEncrypted=Afficher le fichier chiffré
eventView.entry.decryptionFailed.copyEncrypted=Copier le chemin chiffré
eventView.entry.brokenDirFile.message=Lien de répertoire cassé
eventView.entry.brokenDirFile.showEncrypted=Afficher le lien chiffré cassé
eventView.entry.brokenDirFile.copyEncrypted=Copier le chemin du lien cassé
eventView.entry.brokenFileNode.message=Nœud de système de fichiers cassé
eventView.entry.brokenFileNode.showEncrypted=Afficher le nœud chiffré cassé
eventView.entry.brokenFileNode.copyEncrypted=Copier le chemin du nœud chiffré cassé
eventView.entry.brokenFileNode.copyDecrypted=Copier le chemin déchiffré
eventView.entry.inUse.message=Fichier en cours dutilisation
eventView.entry.inUse.showDecrypted=Afficher le fichier déchiffré
eventView.entry.inUse.showEncrypted=Afficher le fichier chiffré
eventView.entry.inUse.copyUserAndDevice=Copier le verrouillage de l'utilisateur et le nom de l'appareil
eventView.entry.inUse.ignoreLock=Ignorer le statut dutilisation
# Notifications
## FileIsInUse Notification
notification.inUse.message=Le fichier est utilisé sur un autre appareil
notification.inUse.description=Le fichier est ouvert par %s sur %s. Demandez-lui à fermer le fichier et laissez la synchronisation se terminer. Vous pouvez ignorer le statut pour louvrir maintenant, mais cela pourrait entraîner des conflits ou écraser des modifications récentes.
notification.inUse.action=Ignorer le statut dutilisation

View File

@@ -11,13 +11,10 @@ generic.button.close=Pechar
generic.button.copy=Copiar
generic.button.copied=Copiado!
generic.button.done=Feito
generic.button.previous=Anterior
generic.button.next=Seguinte
generic.button.print=Imprimir
generic.button.remove=Eliminar
## Vault state
# Error
error.message=Produciuse un erro
@@ -52,7 +49,6 @@ error.message=Produciuse un erro
### Register Device Legacy
### Registration Success
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -99,7 +95,7 @@ lock.forced.retryBtn=Tentar de novo
# Main Window
## Vault List
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -166,7 +162,3 @@ lock.forced.retryBtn=Tentar de novo
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=סגור
generic.button.copy=העתק
generic.button.copied=הועתק!
generic.button.done=סיום
generic.button.previous=הקודם
generic.button.next=הבא
generic.button.print=הדפס
generic.button.remove=הסר
## Vault state
vault.state.error=שגיאה
# Error
error.message=אירעה שגיאה
error.description=Cryptomator לא ציפתה שזה יקרה. ניתן לחפש פתרונות קיימים לשגיאה זו, או במקרה והשגיאה לא דווחה עדיין נשמח לקבל דיווח עליה.
@@ -163,7 +159,6 @@ hub.register.nameLabel=שם מכשיר
### Registration Success
hub.registerSuccess.unlockBtn=בטל נעילה
### Registration Failed
### Archived
### Unauthorized
hub.unauthorized.message=הגישה נדחתה
### Requires Account Initialization
@@ -352,7 +347,6 @@ stats.access.total=מספר גישות כולל: %d
# Main Window
## Vault List
main.vaultlist=כספות
main.vaultlist.emptyList.onboardingInstruction=לחץ כאן להוספת כספת
main.vaultlist.contextMenu.remove=הסר…
main.vaultlist.contextMenu.lock=נעילה
@@ -360,8 +354,7 @@ main.vaultlist.contextMenu.unlock=שחרר נעילה…
main.vaultlist.contextMenu.unlockNow=בטל נעילה כעת
main.vaultlist.contextMenu.vaultoptions=הצג את אפשרויות הכספת
main.vaultlist.contextMenu.reveal=חשוף את הכונן
main.vaultlist.addVaultButton.tooltip=הוספת כספת
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=תודה שבחרת ב- Cryptomator להגן על הקבצים שלך. אם אתה זקוק לסיוע, אנא עיין במדריכים שלנו:
@@ -528,7 +521,3 @@ dokanySupportEnd.preferencesBtn=פתח העדפות
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=बंद करें
generic.button.copy=कॉपी करें
generic.button.copied=कॉपी हुआ!
generic.button.done=हो गया
generic.button.previous=पिछला
generic.button.next=अगला
generic.button.print=प्रिंट करें
generic.button.remove=हटाएँ
## Vault state
vault.state.error=त्रुटि
# Error
error.message=एक त्रुटि पाई गई
error.description=क्रिप्टोमेटर ने ऐसा होने की उम्मीद नहीं की थी| आप इस त्रुटि के लिए मौजूदा समाधान देख सकते हैं| यदि कोई समाधान नहीं है तो बेझिझक इस त्रुटि को रिपोर्ट करिये
@@ -155,7 +151,6 @@ hub.register.nameLabel=डिवाइस का नाम
### Registration Success
hub.registerSuccess.unlockBtn=अनलॉक करें
### Registration Failed
### Archived
### Unauthorized
hub.unauthorized.message=प्रवेश अस्वीकृत
### Requires Account Initialization
@@ -239,7 +234,6 @@ preferences.contribute=हमें सपोर्ट करें
# Main Window
## Vault List
main.vaultlist=कक्षों का नाम
main.vaultlist.emptyList.onboardingInstruction=वॉल्ट को डालने के लिए यहाँ क्लिक करें।
main.vaultlist.contextMenu.remove=हटाएँ...
main.vaultlist.contextMenu.lock=लॉक करें
@@ -247,8 +241,7 @@ main.vaultlist.contextMenu.unlock=अनलॉक करें...
main.vaultlist.contextMenu.unlockNow=अब अनलॉक करें
main.vaultlist.contextMenu.vaultoptions=वॉल्ट के विकल्प दिखाए
main.vaultlist.contextMenu.reveal=फोल्डर खोलें
main.vaultlist.addVaultButton.tooltip=वाउल्ट डालें
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Cryptomator को अपनी फाइल्स सिराक्षित रखने को चुनने के लिए धन्यवाद। अगर आपको सहायता चाइये, तो हमारी गेटिंग स्टार्टेड गाइगाइड्स देखिये:
@@ -351,7 +344,3 @@ dokanySupportEnd.preferencesBtn=प्राथमिकताएँ खोल
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -11,14 +11,10 @@ generic.button.close=Zatvori
generic.button.copy=Kopiraj
generic.button.copied=Kopirano!
generic.button.done=Gotovo
generic.button.previous=Prethodno
generic.button.next=Sljedeći
generic.button.print=Ispiši
generic.button.remove=Ukloni
## Vault state
vault.state.error=Greška
# Error
error.message=Greška: %s
error.description=Opa! Cryptomator nije očekivao da će se ovo dogoditi. Možete pogledati postojeća rješenja za ovu grešku. Ili, ako još nije prijavljena, slobodno to učinite.
@@ -123,7 +119,6 @@ unlock.success.revealBtn=Otkrij pogon
### Registration Success
hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -271,7 +266,6 @@ stats.write.accessCount=Ukupno pisanja: %d
# Main Window
## Vault List
main.vaultlist=Trezori
main.vaultlist.emptyList.onboardingInstruction=Pritisnite ovdje da biste dodali trezor
main.vaultlist.contextMenu.remove=Ukloni…
main.vaultlist.contextMenu.lock=Zaključaj
@@ -279,8 +273,7 @@ main.vaultlist.contextMenu.unlock=Otključaj…
main.vaultlist.contextMenu.unlockNow=Otključaj sada
main.vaultlist.contextMenu.vaultoptions=Prikaži opcije trezora
main.vaultlist.contextMenu.reveal=Otkrij pogon
main.vaultlist.addVaultButton.tooltip=Dodaj trezor
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Hvala što ste odabrali Cryptomator za zaštitu Vaših datoteka. Ukoliko trebate pomoć, provjerite naše vodiče za početak rada:
@@ -418,7 +411,3 @@ quit.lockAndQuitBtn=Zaključaj i napusti
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=Bezár
generic.button.copy=Másolás
generic.button.copied=Másolva!
generic.button.done=Kész
generic.button.previous=Előző
generic.button.next=Következő
generic.button.print=Nyomtatás
generic.button.remove=Eltávolítás
## Vault state
vault.state.error=Hiba
# Error
error.message=Hiba: %s
error.description=Upsz! A Cryptomator nem számított rá, hogy ez megtörténik. Keressen meglévő megoldást erre a hibára. Vagy ha még nem jelentették, bátran tegye ezt meg.
@@ -179,7 +175,6 @@ hub.registerSuccess.legacy.description=A széfhez való hozzáféréshez az eszk
hub.registerFailed.message=Az eszköz regisztrációja sikertelen
hub.registerFailed.description.generic=Hiba történt a regisztrációs folyamat során. További részletekért nézze meg az alkalmazás naplóját.
hub.registerFailed.description.deviceAlreadyExists=Ez az eszköz már egy másik felhasználóhoz van regisztrálva. Próbáljon meg felhasználói fiókot váltani, vagy használjon egy másik eszközt.
### Archived
### Unauthorized
hub.unauthorized.message=Hozzáférés megtagadva
hub.unauthorized.description=Nincs hozzáférésed a széf megnyitásához. Vedd fel a kapcsolatot a széf tulajdonosával és kérj hozzáférést.
@@ -391,7 +386,6 @@ stats.access.total=Összes hozzáférés: %d
# Main Window
## Vault List
main.vaultlist=Széfek
main.vaultlist.emptyList.onboardingInstruction=Kattintson ide egy széf hozzáadásához
main.vaultlist.contextMenu.remove=Eltávolítás…
main.vaultlist.contextMenu.lock=Zárolás
@@ -400,8 +394,7 @@ main.vaultlist.contextMenu.unlockNow=Azonnali feloldás
main.vaultlist.contextMenu.vaultoptions=Széf beállítások
main.vaultlist.contextMenu.reveal=Széf megjelenítése
main.vaultlist.contextMenu.share=Megosztás…
main.vaultlist.addVaultButton.tooltip=Széf hozzáadása
##Notification
##Notificaition
main.notification.updateAvailable=Frissítés elérhető.
main.notification.support=Cryptomator támogatása.
## Vault Detail
@@ -610,7 +603,3 @@ shareVault.hub.openHub=Nyissa meg a Cryptomator Hubot
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=Tutup
generic.button.copy=Salin
generic.button.copied=Tersalin!
generic.button.done=Selesai
generic.button.previous=Sebelumnya
generic.button.next=Lanjut
generic.button.print=Cetak
generic.button.remove=Hapus
## Vault state
vault.state.error=Kesalahan
# Error
error.message=Terjadi kesalahan
error.description=Ups! Cryptomator tidak menyangka hal ini terjadi. Anda dapat mencari solusi yang tersedia untuk error ini. Atau jika error ini belum pernah dilaporkan, tidak perlu sungkan untuk melaporkannya.
@@ -179,7 +175,6 @@ hub.registerSuccess.legacy.description=Untuk mengakses vault, perangkat Anda har
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.
### Archived
### Unauthorized
hub.unauthorized.message=Akses ditolak
hub.unauthorized.description=Anda tidak punya otorisasi untuk membuka brankas ini. Hubungi pemilik brankas untuk meminta akses.
@@ -391,7 +386,6 @@ stats.access.total=Total yang akses: %d
# Main Window
## Vault List
main.vaultlist=Vault
main.vaultlist.emptyList.onboardingInstruction=Klik di sini untuk menambahkan vault
main.vaultlist.contextMenu.remove=Hapus…
main.vaultlist.contextMenu.lock=Kunci
@@ -400,8 +394,7 @@ main.vaultlist.contextMenu.unlockNow=Buka Kunci Sekarang
main.vaultlist.contextMenu.vaultoptions=Tampilkan Opsi Vault
main.vaultlist.contextMenu.reveal=Buka Drive
main.vaultlist.contextMenu.share=Bagikan…
main.vaultlist.addVaultButton.tooltip=Tambah Brankas
##Notification
##Notificaition
main.notification.updateAvailable=Pembaruan tersedia.
main.notification.support=Dukung Cryptomator.
## Vault Detail
@@ -611,7 +604,3 @@ shareVault.hub.openHub=Buka Cryptomator Hub
# Event View
eventView.filter.allVaults=Semua
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,19 +12,10 @@ generic.button.close=Chiudi
generic.button.copy=Copia
generic.button.copied=Copiato!
generic.button.done=Fatto
generic.button.previous=Precedente
generic.button.next=Avanti
generic.button.print=Stampa
generic.button.remove=Rimuovi
## Vault state
vault.state.locked=Bloccata
vault.state.unlocked=Sbloccata
vault.state.missing=Mancante
vault.state.migrationNeeded=Migrazione necessaria
vault.state.processing=Elaborazione
vault.state.error=Errore
# Error
error.message=Si è verificato un errore
error.description=Oops! Cryptomator non si aspettava che ciò accadesse. Puoi cercare soluzioni esistenti per questo errore. Oppure se non è ancora stato segnalato, sentitevi liberi di farlo.
@@ -186,9 +177,6 @@ hub.registerSuccess.legacy.description=Per accedere alla cassaforte, il tuo disp
hub.registerFailed.message=Registrazione dispositivo fallita
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.
### Archived
hub.archived.message=La cassaforte è archiviata
hub.archived.description=Questa cassaforte è stata archiviata e non è più accessibile. Contatta il proprietario della cassaforte.
### Unauthorized
hub.unauthorized.message=Accesso negato
hub.unauthorized.description=Non sei autorizzato ad aprire questa cassaforte. Chiedi l'accesso al proprietario.
@@ -269,8 +257,6 @@ health.check.detail.checkFinishedAndFound=Il controllo è terminato. Sei pregato
health.check.detail.checkFailed=Il controllo è terminato a causa di un errore.
health.check.detail.checkCancelled=Il controllo è stato annullato.
health.check.detail.listFilters.label=Filtri
health.check.detail.filterSeverity=Filtra per gravità
health.check.detail.filterFixState=Filtra per stato di risoluzione
health.check.detail.fixAllSpecificBtn=Correggi tutto di tipo
health.check.exportBtn=Esporta il Rapporto
## Result view
@@ -343,13 +329,8 @@ 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.prohibitedDueToUnlockedVaults.1=Per favore
preferences.updates.prohibitedDueToUnlockedVaults.2=blocca le tue casseforti
preferences.updates.prohibitedDueToUnlockedVaults.3=per installare l'aggiornamento.
preferences.updates.checkFailed=Ricerca aggiornamenti non riuscita. Controlla la tua connessione internet o riprova più tardi.
preferences.updates.updateFailed=Aggiornamento non riuscito. Installare manualmente l'aggiornamento.
preferences.updates.upToDate=Cryptomator è aggiornato.
preferences.updates.visitDownloadPage=Visita la pagina di download
## Contribution
preferences.contribute=Supportaci
@@ -360,7 +341,6 @@ preferences.contribute.promptText=Incolla qui il codice del certificato da soste
preferences.contribute.thankYou=Grazie per il tuo supporto allo sviluppo open-source di Cryptomator!
preferences.contribute.donate=Dona
preferences.contribute.sponsor=Sponsor
preferences.contribute.removeCert.tooltip=Rimuovi certificato
### Remove License Key Dialog
removeCert.title=Rimuovi Certificato
@@ -370,7 +350,6 @@ removeCert.description=Questo non incide sulle funzionalità principali di Crypt
## About
preferences.about=Info
preferences.about.thirdPartyLicenses=Licenze di terze parti
# Vault Statistics
stats.title=Statistiche per %s
@@ -409,8 +388,6 @@ stats.access.total=Accesso totale: %d
# Main Window
## Vault List
main.vaultlist=Cassaforti
main.vaultlist.listEntry=Cassaforte %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Clicca qui per aggiungere una cassaforte
main.vaultlist.contextMenu.remove=Rimuovi…
main.vaultlist.contextMenu.lock=Blocca
@@ -422,17 +399,13 @@ main.vaultlist.contextMenu.share=Condividi…
main.vaultlist.addVaultBtn.menuItemNew=Crea una nuova cassaforte…
main.vaultlist.addVaultBtn.menuItemExisting=Apri una cassaforte esistente…
main.vaultlist.addVaultBtn.menuItemRecover=Recupera una cassaforte esistente…
main.vaultlist.addVaultButton.tooltip=Aggiungi Cassaforte
main.vaultlist.showEventsButton.tooltip=Apri Vista Eventi
main.vaultlist.showPreferencesButton.tooltip=Mostra Preferenze
##Notification
main.vaultlist.showEventsButton.tooltip=Apri vista eventi
##Notificaition
main.notification.updateAvailable=Aggiornamento disponibile.
main.notification.support=Supporta Cryptomator.
main.notification.closeButton.tooltip=Chiudi la barra delle informazioni
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Grazie per aver scelto Cryptomator per proteggere i tuoi file. Se necessiti d'assistenza, dai un'occhiata alle nostre guide per iniziare:
main.vaultDetail.storageLocation=Percorso di archiviazione della cassaforte
### Locked
main.vaultDetail.lockedStatus=BLOCCATO
main.vaultDetail.unlockBtn=Sblocca…
@@ -490,7 +463,6 @@ vaultOptions.general=Generale
vaultOptions.general.vaultName=Nome della Cassaforte
vaultOptions.general.autoLock.lockAfterTimePart1=Blocca quando inattivo per
vaultOptions.general.autoLock.lockAfterTimePart2=minuti
vaultOptions.general.autoLock.accessibleText=Tempo di blocco in minuti
vaultOptions.general.unlockAfterStartup=Sblocca la cassaforte all'avvio di Cryptomator
vaultOptions.general.actionAfterUnlock=Dopo uno sblocco riuscito
vaultOptions.general.actionAfterUnlock.ignore=Non fare nulla
@@ -521,7 +493,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Dimentica Password Salvata
vaultOptions.masterkey.recoveryKeyExplanation=Una chiave di recupero è il tuo unico mezzo per ripristinare l'accesso a una cassaforte se perdi la tua password.
vaultOptions.masterkey.showRecoveryKeyBtn=Visualizza la chiave di recupero
vaultOptions.masterkey.recoverPasswordBtn=Reimposta Password
vaultOptions.masterkey.missingMasterkeyFile=Queste opzioni sono disponibili solo se il file con la chiave principale è presenza nella cartella della cassaforte.
## Hub
vaultOptions.hub=Recupero
vaultOptions.hub.convertInfo=È possibile utilizzare la chiave di recupero per convertire questa cassaforte Hub in una cassaforte basata su password in caso di emergenza.
@@ -550,8 +521,6 @@ recoveryKey.recover.recoverBtn=Recupera
recoveryKey.recover.resetSuccess.message=Password reimpostata correttamente
recoveryKey.recover.resetSuccess.description=Puoi sbloccare la tua cassaforte con la nuova password.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Configurazione cassaforte recuperata
recoveryKey.recover.resetMasterkeyFileSuccess.message=Masterkey file recuperato
recoveryKey.recover.resetMasterkeyFileSuccess.description=Ora puoi sbloccare la cassaforte con la tua password.
# Recover Vault Config File and/or Masterkey
@@ -675,8 +644,6 @@ decryptNames.filePicker.title=Seleziona file criptato
decryptNames.filePicker.extensionDescription=File crittografato Cryptomator
decryptNames.copyTable.tooltip=Copia tabella
decryptNames.clearTable.tooltip=Cancella la tabella
decryptNames.column.encrypted=Crittografato
decryptNames.column.decrypted=Decrittografato
decryptNames.copyHint=Copia il contenuto della cella con %s
decryptNames.dropZone.message=Trascina i file o fai clic per selezionare
decryptNames.dropZone.error.vaultInternalFiles=Hai selezionato file di casseforti con il nome non decifrabile
@@ -689,31 +656,23 @@ decryptNames.dropZone.error.generic=Decifratura nomi file non riuscita
eventView.title=Eventi
eventView.filter.allVaults=Tutti
eventView.clearListButton.tooltip=Cancella elenco
eventView.filterVaults=Filtra per cassaforte
eventView.cell.actionsButton.tooltip=Azioni dell'evento
## event list entries
eventView.entry.vaultLocked.description=Sblocca "%s" per i dettagli
eventView.entry.conflictResolved.message=Conflitto risolto
eventView.entry.conflictResolved.showDecrypted=Mostra file decifrato
eventView.entry.conflictResolved.copyDecrypted=Copia percorso decriptato
eventView.entry.conflict.message=Risoluzione dei conflitti fallita
eventView.entry.conflict.showDecrypted=Mostra il file originale decifrato
eventView.entry.conflict.copyDecrypted=Copia il percorso originale decifrato
eventView.entry.conflict.showEncrypted=Mostra file cifrato in conflitto
eventView.entry.conflict.copyEncrypted=Copia il percorso cifrato in conflitto
eventView.entry.decryptionFailed.message=Decifratura fallita
eventView.entry.decryptionFailed.showEncrypted=Mostra file cifrato
eventView.entry.decryptionFailed.copyEncrypted=Copia percorso cifrato
eventView.entry.brokenDirFile.message=Collegamento directory errato
eventView.entry.brokenDirFile.showEncrypted=Visualizza il link cifrato errato
eventView.entry.brokenDirFile.copyEncrypted=Copia il percorso errato del file cifrato
eventView.entry.brokenFileNode.message=Nodo file errato
eventView.entry.brokenFileNode.showEncrypted=Visualizza il nodo file cifrato errato
eventView.entry.brokenFileNode.copyEncrypted=Copia il percorso errato del nodo file cifrato
eventView.entry.brokenFileNode.copyDecrypted=Copia il percorso decifrato
eventView.entry.inUse.message=File in uso
eventView.entry.inUse.showDecrypted=Mostra file decifrato
eventView.entry.inUse.showEncrypted=Mostra file cifrato
eventView.entry.inUse.copyUserAndDevice=Copia il nome del dispositivo e dell'utente che sta bloccando
eventView.entry.inUse.ignoreLock=Ignora lo stato di utilizzo
# Notifications
## FileIsInUse Notification
notification.inUse.message=Il file è in uso su un altro dispositivo
notification.inUse.description=Il file è aperto da %s su %s. Chiedigli di chiudere il file e permettere che la sincronizzazione termini. È possibile ignorare lo stato ed aprirlo ora, ma questo può causare conflitti o la sovrascrittura delle modifiche più recenti.
notification.inUse.action=Ignora lo Stato di Utilizzo

View File

@@ -12,14 +12,10 @@ generic.button.close=閉じる
generic.button.copy=コピー
generic.button.copied=コピー完了!
generic.button.done=完了
generic.button.previous=戻る
generic.button.next=次へ
generic.button.print=印刷
generic.button.remove=削除
## Vault state
vault.state.error=エラー
# Error
error.message=エラー %s
error.description=Cryptomator で予期しない問題が発生しました。このエラーの解決方法を検索することができ、まだ報告されていない場合は、報告を行うことができます。
@@ -179,7 +175,6 @@ hub.registerSuccess.legacy.description=金庫にアクセスするためには
hub.registerFailed.message=デバイスの登録に失敗しました
hub.registerFailed.description.generic=登録中にエラーが発生しました。エラーの詳細についてはアプリケーションログを参照してください。
hub.registerFailed.description.deviceAlreadyExists=このデバイスは既に別のユーザーに登録されています。ユーザーアカウントを変更するか、別のデバイスを使用してください。
### Archived
### Unauthorized
hub.unauthorized.message=アクセスが拒否されました
hub.unauthorized.description=この金庫を開く権限がありません。金庫の所有者からアクセス許可を貰って下さい。
@@ -388,7 +383,6 @@ stats.access.total=合計アクセス: %d
# Main Window
## Vault List
main.vaultlist=金庫
main.vaultlist.emptyList.onboardingInstruction=ここをクリックして金庫を追加します
main.vaultlist.contextMenu.remove=削除...
main.vaultlist.contextMenu.lock=施錠
@@ -397,8 +391,7 @@ main.vaultlist.contextMenu.unlockNow=今すぐ解錠
main.vaultlist.contextMenu.vaultoptions=金庫のオプションを表示
main.vaultlist.contextMenu.reveal=ドライブを表示
main.vaultlist.contextMenu.share=共有…
main.vaultlist.addVaultButton.tooltip=金庫を追加
##Notification
##Notificaition
main.notification.updateAvailable=アップデートがあります。
main.notification.support=Cryptomator を支援する。
## Vault Detail
@@ -626,10 +619,3 @@ decryptNames.dropZone.error.generic=ファイル名の復号化に失敗しま
# Event View
## event list entries
eventView.entry.inUse.showDecrypted=復号化されたファイルを表示
eventView.entry.inUse.showEncrypted=暗号化されたファイルを表示
eventView.entry.inUse.copyUserAndDevice=ロックしているユーザーとデバイス名をコピー
# Notifications
## FileIsInUse Notification

View File

@@ -1,7 +1,7 @@
# Locale Specific CSS files such as CJK, RTL,...
# Generics
generic.action.dismiss=닫기
generic.action.dismiss=무시
## Button
generic.button.apply=적용
generic.button.back=이전
@@ -10,30 +10,21 @@ generic.button.change=변경
generic.button.choose=선택…
generic.button.close=닫기
generic.button.copy=복사
generic.button.copied=복사 완료!
generic.button.copied=복사!
generic.button.done=완료
generic.button.previous=이전
generic.button.next=다음
generic.button.print=인쇄
generic.button.remove=제거
## Vault state
vault.state.locked=잠김
vault.state.unlocked=잠금 해제됨
vault.state.missing=찾을 수 없음
vault.state.migrationNeeded=마이그레이션 필요함
vault.state.processing=처리 중
vault.state.error=오류
# Error
error.message=오류 발생
error.description=예상치 못한 오류가 발생했습니다. 해결법을 검색하십시오. 만약 보고된 적이 없는 오류일 경우, 새로 신고해도 좋습니다.
error.hyperlink.lookup=이 오류 검색하기
error.hyperlink.report=이 오류 보고하기
error.description=예상치 못한 에러가 발생했습니다. 해결법을 검색하십시오. 만약 보고된 적이 없는 에러일 경우, 새로 신고해도 좋습니다.
error.hyperlink.lookup=에러 검색하기
error.hyperlink.report=에러 보고하기
error.technicalDetails=상세 정보:
error.existingSolutionDescription=Cryptomator에 알 수 없는 문제가 발생했습니다. 하지만 이 오류에 대한 기존 해결법이 있습니다. 다음 링크를 살펴보십시오.
error.hyperlink.solution=해결법 찾기
error.lookupPermissionMessage=Cryptomator는 온라인에서 이 문제에 대한 해결책을 찾아볼 수 있습니다. 실행 시 귀하의 IP 주소가 문제 데이터베이스로 전송됩니다.
error.lookupPermissionMessage=Cryptomator는 온라인에서 이 문제에 대한 해결책을 찾아볼 수 있습니다. 그러면 귀하의 IP 주소가 문제 데이터베이스로 전송됩니다.
error.dismiss=무시
error.lookUpSolution=해결법 찾기
@@ -65,15 +56,15 @@ addvaultwizard.new.directoryPickerLabel=사용자 지정 위치
addvaultwizard.new.directoryPickerButton=선택…
addvaultwizard.new.directoryPickerTitle=디렉터리 선택
addvaultwizard.new.fileAlreadyExists=Vault 내에 이미 존재하는 파일 또는 디렉터리 이름입니다.
addvaultwizard.new.locationDoesNotExist=지정된 디렉터리가 존재하지 않거나 접근할 수 없습니다
addvaultwizard.new.locationDoesNotExist=지정된 디렉터리가 존재하지 않거나 접근 할 수 없습니다.
addvaultwizard.new.locationIsNotWritable=지정된 경로에 쓰기 권한이 없습니다.
addvaultwizard.new.locationIsOk=Vault에 적당한 위치
addvaultwizard.new.invalidName=유효하지 않은 Vault 이름입니다
addvaultwizard.new.validName=유효한 Vault 이름입니다
addvaultwizard.new.invalidName=올바르지 않은 vault 이름입니다
addvaultwizard.new.validName=올바른 vault 이름입니다
addvaultwizard.new.validCharacters.message=Vault 이름에는 다음과 같은 문자들이 포함될 수 있습니다:
addvaultwizard.new.validCharacters.chars=문자 (예시: a, ж, 수)
addvaultwizard.new.validCharacters.chars=문자 (예시: a, ж or 수)
addvaultwizard.new.validCharacters.numbers=숫자
addvaultwizard.new.validCharacters.dashes=하이픈 (%s) 또는 언더바 (%s)
addvaultwizard.new.validCharacters.dashes=대시 (%s) 또는 언더바 (%s)
### Expert Settings
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=전문가 설정 활성화
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=36과 220 사이 숫자를 입력해주세요 (기본값: 220)
@@ -82,36 +73,35 @@ addvaultwizard.new.expertSettings.shorteningThreshold.title=암호화된 파일
addvaultwizard.new.expertSettings.shorteningThreshold.valid=유효
### Password
addvaultwizard.new.createVaultBtn=Vault 생성
addvaultwizard.new.generateRecoveryKeyChoice=비밀번호 없이는 데이터에 접근할 수 없습니다. 비밀번호를 분실할 경우를 대비 복구 키를 생성하시겠습니까?
addvaultwizard.new.generateRecoveryKeyChoice.yes=네, 만약을 대비하여 발급받도록 하겠습니다.
addvaultwizard.new.generateRecoveryKeyChoice.no=아니요, 비밀번호를 잊지 않을 것이며 강력한 보안을 원합니다.
addvaultwizard.new.generateRecoveryKeyChoice=비밀번호으면 데이터에 접근할 수 없습니다. 비밀번호를 잊었을 때를 대비 복구 키를 원하십니까?
addvaultwizard.new.generateRecoveryKeyChoice.yes=네, 보안보다 비밀번호를 잊어버리는 것이 더 걱정됩니다.
addvaultwizard.new.generateRecoveryKeyChoice.no=아니요, 나는 비밀번호를 잊지 않을니다.
### Information
addvault.new.readme.storageLocation.fileName=IMPORTANT.rtf
addvault.new.readme.storageLocation.1=⚠️ VAULT 파일 ⚠️
addvault.new.readme.storageLocation.2=해당 디렉리는 귀하의 Vault 저장 위치입니다.
addvault.new.readme.storageLocation.2=해당 디렉리는 당신의 Vault 저장 위치입니다.
addvault.new.readme.storageLocation.3=금지 사항
addvault.new.readme.storageLocation.4=• 이 디렉터리를 포함한 어떤 파일도 다른 파일로 교체하거나
addvault.new.readme.storageLocation.5=• 암호화하고자 하는 파일을 이 디렉터리에 붙여넣지 마십시오.
addvault.new.readme.storageLocation.6=파일을 암호화하고 Vault의 내용을 보려면 다음을 수행하십시오:
addvault.new.readme.storageLocation.6=파일을 암호화하고 Vault 의 내용을 보려면 다음을 수행하십시오.
addvault.new.readme.storageLocation.7=1. 이 Vault를 Cryptomator에 추가하십시오.
addvault.new.readme.storageLocation.8=2. Cryptomator에서 Vault 잠금을 해제하십시오.
addvault.new.readme.storageLocation.9=3. "표시" 버튼을 클릭하여 Vault에 접근하십시오.
addvault.new.readme.storageLocation.10=만일 도움이 필요하신 경우, 다음의 문서를 참조하십시오: %s
addvault.new.readme.accessLocation.fileName=WELCOME.rtf
addvault.new.readme.accessLocation.1=🔐️ 암호화 된 볼륨 🔐️
addvault.new.readme.accessLocation.2=이것은 귀하의 Vault 접근 위치입니다.
addvault.new.readme.accessLocation.3=이 볼륨에 추가된 모든 파일은 Cryptomator로 암호화됩니다. 다른 드라이브/폴더처럼 작업할 수 있습니다. 이것은 단지 볼륨의 내용 복호화되어 보이는 것이며, 모든 파일은 하드디스크에 항상 암호화된 상태로 저장됩니다.
addvault.new.readme.accessLocation.2=이것은 당신의 Vault 접근 위치입니다.
addvault.new.readme.accessLocation.3=이 볼륨에 추가된 모든 파일은 Cryptomator로 암호화됩니다. 다른 드라이브/폴더처럼 작업할 수 있습니다. 볼륨의 내용 복호화 된 것처럼 보이지만, 모든 파일은 항상 암호화되어 하드디스크에 저장됩니다.
addvault.new.readme.accessLocation.4=이 파일은 지우셔도 무방합니다.
## Existing
addvaultwizard.existing.title=기존 Vault 추가
addvaultwizard.existing.instruction=이미 존재하는 Vault 폴더 내에서 "vault.cryptomator" 파일을 선택하세요. 만약 "masterkey.cryptomator"만 있다면 이를 대신 선택하세요.
addvaultwizard.existing.restore=복구…
addvaultwizard.existing.title=기존 금고 추가
addvaultwizard.existing.instruction=이미 존재하는 vault 폴더 내에서 "vault.cryptomator" 파일을 선택하세요. 만약 "masterkey.cryptomator"만 있다면 그걸 대신 선택하세요.
addvaultwizard.existing.chooseBtn=선택…
addvaultwizard.existing.filePickerTitle=Vault 파일 선택
addvaultwizard.existing.filePickerMimeDesc=Cryptomator Vault
## Success
addvaultwizard.success.nextStepsInstructions="%s" Vault가 추가되었습니다.\n이 Vault를 접근하거나 컨텐츠를 추가하려면 잠금 해제가 필요합니다. 그렇지만 언제든지 잠금 해제가 가능합니다.
addvaultwizard.success.unlockNow=지금 잠금 해제
addvaultwizard.success.nextStepsInstructions="%s" Vault가 추가되었습니다.\n이 Vault를 접근하거나 컨텐츠를 추가하려면 잠금해제가 필요합니다. 그렇지만 언제든지 잠금해제가 가능합니다.
addvaultwizard.success.unlockNow=지금 잠금해제
# Remove Vault
removeVault.title=Vault 제거
@@ -121,7 +111,7 @@ removeVault.description=이 행위는 Cryptomator에서만 이 Vault를 지웁
# Change Password
changepassword.title=비밀번호 변경
changepassword.enterOldPassword="%s"의 비밀번호를 입력하여 주십시오.
changepassword.finalConfirmation=비밀번호 분실 시, 데이터에 접근할 수 없다는 것을 이해했습니다.
changepassword.finalConfirmation=비밀번호를 잊어버리면, 데이터에 접근할 수 없다는 것을 이해했습니다.
# Forget Password
forgetPassword.title=비밀번호 삭제
@@ -133,11 +123,10 @@ forgetPassword.confirmBtn=비밀번호 삭제
unlock.title="%s" 잠금 해제
unlock.passwordPrompt="%s"의 비밀번호를 입력하십시오.
unlock.savePassword=비밀번호 기억
unlock.unlockBtn=잠금 해제
unlock.unlockBtn=잠금해제
## Select
unlock.chooseMasterkey.message=마스터키 파일을 찾을 수 없습니다
unlock.chooseMasterkey.description=이 Vault의 Masterkey를 찾지 못했습니다. 마스터 키 위치를 수동으로 선택하여 주십시오.
unlock.chooseMasterkey.restoreInstead=대신 마스터키 파일 복구
unlock.chooseMasterkey.filePickerTitle=Masterkey 파일 선택
unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator Masterkey
## Success
@@ -148,21 +137,21 @@ unlock.success.revealBtn=드라이브 표시
## Failure
unlock.error.customPath.message=Vault를 사용자 정의 경로에 마운트할 수 없습니다.
unlock.error.customPath.description.notSupported=사용자 지정 경로를 계속 사용하려면 설정으로 이동하여 이를 지원하는 볼륨 유형을 선택하십시오. 또는, Vault 설정으로 이동하여 지원되는 마운트 지점을 선택하십시오.
unlock.error.customPath.description.notExists=사용자 정의 마운트 경로가 존재하지 않습니다. 로컬 파일 시스템에서 생성하거나 Vault 옵션에서 변경하세요.
unlock.error.customPath.description.notExists=사용자 정의 마운트 경로가 존재하지 않습니다. 로컬 파일 시스템에서 생성하거나 볼트 옵션에서 변경하세요.
unlock.error.customPath.description.inUse=드라이브 문자 또는 사용자 정의 마운트 경로 "%s"가 이미 사용 중입니다.
unlock.error.customPath.description.hideawayNotDir=잠금 해제에 사용된 임시 숨김 파일 "%3$s"을(를) 제거할 수 없습니다. 파일을 확인한 후 수동으로 삭제해 주세요.
unlock.error.customPath.description.hideawayNotDir=잠금 해제에 사용된 임시 숨김 파일 "%3$s"을 제거할 수 없습니다. 파일을 확인한 후 수동으로 삭제해 주세요.
unlock.error.customPath.description.couldNotBeCleaned=Vault를 "%s" 경로에 마운트할 수 없습니다. 다시 시도하거나 다른 경로를 선택하세요.
unlock.error.customPath.description.notEmptyDir=사용자 정의 마운트 경로 "%s"은 빈 폴더가 아닙니다. 빈 폴더를 선택하고 다시 시도하세요.
unlock.error.customPath.description.generic=Vault에 대한 사용자 정의 마운트 경로를 선택했지만 다음 메시지와 함께 해당 경로를 사용하지 못했습니다: %2$s
unlock.error.restartRequired.message=Vault 잠금 해제할 수 없습니다
unlock.error.restartRequired.description=Vault 옵션에서 볼륨 유형을 변경하거나 Cryptomator를 다시 시작하십시오.
unlock.error.customPath.description.generic=볼트에 대한 사용자 정의 마운트 경로를 선택했지만 다음 메시지와 함께 해당 경로를 사용하지 못했습니다: %2$s
unlock.error.restartRequired.message=Vault 잠금 해제할 수 없습니다.
unlock.error.restartRequired.description=볼트 옵션에서 볼륨 유형을 변경하거나 Cryptomator를 다시 시작하십시오.
unlock.error.title="%s" 잠금 해제 실패
## Hub
hub.noKeychain.message=기기 키에 액세스할 수 없습니다
hub.noKeychain.description=Hub Vaults를 잠금 해제하려면 키체인을 사용하여 보호되는 기기 키가 필요합니다. 계속하려면 "%s"을(를) 활성화하고 기본 설정에서 키체인을 선택하십시오.
hub.noKeychain.message=장치 키에 액세스할 수 없습니다
hub.noKeychain.description=허브 저장소를 잠금 해제하려면 키체인을 사용하여 보호되는 장치 키가 필요합니다. 계속하려면 "%s"을 활성화하고 기본 설정에서 키체인을 선택하십시오.
hub.noKeychain.openBtn=설정 열기
### Waiting
hub.auth.message=인증 대기 중…
hub.auth.message=인증 대기중…
hub.auth.description=자동으로 로그인 페이지로 리다이렉트 될 것입니다.
hub.auth.loginLink=수동으로 열려면 클릭하십시오.
### Receive Key
@@ -184,11 +173,8 @@ hub.registerSuccess.unlockBtn=잠금 해제
hub.registerSuccess.legacy.description=Vault에 접근하기 위해서는 이 기기를 Vault 소유주가 추가적으로 허가해야 합니다.
### Registration Failed
hub.registerFailed.message=기기 등록 실패
hub.registerFailed.description.generic=등록 중에 오류가 발생했습니다. 앱 로그에서 자세한 정보를 확인할 수 있습니다.
hub.registerFailed.description.generic=등록 중에 에러가 발생했습니다. 앱 로그에서 자세한 정보를 확인할 수 있습니다.
hub.registerFailed.description.deviceAlreadyExists=이 기기는 이미 다른 사용자에 등록되어 있습니다. 다른 사용자 계정이나 다른 기기를 사용해보세요.
### Archived
hub.archived.message=Vault가 아카이브됨
hub.archived.description=이 Vault는 아카이브되어 더 이상 접근할 수 없습니다. Vault 소유자에게 문의하십시오.
### Unauthorized
hub.unauthorized.message=액세스 거부됨
hub.unauthorized.description=해당 Vault에 접근하도록 허가되지 않았습니다. Vault의 소유자에게 권한을 요청하세요.
@@ -199,12 +185,12 @@ hub.requireAccountInit.description.1=Hub 사용자 프로필
hub.requireAccountInit.description.2=.
### License Exceeded
hub.invalidLicense.message=Hub 라이선스가 잘못되었습니다.
hub.invalidLicense.description=Cryptomator Hub 인스턴스에 잘못된 라이선스가 있습니다. 라이스를 업그레이드하거나 갱신하려면 허브 관리자에게 알리십시오.
hub.invalidLicense.description=Cryptomator Hub 인스턴스에 잘못된 라이선스가 있습니다. 라이스를 업그레이드하거나 갱신하려면 허브 관리자에게 알리십시오.
# Lock
## Force
lock.forced.message=잠금 실패
lock.forced.description=대기 중인 작동이나 파일이 열려있어 "%s"을(를) 잠그는데 실패하였습니다. 이 Vault를 강제로 잠글 수 있으나, 입/출력의 중단은 저장되지 않은 데이터의 유실을 초래할 수 있습니다.
lock.forced.description=대기 중인 작동이나 파일이 열려있어 "%s" 잠그는데 실패하였습니다. 이 Vault를 강제로 잠글 수 있으나, 입/출력의 중단은 저장되지 않은 데이터의 유실을 초래할 수 있습니다.
lock.forced.retryBtn=재시도
lock.forced.forceBtn=강제 잠금
## Failure
@@ -217,42 +203,42 @@ migration.title=Vault 업그레이드
migration.start.header=Vault 업그레이드
migration.start.text=Vault "%s"를 현재 버전의 Cryptomator에서 열기 위해서는 해당 vault를 새 버전으로 업그레이드해야 합니다. 업그레이드를 하기 전에 다음 사항들을 알고 있어야 합니다:
migration.start.remarkUndone=이 업그레이드는 되돌릴 수 없습니다.
migration.start.remarkVersions=과거 버전의 Cryptomator는 업그레이드된 Vault를 열 수 없습니다.
migration.start.remarkCanRun=Vault를 열 때 사용하는 모든 기기가 현재 버전의 Cryptomator를 실행할 수 있는지 확인해야 합니다.
migration.start.remarkSynced=업그레이드하기 전에 해당 Vault가 모든 기기에 정상적으로 동기화되어야 합니다.
migration.start.remarkVersions=과거 버전의 Cryptomator는 업그레이드된 vault를 열 수 없습니다.
migration.start.remarkCanRun=vault를 열 때 사용하는 모든 장치가 현재 버전의 Cryptomator를 실행할 수 있는지 확인해야 합니다.
migration.start.remarkSynced=업그레이드하기 전에 해당 vault가 모든 기기에 정상적으로 동기화되어야 합니다.
migration.start.confirm=나는 위 정보를 읽고 정말 이해했습니다.
## Run
migration.run.enterPassword="%s"의 비밀번호를 입력하십시오.
migration.run.startMigrationBtn=Vault 마이그레이션
migration.run.progressHint=이 작업은 시간이 조금 소요됩니다.
## Success
migration.success.nextStepsInstructions="%s" 의 마이그레이션이 성공적으로 완료되었습니다. 이제 Vault를 잠금 해제할 수 있습니다.
migration.success.unlockNow=지금 잠금 해제
migration.success.nextStepsInstructions="%s" 의 마이그레이션이 성공적으로 완료되었습니다. 이제 Vault를 잠금해제할 수 있습니다.
migration.success.unlockNow=지금 잠금해제
## Missing file system capabilities
migration.error.missingFileSystemCapabilities.title=지원하지 않는 파일 시스템
migration.error.missingFileSystemCapabilities.description=Vault가 부적절한 파일 시스템에 있기 때문에 마이그레이션이 시작되지 않았습니다.
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=너무 긴 파일 이름을 파일 시스템에서 지원하지 않습니다.
migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=너무 긴 경로를 파일 시스템에서 지원하지 않습니다.
migration.error.missingFileSystemCapabilities.description=Vault가 부적절한 파일시스템에 있기 때문에 마이그레이션이 시작되지 않았습니다.
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=너무 긴 파일 이름을 파일시스템에서 지원하지 않습니다.
migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=너무 긴 경로를 파일시스템에서 지원하지 않습니다.
migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=파일 시스템이 읽기를 허용하지 않습니다.
migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=파일 시스템이 쓰기를 허용하지 않습니다.
## Impossible
migration.impossible.heading=Vault를 마이그레이션 할 수 없습니다.
migration.impossible.reason=저장소 위치 또는 접근 지점이 호환되지 않아 Vault를 자동으로 마이그레이션 할 수 없습니다.
migration.impossible.moreInfo=Vault를 이전 버전으로 계속 열 수 있습니다. Vault를 직접 마이그레이션 하는 설명을 보시려면, 다음을 방문하십시오
migration.impossible.moreInfo=Vault를 이전 버전으로 계속 열수 있습니다. Vault를 직접 마이그레이션 하는 설명을 보시려면, 다음을 방문하십시오.
# Health Check
## Start
health.title="%s"의 상태 검사
health.intro.header=상태 검사
health.intro.text=상태 검사는 Vault의 내부 구조의 문제점을 점검하고 해결할 수 있는 기능입니다. 다음 사항을 유의하시기 바랍니다:
health.intro.remarkSync=모든 기기가 완전히 동기화됐는지 확인하십시오. 이는 대부분의 문제를 해결합니다.
health.intro.remarkSync=모든 장치가 완전히 동기화됐는지 확인하십시오. 대부분의 문제를 해결합니다.
health.intro.remarkFix=모든 문제를 해결할 수 있는 것은 아닙니다.
health.intro.remarkBackup=데이터가 손상된 경우 백업만이 유일한 해결책입니다.
health.intro.affirmation=나는 위 정보를 읽었으며, 이해했습니다.
## Start Failure
health.fail.header=Vault 설정을 불러오는 중 오류 발생
health.fail.ioError=설정 파일에 접근하는 중 오류가 발생했습니다.
health.fail.parseError=Vault 설정을 파싱하는 중 오류가 발생했습니다.
health.fail.header=Vault 설정을 불러오는 중 에러 발생
health.fail.ioError=설정 파일에 접근하는 중 에러가 발생했습니다.
health.fail.parseError=Vault 설정을 파싱하는 중 에러가 발생했습니다.
health.fail.moreInfo=더 많은 정보
## Check Selection
health.checkList.description=검사할 항목을 왼쪽 목록에서 선택하거나 아래 버튼을 사용하세요.
@@ -269,8 +255,6 @@ health.check.detail.checkFinishedAndFound=검사가 완료되었습니다. 검
health.check.detail.checkFailed=오류로 인해 검사가 종료되었습니다.
health.check.detail.checkCancelled=검사가 취소되었습니다
health.check.detail.listFilters.label=필터
health.check.detail.filterSeverity=중요도로 정렬
health.check.detail.filterFixState=해결 상태로 정렬
health.check.detail.fixAllSpecificBtn=모든 문제 형식 고치기
health.check.exportBtn=보고서 내보내기
## Result view
@@ -279,7 +263,7 @@ health.result.severityFilter.good=양호
health.result.severityFilter.info=정보
health.result.severityFilter.warn=경고
health.result.severityFilter.crit=심각
health.result.severityTip.good=상태: 양호\n정상적인 Vault 구조를 가지고 있습니다.
health.result.severityTip.good=상태: 양호\n정상적인 vault 구조를 가지고 있습니다.
health.result.severityTip.info=상태: 정보\nVault 구조 온전함, 문제 해결 권장됨.
health.result.severityTip.warn=상태: 경고\nVault 구조 손상됨, 문제 해결 요구됨.
health.result.severityTip.crit=상태: 심각\nVault 구조가 손상되었습니다. 데이터 손실이 발생했습니다.
@@ -339,17 +323,12 @@ preferences.updates.autoUpdateCheck=자동으로 업데이트 확인
preferences.updates.checkNowBtn=지금 확인
preferences.updates.updateAvailable=버전 %s의 업데이트가 가능합니다.
preferences.updates.lastUpdateCheck=마지막 확인: %s
preferences.updates.lastUpdateCheck.never=확인 안
preferences.updates.lastUpdateCheck.never=확인 안함
preferences.updates.lastUpdateCheck.recently=최근
preferences.updates.lastUpdateCheck.daysAgo=%s일 전
preferences.updates.lastUpdateCheck.hoursAgo=%s 시간 전
preferences.updates.prohibitedDueToUnlockedVaults.1=부탁드립니다:
preferences.updates.prohibitedDueToUnlockedVaults.2=Vault 잠금
preferences.updates.prohibitedDueToUnlockedVaults.3=하여 업데이트를 설치하세요.
preferences.updates.checkFailed=업데이트를 확인할 수 없습니다. 인터넷 상태를 확인하거나 나중에 시도해주세요.
preferences.updates.updateFailed=업데이트 실패. 매뉴얼에 따라 업데이트를 설치해주세요.
preferences.updates.upToDate=현재 최신 버전의 Cryptomator를 사용하고 있습니다.
preferences.updates.visitDownloadPage=다운로드 페이지 방문
## Contribution
preferences.contribute=후원하기
@@ -360,7 +339,6 @@ preferences.contribute.promptText=후원자 인증코드를 여기에 붙여넣
preferences.contribute.thankYou=Cryptomator의 오픈 소스 개발을 지원해 주셔서 감사합니다!
preferences.contribute.donate=후원하기
preferences.contribute.sponsor=스폰서
preferences.contribute.removeCert.tooltip=인증서 제거
### Remove License Key Dialog
removeCert.title=인증서 제거
@@ -370,13 +348,12 @@ removeCert.description=Cryptomator의 핵심 기능은 영향을 받지 않습
## About
preferences.about=제품 정보
preferences.about.thirdPartyLicenses=제3자 라이선스
# Vault Statistics
stats.title=%s에 대한 통계
stats.cacheHitRate=캐시 히트율
## Read
stats.read.throughput.idle=읽기: 대기
stats.read.throughput.idle=읽기: 대기중
stats.read.throughput.kibs=읽기: %.2f KiB/s
stats.read.throughput.mibs=읽기: %.2f MiB/s
stats.read.total.data.none=데이터 읽기: -
@@ -389,7 +366,7 @@ stats.decr.total.data.mib=데이터 복호화: %.1f MiB
stats.decr.total.data.gib=데이터 복호화: %.1f GiB
stats.read.accessCount=총 읽기 횟수: %d
## Write
stats.write.throughput.idle=쓰기: 대기
stats.write.throughput.idle=쓰기: 대기중
stats.write.throughput.kibs=쓰기: %.2f KiB/s
stats.write.throughput.mibs=쓰기: %.2f MiB/s
stats.write.total.data.none=데이터 기록됨: -
@@ -409,8 +386,6 @@ stats.access.total=총 접근: %d
# Main Window
## Vault List
main.vaultlist=Vault
main.vaultlist.listEntry=Vault %s (%s)
main.vaultlist.emptyList.onboardingInstruction=여기를 클릭하여 Vault를 추가하세요
main.vaultlist.contextMenu.remove=제거...
main.vaultlist.contextMenu.lock=잠금
@@ -419,20 +394,13 @@ main.vaultlist.contextMenu.unlockNow=지금 잠금 해제
main.vaultlist.contextMenu.vaultoptions=Vault 옵션 보기
main.vaultlist.contextMenu.reveal=드라이브 표시
main.vaultlist.contextMenu.share=공유하기…
main.vaultlist.addVaultBtn.menuItemNew=새 Vault 만들기…
main.vaultlist.addVaultBtn.menuItemExisting=기존 Vault 열기…
main.vaultlist.addVaultBtn.menuItemRecover=기존 Vault 복구…
main.vaultlist.addVaultButton.tooltip=Vault 추가
main.vaultlist.showEventsButton.tooltip=이벤트 뷰어 열기
main.vaultlist.showPreferencesButton.tooltip=환경 설정 표시
##Notification
##Notificaition
main.notification.updateAvailable=업데이트가 있습니다.
main.notification.support=Cryptomator 지원하기.
main.notification.closeButton.tooltip=정보 표시줄 닫기
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=파일을 보호하기 위해 Cryptomator를 선택해주셔서 감사합니다. 만약 다른 도움이 필요하시면, 시작 안내서를 참조하시기 바랍니다.
main.vaultDetail.storageLocation=Vault 저장 위치
### Locked
main.vaultDetail.lockedStatus=잠김
main.vaultDetail.unlockBtn=잠금 해제...
@@ -457,27 +425,25 @@ main.vaultDetail.locateEncryptedFileBtn.tooltip=암호화된 파일을 보기
main.vaultDetail.encryptedPathsCopied=클립보드에 복사됨!
main.vaultDetail.locateEncrypted.filePickerTitle=Vault 내부에서 파일 선택
main.vaultDetail.decryptName.buttonLabel=파일명 복호화
main.vaultDetail.decryptName.tooltip=암호화된 Vault 파일을 선택해 파일 이름을 복호화
main.vaultDetail.decryptName.tooltip=암호화된 볼트 파일을 선택해 파일 이름을 복호화
### Missing
main.vaultDetail.missing.info=Cryptomator가 이 경로에 있는 Vault를 찾지 못했습니다.
main.vaultDetail.missing.recheck=다시 시도
main.vaultDetail.missing.remove=Vault 목록에서 제거...
main.vaultDetail.missing.changeLocation=Vault 위치 변경
### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=Vault 구성(config)이 누락되었습니다.
main.vaultDetail.missingVaultConfig.restore=Vault 구성(config) 복구
### Needs Migration
main.vaultDetail.migrateButton=Vault 업그레이드
main.vaultDetail.migratePrompt=Vault에 접근하기 전, 새로운 포맷으로 업그레이드가 필요합니다.
### Error
main.vaultDetail.error.info=디스크에서 Vault를 로드 중 오류가 발생했습니다.
main.vaultDetail.error.info=디스크에서 Vault를 로드 중 에러 발생
main.vaultDetail.error.reload=새로고침
main.vaultDetail.error.windowTitle=Vault 로드 오류 발생
main.vaultDetail.error.windowTitle=Vault 로드중 에러 발생
# Wrong File Alert
wrongFileAlert.title=파일 암호화 방법
wrongFileAlert.message=이 파일들을 암호화하려고 하십니까?
wrongFileAlert.description=이 목적을 위해 Cryptomator는 파일 관리자에 볼륨을 제공합니다.
wrongFileAlert.description=이 목적을 위해, Cryptomator는 파일 관리자에 볼륨을 제공합니다.
wrongFileAlert.instruction.0=파일을 암호화 하려면, 다음의 3단계를 따르십시오:
wrongFileAlert.instruction.1=1. Vault를 잠금 해제하십시오.
wrongFileAlert.instruction.2=2. "표시" 버튼을 클릭해 파일 탐색기에서 볼륨을 여십시오.
@@ -490,10 +456,9 @@ vaultOptions.general=일반
vaultOptions.general.vaultName=Vault 이름
vaultOptions.general.autoLock.lockAfterTimePart1=다음 시간 동안 유휴상태 시 잠그기
vaultOptions.general.autoLock.lockAfterTimePart2=
vaultOptions.general.autoLock.accessibleText=잠금 시간(분)
vaultOptions.general.unlockAfterStartup=Cryptomator를 시작할 때 Vault 잠금 해제
vaultOptions.general.actionAfterUnlock=성공적으로 잠금해제 후
vaultOptions.general.actionAfterUnlock.ignore=아무 것도 하지 않
vaultOptions.general.actionAfterUnlock.ignore=아무 것도 하지 않
vaultOptions.general.actionAfterUnlock.reveal=드라이브 표시
vaultOptions.general.actionAfterUnlock.ask=요청
vaultOptions.general.startHealthCheckBtn=상태 검사 시작
@@ -507,9 +472,9 @@ vaultOptions.mount.winDriveLetterOccupied=사용됨
vaultOptions.mount.mountPoint=마운트 지점
vaultOptions.mount.mountPoint.auto=자동으로 적합한 위치를 선택
vaultOptions.mount.mountPoint.driveLetter=드라이브 문자를 지정하여 사용
vaultOptions.mount.mountPoint.custom=선택한 디렉리 사용
vaultOptions.mount.mountPoint.custom=선택한 디렉리 사용
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 포트
@@ -518,13 +483,12 @@ vaultOptions.mount.volume.type=볼륨 타입
vaultOptions.masterkey=비밀번호
vaultOptions.masterkey.changePasswordBtn=비밀번호 변경
vaultOptions.masterkey.forgetSavedPasswordBtn=저장된 비밀번호 삭제
vaultOptions.masterkey.recoveryKeyExplanation=복구 키는 비밀번호를 잊어버렸을 때, Vault의 접근을 복원할 수 있는 유일한 방법입니다.
vaultOptions.masterkey.recoveryKeyExplanation=복구 키는 비밀번호를 잊어버렸을 때, Vault의 접근을 복원 할 수 있는 유일한 방법입니다.
vaultOptions.masterkey.showRecoveryKeyBtn=복구 키 표시
vaultOptions.masterkey.recoverPasswordBtn=비밀번호 재설정
vaultOptions.masterkey.missingMasterkeyFile=이러한 옵션은 마스터키 파일이 Vault 디렉터리에 있는 경우에만 사용할 수 있습니다.
## Hub
vaultOptions.hub=복구
vaultOptions.hub.convertInfo=비상 상황에 이 Hub Vault를 비밀번호 기반 Vault로 변환하기 위해 복구 키를 사용할 수 있습니다.
vaultOptions.hub.convertInfo=비상상황에 이 Hub Vault를 비밀번호 기반 Vault로 변환하기 위해 복구 키를 사용할 수 있습니다.
vaultOptions.hub.convertBtn=비밀번호 기반 Vault로 변환하기
# Recovery Key
@@ -532,72 +496,41 @@ vaultOptions.hub.convertBtn=비밀번호 기반 Vault로 변환하기
recoveryKey.display.title=복구 키 보기
recoveryKey.create.message=비밀번호가 필요합니다
recoveryKey.create.description="%s"의 복구 키를 표시하려면 비밀번호를 입력해 주세요.
recoveryKey.recover.description=Vault 구성(config) 복구를 위해 "%s" 비밀번호를 입력하세요.
recoveryKey.display.description="%s"에 대한 접근을 복원하는데 사용할 수 있는 복구 키 입니다:
recoveryKey.display.StorageHints=매우 안전한 곳에 보관하십시오. 예를 들어:\n • 비밀번호 관리자를 사용하여 저장\n • USB 플래시 드라이브에 저장\n • 종이로 출력
recoveryKey.display.description="%s" 데이터 접근을 복원하는데 사용 할 수 있는 복구 키 입니다:
recoveryKey.display.StorageHints=매우 안전한곳에 보관하십시오. 예시:\n • 비밀번호 관리자를 사용하여 저장\n • USB 플래시 드라이브에 저장\n • 종이로 출력
## Reset Password
### Enter Recovery Key
recoveryKey.recover.title=비밀번호 바꾸기
recoveryKey.recover.prompt="%s"의 복구키를 입력하십시오:
recoveryKey.recover.correctKey=올바른 복구 키 입니다
recoveryKey.recover.wrongKey=이 복구 키는 다른 Vault의 키입니다
recoveryKey.recover.wrongKey=이 복구 키는 다른 vault의 키입니다
recoveryKey.recover.invalidKey=해당 복구 키는 유효하지 않습니다
recoveryKey.printout.heading=Cryptomator 복구 키\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=초기화
recoveryKey.recover.recoverBtn=복구
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=비밀번호 재설정 성공
recoveryKey.recover.resetSuccess.description=이제 해당 Vault를 새 비밀번호로 잠금 해제할 수 있습니다.
recoveryKey.recover.resetSuccess.description=이제 해당 vault를 새 비밀번호로 잠금 해제할 수 있습니다.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Vault 구성(config) 복구 완료
recoveryKey.recover.resetMasterkeyFileSuccess.message=마스터키 파일 복구 완료
recoveryKey.recover.resetMasterkeyFileSuccess.description=이제 해당 Vault를 귀하의 비밀번호로 잠금 해제할 수 있습니다.
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=Vault 추가됨
recover.existing.message=Vault가 성공적으로 추가되었습니다
recover.existing.description=Vault "%s"이(가) Vault 목록에 추가되었습니다. 복구 절차는 필요하지 않았습니다.
##Vault Already Exists - Dialog
recover.alreadyExists.title=Vault 이미 존재함
recover.alreadyExists.message=Vault 이미 추가됨
recover.alreadyExists.description=Vault "%s"이(가) 이미 목록에 존재하여 다시 추가되지 않았습니다.
##Invalid Selection - Dialog
recover.invalidSelection.title=유효하지 않은 선택
recover.invalidSelection.message=Vault를 선택하지 않았습니다
recover.invalidSelection.description=선택한 폴더는 유효한 Cryptomator Vault여야 합니다.
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Hub Vault
contactHubVaultOwner.message=이 Vault는 Cryptomator Hub를 이용하여 생성되었습니다
contactHubVaultOwner.description=누락된 파일을 복원하려면 Vault 소유자에게 문의하십시오. Vault 소유자는 Cryptomator Hub에서 Vault 템플릿을 다운로드할 수 있습니다.
##Dialog Title
recover.recoverVaultConfig.title=Vault 구성(config) 복구
recover.recoverMasterkey.title=마스터키 복구하기
## OnBoarding
recover.onBoarding.chooseMethod=복구 방법을 선택하세요:
recover.onBoarding.useRecoveryKey=복구키 사용하기
recover.onBoarding.usePassword=비밀번호 사용하기
recover.onBoarding.intro=아래 사항을 정확히 읽고 확인하세요:
recover.onBoarding.pleaseConfirm=진행하기 전, 다음 사항을 확인해 주십시오:
recover.onBoarding.otherwisePleaseConfirm=그렇지 않다면 다음 사항을 확인해 주십시오:
recover.onBoarding.allMissing.intro=만약 이 Vault가 Cryptomator Hub에 의해 관리되고 있다면 소유자가 귀하를 대신하여 복구해야 합니다.
recover.onBoarding.intro.ensure=모든 파일이 동기화 완료되었습니다.
recover.onBoarding.affirmation=저는 이러한 요구 사항을 읽고 이해했습니다
###Vault Config Missing
recover.onBoarding.intro.recoveryKey=복구 키가 있으며 전문가 설정 사용 여부를 알고 있습니다.
recover.onBoarding.intro.password=Vault 비밀번호가 있으며 전문가 설정 사용 여부를 알고 있습니다.
###Masterkey Missing
recover.onBoarding.intro.masterkey.recoveryKey=Vault 복구 키를 가지고 있습니다.
## Expert Settings
recover.expertSettings.shorteningThreshold.title=이 값은 복구 전에 사용된 값과 일치해야만 전에 암호화된 데이터와의 호환성을 보장할 수 있습니다.
# Convert Vault
convertVault.title=Vault 변환
@@ -620,7 +553,7 @@ passwordStrength.messageLabel.4=매우 강함
# Quit
quit.title=앱 종료
quit.message=잠금 해제된 Vault들이 존재합니다
quit.message=잠금 해제된 vault들이 존재합니다
quit.description=정말로 나가시겠습니까? Cryptomator는 데이터 손실을 막기 위해 열린 Vault를 잠글 것입니다.
quit.lockAndQuitBtn=Vault 잠금 후 종료하기
@@ -658,7 +591,7 @@ shareVault.instruction.2=2. Vault의 비밀번호를 안전한 방식으로 전
shareVault.remarkBestPractices=문서에 있는 권장사항을 통해 더 많은 정보를 확인하십시오.
shareVault.docsTooltip=Vault의 공유에 대해서는 문서를 참조하십시오.
shareVault.hubAd.description=팀에서 작업하는 안전한 방법
shareVault.hubAd.keyManagement=• 사전 지식 없는 키 관리
shareVault.hubAd.keyManagement=• 사전지식 없는 키 관리
shareVault.hubAd.authentication=• 강력한 인증
shareVault.hubAd.encryption=• 종단간 암호화
shareVault.visitHub=Cryptomator Hub 방문하기
@@ -675,8 +608,6 @@ decryptNames.filePicker.title=암호화된 파일 선택
decryptNames.filePicker.extensionDescription=Cryptomator로 암호화된 파일
decryptNames.copyTable.tooltip=테이블 복사
decryptNames.clearTable.tooltip=테이블 비우기
decryptNames.column.encrypted=암호화됨
decryptNames.column.decrypted=복호화됨
decryptNames.copyHint=%s로 셀 내용 복사하기
decryptNames.dropZone.message=파일을 여기에 드롭하거나 클릭하세요
decryptNames.dropZone.error.vaultInternalFiles=복호화 가능한 이름이 선택되지 않은 Vailt 내부 파일
@@ -689,28 +620,23 @@ decryptNames.dropZone.error.generic=파일 이름 복호화 실패
eventView.title=이벤트
eventView.filter.allVaults=전체
eventView.clearListButton.tooltip=목록 지우기
eventView.filterVaults=Vault로 필터링
eventView.cell.actionsButton.tooltip=이벤트별 동작
## event list entries
eventView.entry.vaultLocked.description="%s"를 잠금 해제하여 세부정보 보기
eventView.entry.conflictResolved.message=해결된 충돌
eventView.entry.conflictResolved.showDecrypted=복호화된 파일 보기
eventView.entry.conflictResolved.copyDecrypted=복호화된 경로 복사하기
eventView.entry.conflict.message=충돌 해결 실패
eventView.entry.conflict.showDecrypted=복호화된 원본 파일 보기
eventView.entry.conflict.copyDecrypted=복호화된 원본 경로 복사하기
eventView.entry.conflict.showEncrypted=충돌하는 암호화된 파일 보기
eventView.entry.conflict.copyEncrypted=충돌하는 암호화된 경로 복사하기
eventView.entry.decryptionFailed.message=복호화 실패
eventView.entry.decryptionFailed.showEncrypted=암호화된 파일 보기
eventView.entry.decryptionFailed.copyEncrypted=암호화된 경로 복사하기
eventView.entry.brokenDirFile.message=망가진 디렉터리 링크
eventView.entry.brokenDirFile.showEncrypted=망가진 암호화된 링크 보기
eventView.entry.brokenDirFile.copyEncrypted=망가진 링크의 경로 복사하리
eventView.entry.brokenFileNode.message=망가진 파일시스템 노드
eventView.entry.brokenFileNode.showEncrypted=망가진 암호화된 노드 보기
eventView.entry.brokenFileNode.copyEncrypted=망가진 암호화된 노드의 경로 복사하기
eventView.entry.brokenFileNode.copyDecrypted=복호화된 경로 복사하기
eventView.entry.inUse.showDecrypted=복호화된 파일 보기
eventView.entry.inUse.showEncrypted=암호화된 파일 보기
eventView.entry.inUse.copyUserAndDevice=파일 잠금 사용자 및 기기 이름 복사
# Notifications
## FileIsInUse Notification
notification.inUse.message=다른 기기에서 파일 사용 중
notification.inUse.action=사용 여부 상태 무시

View File

@@ -12,19 +12,10 @@ generic.button.close=Aizvērt
generic.button.copy=Ievietot starpliktuvē
generic.button.copied=Ievietots starpliktuvē
generic.button.done=Darīts
generic.button.previous=Atpakaļ
generic.button.next=Tālāk
generic.button.print=Drukāt
generic.button.remove=Noņemt
## Vault state
vault.state.locked=Aizslēgta
vault.state.unlocked=Atslēgta
vault.state.missing=Trūkst
vault.state.migrationNeeded=Nepieciešama pārcelšana
vault.state.processing=Apstrādā
vault.state.error=Kļūda
# Error
error.message=Atgadījās kļūda
error.description=Cryptomator negaidīja, ka tas notiks. Var uzmeklēt esošus šīs kļūdas risinājumus. Vai arī, ja par to vēl nav ziņots, var droši darīt to.
@@ -186,9 +177,6 @@ hub.registerSuccess.legacy.description=Lai piekļūtu glabātavai, tās īpašni
hub.registerFailed.message=Ierīces reģistrācija neizdevās
hub.registerFailed.description.generic=Reģistrēšanās laikā atgadījās kļūda. Vairāk informācijas ir atrodama lietotnes žurnālā.
hub.registerFailed.description.deviceAlreadyExists=Šī ierīce jau ir reģistrēta citam lietotājam. Jamēģina nomainīt lietotāja kontu vai izmantot citu ierīci.
### Archived
hub.archived.message=Glabātava arhivēta
hub.archived.description=Glabātava tika arhivēta un vairs nav pieejama. Lūgums sazināties ar glabātavas īpašnieku.
### Unauthorized
hub.unauthorized.message=Piekļuve atteikta
hub.unauthorized.description=Nav pilnvaras atvērt šo glabātavu. Jāsazinās ar glabātavas īpašnieku, lai pieprasītu piekļuvi.
@@ -269,8 +257,6 @@ health.check.detail.checkFinishedAndFound=Pārbaude beidza izpildīteis. Lūgums
health.check.detail.checkFailed=Pārbaude beidza darboties kļūdas dēļ.
health.check.detail.checkCancelled=Pārbaude tika atcelta.
health.check.detail.listFilters.label=Atlasīt
health.check.detail.filterSeverity=Atlasīt pēc nozīmīguma
health.check.detail.filterFixState=Atlasīt pēc salabošanas stāvokļa
health.check.detail.fixAllSpecificBtn=Salabot visu ar veidu
health.check.exportBtn=Izgūt pārskatu
## Result view
@@ -343,13 +329,8 @@ preferences.updates.lastUpdateCheck.never=nekad
preferences.updates.lastUpdateCheck.recently=nesen
preferences.updates.lastUpdateCheck.daysAgo=Pirms %s dienām
preferences.updates.lastUpdateCheck.hoursAgo=Pirms %s stundām
preferences.updates.prohibitedDueToUnlockedVaults.1=Lūgums
preferences.updates.prohibitedDueToUnlockedVaults.2=aizslēgt savas glabātavas,
preferences.updates.prohibitedDueToUnlockedVaults.3=lai uzstādītu atjauninājumu.
preferences.updates.checkFailed=Atjauninājumu uzmeklēšana neizdevās. Lūgums pārbaudīt savu interneta savienojumu vai vēlāk mēģināt vēlreiz.
preferences.updates.updateFailed=Atjaunināšana neizdevāš. Lūgums pašrocīgi uzstādīt atjauninājumu.
preferences.updates.upToDate=Cryptomator ir jaunākā versija.
preferences.updates.visitDownloadPage=Apmeklēt lejupielāžu lapu
## Contribution
preferences.contribute=Atbalstīt mūs
@@ -360,7 +341,6 @@ preferences.contribute.promptText=Šeit jāielīmē atbalstītāja sertifikāta
preferences.contribute.thankYou=Paldies par Cryptomator atvērtā pirmkoda izstrādes atbalstīšanu!
preferences.contribute.donate=Ziedot
preferences.contribute.sponsor=Pabalstīt
preferences.contribute.removeCert.tooltip=Noņemt sertifikātu
### Remove License Key Dialog
removeCert.title=Noņemt sertifikātu
@@ -370,7 +350,6 @@ removeCert.description=Šis neietekmē Cryptomator pamata iespējas. Nav ne iero
## About
preferences.about=Par
preferences.about.thirdPartyLicenses=Trešo pušu licences
# Vault Statistics
stats.title=%s pārskats
@@ -409,8 +388,6 @@ stats.access.total=Piekļuves pavisam: %d
# Main Window
## Vault List
main.vaultlist=Glabātavas
main.vaultlist.listEntry=Glabātava %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Klikšķināt šeit, lai pievienotu glabātavu
main.vaultlist.contextMenu.remove=Noņemt…
main.vaultlist.contextMenu.lock=Aizslēgt
@@ -422,17 +399,13 @@ main.vaultlist.contextMenu.share=Kopīgot…
main.vaultlist.addVaultBtn.menuItemNew=Izveidot jaunu glabātavu…
main.vaultlist.addVaultBtn.menuItemExisting=Atvērt esošu glabātavu…
main.vaultlist.addVaultBtn.menuItemRecover=Atjaunot esošu glabātavu…
main.vaultlist.addVaultButton.tooltip=Pievienot glabātavu
main.vaultlist.showEventsButton.tooltip=Atvērt notikumu skatu
main.vaultlist.showPreferencesButton.tooltip=Rādīt iestatījumus
##Notification
##Notificaition
main.notification.updateAvailable=Ir pieejams atjauninājums.
main.notification.support=Atbalstīt Cryptomator.
main.notification.closeButton.tooltip=Aizvērt informācijas joslu
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Paldies par izvēlēšanos izmantot Cryptomator, lai aizsargātu savas datnes! Ja ir nepieciešama jebkāda palīdzība, ir vērts ieskatīties mūsu darba uzsākšanas norādēs:
main.vaultDetail.storageLocation=Glabātavas krātuves atrašanās vieta
### Locked
main.vaultDetail.lockedStatus=AIZSLĒGTA
main.vaultDetail.unlockBtn=Atslēgt…
@@ -490,7 +463,6 @@ vaultOptions.general=Vispārēji
vaultOptions.general.vaultName=Glabātavas nosaukums
vaultOptions.general.autoLock.lockAfterTimePart1=Aizslēgt, kad dīkstāvē
vaultOptions.general.autoLock.lockAfterTimePart2=minūtes
vaultOptions.general.autoLock.accessibleText=Aizslēgšanas noildze minūtēs
vaultOptions.general.unlockAfterStartup=Atslēgt glabātavu pēc Cryptomator palaišanas
vaultOptions.general.actionAfterUnlock=Pēc sekmīgas atslēgšanas
vaultOptions.general.actionAfterUnlock.ignore=Nedarīt neko
@@ -549,8 +521,6 @@ recoveryKey.recover.recoverBtn=Atkopt
recoveryKey.recover.resetSuccess.message=Paroles atiestatīšana sekmīga
recoveryKey.recover.resetSuccess.description=Savu glabātavu var atslēgt ar jauno paroli.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Glabātavas konfigurācija atkopta
recoveryKey.recover.resetMasterkeyFileSuccess.message=Galvenās atslēgas datne atkopta
recoveryKey.recover.resetMasterkeyFileSuccess.description=Savu glabātavu tagad var atslēgt ar jauno paroli.
# Recover Vault Config File and/or Masterkey
@@ -674,8 +644,6 @@ decryptNames.filePicker.title=Atlasīt šifrētu datni
decryptNames.filePicker.extensionDescription=Cryptomator šifrēta datne
decryptNames.copyTable.tooltip=Ievietot tabulu starpliktuvē
decryptNames.clearTable.tooltip=Notīrīt tabulu
decryptNames.column.encrypted=Šifrēts
decryptNames.column.decrypted=Atšifrēts
decryptNames.copyHint=Ievietot šūnas saturu starpliktuvē ar %s
decryptNames.dropZone.message=Nomest datnes vai klikšķināt, lai atlasītu
decryptNames.dropZone.error.vaultInternalFiles=Atlasītas glabātavas iekšējās datnes ar neatšifrējamu nosaukumu
@@ -688,31 +656,23 @@ decryptNames.dropZone.error.generic=Neizdevās atšifrēt datņu nosaukumus
eventView.title=Notikumi
eventView.filter.allVaults=Viss
eventView.clearListButton.tooltip=Notīrīt sarakstu
eventView.filterVaults=Atlasīt pēc glabātavas
eventView.cell.actionsButton.tooltip=Notikumu darbības
## event list entries
eventView.entry.vaultLocked.description=Atslēgt "%s", lai redzētu informāciju
eventView.entry.conflictResolved.message=Atrisināta nesaderība
eventView.entry.conflictResolved.showDecrypted=Parādīt atšifrēto datni
eventView.entry.conflictResolved.copyDecrypted=Ievietot starpliktuvē atšifrēto ceļu
eventView.entry.conflict.message=Nesaderības atrisināšana neizdevās
eventView.entry.conflict.showDecrypted=Parādīt atšifrēto, sākotnējo datni
eventView.entry.conflict.copyDecrypted=Ievietot starpliktuvē atšifrēto, sākotnējo datni
eventView.entry.conflict.showEncrypted=Parādīt nesaderīgo, šifrēto datni
eventView.entry.conflict.copyEncrypted=Ievietot starpliktuvē nesaderīgo, šifrēto ceļu
eventView.entry.decryptionFailed.message=Atšifrēšana neizdevās
eventView.entry.decryptionFailed.showEncrypted=Parādīt šifrēto datni
eventView.entry.decryptionFailed.copyEncrypted=Ievietot starpliktuvē šifrēto ceļu
eventView.entry.brokenDirFile.message=Bojāta mapes saite
eventView.entry.brokenDirFile.showEncrypted=Parādīt bojāto, šifrēto saiti
eventView.entry.brokenDirFile.copyEncrypted=Ievietot starpliktuvē bojātās saites ceļu
eventView.entry.brokenFileNode.message=Bojāts datņu sistēmas mezgls
eventView.entry.brokenFileNode.showEncrypted=Parādīt bojāto, šifrēto mezglu
eventView.entry.brokenFileNode.copyEncrypted=Ievietot starpliktuvē botjātā, šifrētā mezgla ceļu
eventView.entry.brokenFileNode.copyDecrypted=Ievietot starpliktuvē atšifrēto ceļu
eventView.entry.inUse.message=Datne tiek izmantota
eventView.entry.inUse.showDecrypted=Parādīt atšifrēto datni
eventView.entry.inUse.showEncrypted=Parādīt šifrēto datni
eventView.entry.inUse.copyUserAndDevice=Ievietot starpliktuvē lietotāju un ierīces, kurā aizslēgta, nosaukumu
eventView.entry.inUse.ignoreLock=Neņemt vēra izmantošanas stāvokli
# Notifications
## FileIsInUse Notification
notification.inUse.message=Datne tiek izmantota citā ierīcē
notification.inUse.description=Datni atvēra %s ierīcē %s. Jāvaicā aizvērt datni un ļaut pabeigties sinhronizēšanai. Stāvokli tagad var neņemt vērā, lai atvērtu datni, bet tas var radīt nesaderības vai pārrakstīt jaunākas izmaiņas.
notification.inUse.action=Neņemt vēra izmantošanas stāvokli

View File

@@ -16,9 +16,6 @@ generic.button.next=Продолжи
generic.button.print=Печати
generic.button.remove=Отстрани
## Vault state
vault.state.error=Грешка
# Error
error.message=Грешка
error.description=Не очекуваше да се случи ова. Можете да пронајдете постоечки решенија за оваа грешка. Или, ако не е пријавена сè уште, слободно направете тоа.
@@ -84,7 +81,6 @@ unlock.unlockBtn=Отклучи
### Registration Success
hub.registerSuccess.unlockBtn=Отклучи
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -132,8 +128,7 @@ preferences.title=Поставки
# Main Window
## Vault List
main.vaultlist.contextMenu.lock=Заклучи
main.vaultlist.addVaultButton.tooltip=Додај сеф
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -203,7 +198,3 @@ vaultOptions.mount.mountPoint.directoryPickerButton=Избор…
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -3,8 +3,6 @@
# Generics
## Button
## Vault state
# Error
# Defaults
@@ -38,7 +36,6 @@
### Register Device Legacy
### Registration Success
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -84,7 +81,7 @@
# Main Window
## Vault List
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -151,7 +148,3 @@
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,18 +12,10 @@ generic.button.close=Lukk
generic.button.copy=Kopier
generic.button.copied=Kopiert!
generic.button.done=Ferdig
generic.button.previous=Forrige
generic.button.next=Neste
generic.button.print=Skriv ut
generic.button.remove=Fjern
## Vault state
vault.state.locked=Låst
vault.state.unlocked=Ulåst
vault.state.missing=Mangler
vault.state.processing=Behandler
vault.state.error=Feil
# Error
error.message=Feilkode %s
error.description=Oops! Cryptomator forventet ikke at dette skulle skje. Du kan slå opp mulige løsninger for denne feilen. Hvis feilen ikke er rapportert så kan du gjerne gjøre det.
@@ -104,7 +96,6 @@ addvault.new.readme.accessLocation.4=Denne filen kan fjernes hvis ønskelig.
## Existing
addvaultwizard.existing.title=Legg til et eksisterende hvelv
addvaultwizard.existing.instruction=Velg "vault.cryptomator"-filen til ditt eksisterende hvelv. Hvis det kun finnes en fil med navnet "masterkey.cryptomator", så velger du den i stedet.
addvaultwizard.existing.restore=Gjenopprett…
addvaultwizard.existing.chooseBtn=Velg…
addvaultwizard.existing.filePickerTitle=Velg hvelvfil
addvaultwizard.existing.filePickerMimeDesc=Cryptomator-hvelv
@@ -184,8 +175,6 @@ hub.registerSuccess.legacy.description=For å få tilgangen til hvelvet, må enh
hub.registerFailed.message=Enhetsregistrering mislyktes
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.
### Archived
hub.archived.message=Hvelvet er arkivert
### Unauthorized
hub.unauthorized.message=Ingen tilgang
### Requires Account Initialization
@@ -334,12 +323,8 @@ 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.prohibitedDueToUnlockedVaults.1=Vennligst
preferences.updates.prohibitedDueToUnlockedVaults.2=lås hvelvene dine
preferences.updates.prohibitedDueToUnlockedVaults.3=for å installere oppdateringen.
preferences.updates.checkFailed=Kunne ikke lete etter oppdateringer. Sjekk internett tilkoblingen din og prøv igjen senere.
preferences.updates.upToDate=Cryptomator er oppdatert.
preferences.updates.visitDownloadPage=Besøk nedlastingssiden
## Contribution
preferences.contribute=Støtt oss
@@ -349,7 +334,6 @@ preferences.contribute.getCertificate=Har du ikke en allerede? Lær hvordan du k
preferences.contribute.promptText=Lim inn supporter sertifikatkoden her
preferences.contribute.donate=Donér
preferences.contribute.sponsor=Sponsor
preferences.contribute.removeCert.tooltip=Fjern sertifikat
### Remove License Key Dialog
removeCert.title=Fjern sertifikat
@@ -357,7 +341,6 @@ removeCert.title=Fjern sertifikat
## About
preferences.about=Om
preferences.about.thirdPartyLicenses=Tredjepartslisenser
# Vault Statistics
stats.title=Statistikk for %s
@@ -396,7 +379,6 @@ stats.access.total=Antall tilganger: %d
# Main Window
## Vault List
main.vaultlist=Hvelv
main.vaultlist.emptyList.onboardingInstruction=Klikk her for å legge til et hvelv
main.vaultlist.contextMenu.remove=Fjern…
main.vaultlist.contextMenu.lock=Lås
@@ -405,9 +387,7 @@ main.vaultlist.contextMenu.unlockNow=Lås opp nå
main.vaultlist.contextMenu.vaultoptions=Alternativer for hvelvet
main.vaultlist.contextMenu.reveal=Vis enheten
main.vaultlist.contextMenu.share=Del…
main.vaultlist.addVaultBtn.menuItemNew=Lag et nytt hvelv…
main.vaultlist.addVaultButton.tooltip=Legg til hvelv
##Notification
##Notificaition
main.notification.support=Støtt Cryptomator.
## Vault Detail
### Welcome
@@ -434,15 +414,12 @@ main.vaultDetail.stats=Hvelvstatistikk
main.vaultDetail.locateEncryptedFileBtn=Finn kryptert fil
main.vaultDetail.locateEncryptedFileBtn.tooltip=Velg en fil fra hvelvet ditt for å finne den krypterte motparten
main.vaultDetail.encryptedPathsCopied=Stier kopiert til utklippstavlen!
main.vaultDetail.decryptName.buttonLabel=Dekrypter filnavn
### Missing
main.vaultDetail.missing.info=Cryptomator kunne ikke finne et hvelv på denne søkestien.
main.vaultDetail.missing.recheck=Kontroller igjen
main.vaultDetail.missing.remove=Fjern fra hvelvlisten…
main.vaultDetail.missing.changeLocation=Endre hvelvplassering…
### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=Hvelvkonfigurasjon mangler.
main.vaultDetail.missingVaultConfig.restore=Gjenopprett hvelvkonfigurasjon
### Needs Migration
main.vaultDetail.migrateButton=Oppgrader hvelv
main.vaultDetail.migratePrompt=Hvelvet ditt må oppgraderes til et nytt format før du kan få tilgang til det
@@ -526,10 +503,8 @@ recoveryKey.recover.resetSuccess.description=Du kan låse opp hvelvet med det ny
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=Hvelv lagt til
##Vault Already Exists - Dialog
recover.alreadyExists.title=Hvelvet finnes allerede
##Invalid Selection - Dialog
@@ -610,7 +585,3 @@ shareVault.hub.openHub=Åpne Cryptomator hub
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,19 +12,10 @@ generic.button.close=Sluiten
generic.button.copy=Kopieer
generic.button.copied=Gekopieerd!
generic.button.done=Klaar
generic.button.previous=Vorige
generic.button.next=Volgende
generic.button.print=Afdrukken
generic.button.remove=Verwijderen
## Vault state
vault.state.locked=Vergrendeld
vault.state.unlocked=Ontgrendeld
vault.state.missing=Ontbrekend
vault.state.migrationNeeded=Migratie vereist
vault.state.processing=Verwerken...
vault.state.error=Fout
# Error
error.message=Er deed zich een fout voor
error.description=Oeps! Cryptomator verwachtte niet dat dit zou gebeuren. U kunt bestaande oplossingen opzoeken voor deze fout, of, indien er nog geen melding van deze fout is gemaakt: doe dit gerust.
@@ -186,9 +177,6 @@ hub.registerSuccess.legacy.description=Om toegang te krijgen tot de kluis, moet
hub.registerFailed.message=Registratie van Apparaat mislukt
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.
### Archived
hub.archived.message=Kluis is gearchiveerd
hub.archived.description=Deze kluis is gearchiveerd en is niet meer toegankelijk. Neem contact op met de eigenaar van de kluis.
### Unauthorized
hub.unauthorized.message=Toegang geweigerd
hub.unauthorized.description=U bent niet geautoriseerd om deze kluis te openen. Neem contact op met de eigenaar van de kluis om toegang aan te vragen.
@@ -269,8 +257,6 @@ health.check.detail.checkFinishedAndFound=De controle is beëindigd. Bekijk alst
health.check.detail.checkFailed=De controle is afgesloten door een fout.
health.check.detail.checkCancelled=De controle werd geannuleerd.
health.check.detail.listFilters.label=Filter
health.check.detail.filterSeverity=Filter op ernst
health.check.detail.filterFixState=Filter op status
health.check.detail.fixAllSpecificBtn=Repareer alle soorten
health.check.exportBtn=Exporteer rapport
## Result view
@@ -343,13 +329,8 @@ 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.prohibitedDueToUnlockedVaults.1=A. u. b.
preferences.updates.prohibitedDueToUnlockedVaults.2=vergrendel uw kluizen
preferences.updates.prohibitedDueToUnlockedVaults.3=om de update te installeren.
preferences.updates.checkFailed=Zoeken naar updates is mislukt. Controleer je internetverbinding of probeer het later opnieuw.
preferences.updates.updateFailed=Update is mislukt. Installeer de update handmatig.
preferences.updates.upToDate=Cryptomator is up-to-date.
preferences.updates.visitDownloadPage=Bezoek de download pagina
## Contribution
preferences.contribute=Steun ons
@@ -360,7 +341,6 @@ preferences.contribute.promptText=Plak de supportercertificaatcode hier
preferences.contribute.thankYou=Bedankt voor het steunen van Cryptomator's open-source ontwikkeling!
preferences.contribute.donate=Doneren
preferences.contribute.sponsor=Sponsor
preferences.contribute.removeCert.tooltip=Verwijder Certificaat
### Remove License Key Dialog
removeCert.title=Verwijder Certificaat
@@ -370,7 +350,6 @@ removeCert.description=De kernfuncties van Cryptomator worden hierdoor niet beï
## About
preferences.about=Over
preferences.about.thirdPartyLicenses=Third-party licenties
# Vault Statistics
stats.title=Statistieken voor %s
@@ -409,8 +388,6 @@ stats.access.total=Totaal aantal toegangen: %d
# Main Window
## Vault List
main.vaultlist=Kluizen
main.vaultlist.listEntry=Kluis %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Klik hier om een kluis toe te voegen
main.vaultlist.contextMenu.remove=Verwijderen…
main.vaultlist.contextMenu.lock=Vergrendel
@@ -422,17 +399,13 @@ main.vaultlist.contextMenu.share=Delen…
main.vaultlist.addVaultBtn.menuItemNew=Maak een nieuwe kluis aan…
main.vaultlist.addVaultBtn.menuItemExisting=Open bestaande kluis…
main.vaultlist.addVaultBtn.menuItemRecover=Herstel bestaande kluis…
main.vaultlist.addVaultButton.tooltip=Voeg kluis toe
main.vaultlist.showEventsButton.tooltip=Open gebeurtenissen venster
main.vaultlist.showPreferencesButton.tooltip=Toon Voorkeuren
##Notification
main.vaultlist.showEventsButton.tooltip=Afspraakweergave openen
##Notificaition
main.notification.updateAvailable=Update beschikbaar.
main.notification.support=Steun Cryptomator.
main.notification.closeButton.tooltip=Info balk sluiten
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Bedankt dat u Cryptomator heeft gekozen om uw bestanden te beschermen. Voor assistentie verwijzen we u naar de starthandleidingen:
main.vaultDetail.storageLocation=Kluis opslaglocatie
### Locked
main.vaultDetail.lockedStatus=VERGRENDELD
main.vaultDetail.unlockBtn=Ontgrendelen…
@@ -490,7 +463,6 @@ vaultOptions.general=Algemeen
vaultOptions.general.vaultName=Kluisnaam
vaultOptions.general.autoLock.lockAfterTimePart1=Vergrendel wanneer inactief voor
vaultOptions.general.autoLock.lockAfterTimePart2=minuten
vaultOptions.general.autoLock.accessibleText=Versleutelen timeout in minuten
vaultOptions.general.unlockAfterStartup=Ontgrendel kluis bij het starten van Cryptomator
vaultOptions.general.actionAfterUnlock=Na een succesvolle ontgrendeling
vaultOptions.general.actionAfterUnlock.ignore=Niets doen
@@ -521,7 +493,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Opgeslagen wachtwoord vergeten
vaultOptions.masterkey.recoveryKeyExplanation=Een herstelsleutel is je enige manier om de toegang tot een kluis te herstellen als je je wachtwoord kwijtraakt.
vaultOptions.masterkey.showRecoveryKeyBtn=Toon herstelsleutel
vaultOptions.masterkey.recoverPasswordBtn=Wachtwoord resetten
vaultOptions.masterkey.missingMasterkeyFile=Deze opties zijn alleen beschikbaar als het hoofdsleutelbestand aanwezig is in de kluismap.
## Hub
vaultOptions.hub=Herstel
vaultOptions.hub.convertInfo=U kunt de herstelsleutel gebruiken om deze Hub kluis om te zetten in een wachtwoord-gebaseerde kluis in noodsituaties.
@@ -584,7 +555,7 @@ recover.onBoarding.chooseMethod=Kies een herstelmethode:
recover.onBoarding.useRecoveryKey=Herstelsleutel gebruiken
recover.onBoarding.usePassword=Wachtwoord gebruiken
recover.onBoarding.intro=Zorg ervoor dat je het volgende controleert:
recover.onBoarding.pleaseConfirm=Alvorens verder te gaan, bevestig dat:
recover.onBoarding.pleaseConfirm=Vooraleer verder te gaan, bevestig dat:
recover.onBoarding.otherwisePleaseConfirm=Anders bevestig dat:
recover.onBoarding.allMissing.intro=Als deze kluis wordt beheerd door Cryptomator Hub, moet de eigenaar van de kluis deze voor je herstellen.
recover.onBoarding.intro.ensure=Alle bestanden zijn volledig gesynchroniseerd.
@@ -675,8 +646,6 @@ decryptNames.filePicker.title=Selecteer versleuteld bestand
decryptNames.filePicker.extensionDescription=Cryptomator versleuteld bestand
decryptNames.copyTable.tooltip=Kopieer tabel
decryptNames.clearTable.tooltip=Wis tabel
decryptNames.column.encrypted=Versleuteld
decryptNames.column.decrypted=Ontcijferd
decryptNames.copyHint=Kopieer cel inhoud met %s
decryptNames.dropZone.message=Sleep bestanden of klik om te selecteren
decryptNames.dropZone.error.vaultInternalFiles=Kluis interne bestanden zonder ontsleutelbare naam geselecteerd
@@ -689,31 +658,23 @@ decryptNames.dropZone.error.generic=Kan bestandsnamen niet decoderen
eventView.title=Activiteiten
eventView.filter.allVaults=Alle
eventView.clearListButton.tooltip=Wis lijst
eventView.filterVaults=Filter op kluis
eventView.cell.actionsButton.tooltip=Acties op Gebeurtenissen
## event list entries
eventView.entry.vaultLocked.description=Ontgrendel "%s" voor details
eventView.entry.conflictResolved.message=Opgelost conflict
eventView.entry.conflictResolved.showDecrypted=Toon gedecodeerd bestand
eventView.entry.conflictResolved.copyDecrypted=Kopieer gedecodeerd pad
eventView.entry.conflict.message=Conflictoplossing is mislukt
eventView.entry.conflict.showDecrypted=Toon gedecodeerd, origineel bestand
eventView.entry.conflict.copyDecrypted=Kopieer gedecodeerd, origineel pad
eventView.entry.conflict.showEncrypted=Conflicterend, versleuteld bestand weergeven
eventView.entry.conflict.copyEncrypted=Conflicterend, versleuteld pad kopiëren
eventView.entry.decryptionFailed.message=Decodering mislukt
eventView.entry.decryptionFailed.showEncrypted=Toon gedecodeerd bestand
eventView.entry.decryptionFailed.copyEncrypted=Kopieer gedecodeerd pad
eventView.entry.brokenDirFile.message=Verbroken directory link
eventView.entry.brokenDirFile.showEncrypted=Toon verbroken gecodeerde link
eventView.entry.brokenDirFile.copyEncrypted=Kopieer pad van verbroken link
eventView.entry.brokenFileNode.message=Kapot bestandssysteemknooppunt
eventView.entry.brokenFileNode.showEncrypted=Toon verbroken gecodeerde link
eventView.entry.brokenFileNode.copyEncrypted=Kopieer pad van verbroken, versleuteld knooppunt
eventView.entry.brokenFileNode.copyDecrypted=Kopieer gedecodeerd pad
eventView.entry.inUse.message=Bestand in gebruik
eventView.entry.inUse.showDecrypted=Toon gedecodeerd bestand
eventView.entry.inUse.showEncrypted=Toon gedecodeerd bestand
eventView.entry.inUse.copyUserAndDevice=Kopieer vergrendeling gebruikersnaam en apparaatnaam
eventView.entry.inUse.ignoreLock=Gebruiksstatus negeren
# Notifications
## FileIsInUse Notification
notification.inUse.message=Bestand is op een ander apparaat in gebruik
notification.inUse.description=Het bestand is geopend door %s op %s. Vraag ze om het bestand te sluiten en laat de synchronisatie eindigen. Je kunt de status negeren om het nu te openen, maar dit kan conflicten veroorzaken of nieuwere wijzigingen overschrijven.
notification.inUse.action=Gebruiksstatus negeren

View File

@@ -14,8 +14,6 @@ generic.button.done=Ferdig
generic.button.next=Neste
generic.button.print=Skriv ut
## Vault state
# Error
# Defaults
@@ -102,7 +100,6 @@ unlock.success.revealBtn=Gjer eininga synleg
### Registration Success
hub.registerSuccess.unlockBtn=Låse opp
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -184,8 +181,7 @@ main.vaultlist.contextMenu.lock=Lås
main.vaultlist.contextMenu.unlock=Lås opp…
main.vaultlist.contextMenu.unlockNow=Lås opp no
main.vaultlist.contextMenu.reveal=Gjer eininga synleg
main.vaultlist.addVaultButton.tooltip=Legg til kvelv
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Takk for at du valde Cryptomator for å verna filene dine. Viss du treng hjelp, sjekk ut guidane våre for å komma i gang:
@@ -312,7 +308,3 @@ quit.lockAndQuitBtn=Lås og avslutt
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -3,8 +3,6 @@
# Generics
## Button
## Vault state
# Error
# Defaults
@@ -38,7 +36,6 @@
### Register Device Legacy
### Registration Success
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -84,7 +81,7 @@
# Main Window
## Vault List
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -151,7 +148,3 @@
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=ਬੰਦ ਕਰੋ
generic.button.copy=ਕਾਪੀ ਕਰੋ
generic.button.copied=ਕਾਪੀ ਕੀਤਾ!
generic.button.done=ਮੁਕੰਮਲ
generic.button.previous=ਪਿਛਲਾ
generic.button.next=ਅੱਗੇ
generic.button.print=ਪਰਿੰਟ ਕਰੋ
generic.button.remove=ਹਟਾਓ
## Vault state
vault.state.error=ਗਲਤੀ
# Error
error.message=ਇੱਕ ਤਰੁੱਟੀ ਆਈ ਹੈ
error.hyperlink.lookup=ਇਹ ਗਲਤੀ ਲੱਭੋ
@@ -94,7 +90,6 @@ addvault.new.readme.accessLocation.3=ਇਸ ਵਾਲੀਅਮ ਵਿੱਚ ਜ
addvault.new.readme.accessLocation.4=ਇਹ ਫਾਇਲ ਕਿਸੇ ਵੀ ਵੇਲੇ ਹਟਾ ਸਕਦੇ ਹੋ।
## Existing
addvaultwizard.existing.title=ਮੌਜੂਦਾ ਵਾਲਟ ਵਿੱਚ ਜੋੜੋ
addvaultwizard.existing.restore=…ਬਹਾਲ ਕਰੋ
addvaultwizard.existing.chooseBtn=…ਚੁਣੋ
addvaultwizard.existing.filePickerTitle=ਵਾਲਟ ਫਾਇਲ ਨੂੰ ਚੁਣੋ
addvaultwizard.existing.filePickerMimeDesc=Cryptomator ਵਾਲਟ
@@ -125,8 +120,6 @@ unlock.savePassword=ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ
unlock.unlockBtn=ਅਣ-ਲਾਕ ਕਰੋ
## Select
unlock.chooseMasterkey.message=ਮਾਸਟਰ-ਕੀ ਫਾਇਲ ਨਹੀਂ ਲੱਭੀ ਹੈ
unlock.chooseMasterkey.description=Cryptomator ਨੂੰ "%s" ਵਾਲਟ ਲਈ ਮਾਸਟਰ-ਕੁੰਜੀ ਫ਼ਾਇਲ ਨਹੀਂ ਲੱਭੀ ਹੈ। ਕੁੰਜੀ ਫ਼ਾਇਲ ਖੁਦ ਚੁਣੋ।
unlock.chooseMasterkey.restoreInstead=ਇਸ ਦੀ ਬਜਾਏ ਮਾਸਟਰ-ਕੁੰਜੀ ਫ਼ਾਇਲ ਬਹਾਲ ਕਰੋ
unlock.chooseMasterkey.filePickerTitle=ਮਾਸਟਰ-ਕੁੰਜੀ ਫਾਇਲ ਚੁਣੋ
unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator ਮਾਸਟਰ-ਕੀ
## Success
@@ -154,7 +147,6 @@ hub.registerSuccess.description=ਤੁਹਾਡੇ ਡਿਵਾਈਸ ਨੂੰ
hub.registerSuccess.unlockBtn=ਅਣ-ਲਾਕ ਕਰੋ
### Registration Failed
hub.registerFailed.message=ਡਿਵਾਈਸ ਰਜਿਸਟਰ ਕਰਨਾ ਅਸਫ਼ਲ ਹੈ
### Archived
### Unauthorized
hub.unauthorized.message=ਪਹੁੰਚ ਤੋਂ ਇਨਾਕਰ
### Requires Account Initialization
@@ -252,7 +244,6 @@ preferences.interface.theme=ਦਿੱਖ ਅਤੇ ਰਵਈਆ
preferences.interface.theme.automatic=ਆਟੋਮੈਟਿਕ
preferences.interface.theme.dark=ਗੂੜ੍ਹਾ
preferences.interface.theme.light=ਹਲਕਾ
preferences.interface.unlockThemes=ਗੂੜ੍ਹਾ ਢੰਗ ਅਣ-ਲਾਕ ਕਰੋ
preferences.interface.language=ਭਾਸ਼ਾ (ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ ਲੋੜ)
preferences.interface.language.auto=ਸਿਸਟਮ ਡਿਫਾਲਟ
preferences.interface.interfaceOrientation=ਇੰਟਰਫੇਸ ਦੀ ਸਥਿਤੀ
@@ -264,7 +255,6 @@ preferences.volume=ਵਰਚੁਅਲ ਡਰਾਇਵ
preferences.volume.type=ਮੂਲ ਵਾਲੀਅਮ ਕਿਸਮ
preferences.volume.type.automatic=ਆਟੋਮੈਟਿਕ
preferences.volume.tcp.port=ਮੂਲ TCP ਪੋਰਟ
preferences.volume.feature.mountToDriveLetter=ਮਾਊਂਟ ਪੁਆਇੰਟ ਲਈ ਡਰਾਇਵ ਅੱਖਰ
preferences.volume.feature.readOnly=ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਮਾਊਂਟ
## Updates
preferences.updates=ਅੱਪਡੇਟ
@@ -277,11 +267,7 @@ preferences.updates.lastUpdateCheck.never=ਕਦੇ ਨਹੀਂ
preferences.updates.lastUpdateCheck.recently=ਸੱਜਰੇ
preferences.updates.lastUpdateCheck.daysAgo=%s ਦਿਨ ਪਹਿਲਾਂ
preferences.updates.lastUpdateCheck.hoursAgo=%s ਘੰਟੇ ਪਹਿਲਾਂ
preferences.updates.prohibitedDueToUnlockedVaults.1=ਕਿਰਪਾ ਕਰਕੇ
preferences.updates.prohibitedDueToUnlockedVaults.2=ਆਪਣੇ ਵਾਲਟਾਂ ਨੂੰ ਲਾਕ ਕਰੋ
preferences.updates.prohibitedDueToUnlockedVaults.3=ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕਰਨ ਲਈ।
preferences.updates.upToDate=Cryptomator ਅੱਪ-ਟੂ-ਡੇਟ ਹੈ।
preferences.updates.visitDownloadPage=ਡਾਊਨਲੋਡ ਸਫ਼ੇ ਨੂੰ ਖੋਲ੍ਹੋ
## Contribution
preferences.contribute=ਸਾਡਾ ਸਮਰਥਨ ਕਰੋ
@@ -289,7 +275,6 @@ preferences.contribute.registeredFor=%s ਲਈ ਰਜਿਸਟਰ ਕੀਤਾ
preferences.contribute.thankYou=Cryptomator ਦੇ ਖੁੱਲ੍ਹੇ ਸਰੋਤ ਵਿਕਾਸ ਨੂੰ ਸਹਿਯੋਗ ਦੇਣ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦ ਹੈ!
preferences.contribute.donate=ਦਾਨ ਕਰੋ
preferences.contribute.sponsor=ਸਪਾਂਸਰ
preferences.contribute.removeCert.tooltip=ਸਰਟੀਫਿਕੇਟ ਨੂੰ ਹਟਾਓ
### Remove License Key Dialog
removeCert.title=ਸਰਟੀਫਿਕੇਟ ਨੂੰ ਹਟਾਓ
@@ -336,7 +321,6 @@ stats.access.total=ਕੁੱਲ ਪਹੁੰਚਾਂ: %d
# Main Window
## Vault List
main.vaultlist=ਵਾਲਟ
main.vaultlist.emptyList.onboardingInstruction=ਵਾਲਟ ਜੋੜਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ
main.vaultlist.contextMenu.remove=ਹਟਾਓ…
main.vaultlist.contextMenu.lock=ਲਾਕ ਕਰੋ
@@ -345,12 +329,7 @@ main.vaultlist.contextMenu.unlockNow=ਹੁਣੇ ਅਣ-ਲਾਕ ਕਰੋ
main.vaultlist.contextMenu.vaultoptions=ਵਾਲਟ ਚੋਣਾਂ ਨੂੰ ਵੇਖਾਓ
main.vaultlist.contextMenu.reveal=ਡਰਾਇਵ ਦਿਖਾਓ
main.vaultlist.contextMenu.share=…ਸਾਂਝਾ ਕਰੋ
main.vaultlist.addVaultBtn.menuItemNew=ਨਵਾਂ ਵਾਲਟ ਬਣਾਓ…
main.vaultlist.addVaultBtn.menuItemExisting=ਮੌਜੂਦਾ ਵਾਲਟ ਨੂੰ ਖੋਲ੍ਹੋ…
main.vaultlist.addVaultBtn.menuItemRecover=ਮੌਜੂਦਾ ਵਾਲਟ ਲਵੋ…
main.vaultlist.addVaultButton.tooltip=ਵਾਲਟ ਜੋੜੋ
main.vaultlist.showPreferencesButton.tooltip=ਪਸੰਦਾਂ ਨੂੰ ਵੇਖੋ
##Notification
##Notificaition
main.notification.updateAvailable=ਅੱਪਡੇਟ ਮੌਜੂਦ ਹੈ।
main.notification.support=Cryptomator ਲਈ ਸਹਿਯੋਗ।
## Vault Detail
@@ -376,23 +355,16 @@ main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=ਵਾਲਟ ਅੰਕੜੇ
main.vaultDetail.locateEncryptedFileBtn=ਇੰਕ੍ਰਿਪਟ ਕੀਤੀ ਫਾਇਲ ਨੂੰ ਲੱਭੋ
main.vaultDetail.encryptedPathsCopied=ਪਾਥ ਨੂੰ ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕੀਤਾ ਗਿਆ ਹੈ!
main.vaultDetail.locateEncrypted.filePickerTitle=ਵਾਲਟ ਵਿੱਚ ਫਾਇਲ ਨੂੰ ਚੁਣੋ
main.vaultDetail.decryptName.buttonLabel=ਫ਼ਾਇਲ ਨਾਂ ਨੂੰ ਡਿਕ੍ਰਿਪਟ ਕਰੋ
main.vaultDetail.decryptName.tooltip=ਫ਼ਾਇਲ ਦੇ ਨਾਂ ਨੂੰ ਡਿਕ੍ਰਿਪਟ ਕਰਨ ਵਾਸਤੇ ਇੰਕ੍ਰਿਪਟ ਕੀਤੇ ਵਾਲਟ ਫ਼ਾਇਲ ਨੂੰ ਚੁਣੋ
### Missing
main.vaultDetail.missing.info=Cryptomator ਇਸ ਮਾਗਰ ਉੱਤੇ ਵਾਲਟ ਨਹੀਂ ਲੱਭਿਆ ਸਕੀ।
main.vaultDetail.missing.recheck=ਮੁੜ-ਜਾਂਚੋ
main.vaultDetail.missing.remove=ਵਾਲਟ ਸੂਚੀ ਤੋਂ ਹਟਾਓ…
main.vaultDetail.missing.changeLocation=ਵਾਲਟ ਟਿਕਾਣੇ ਨੂੰ ਬਦਲੋ…
### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=ਵਾਲਟ ਦੀ ਸੰਰਚਨਾ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।
main.vaultDetail.missingVaultConfig.restore=ਵਾਲਟ ਦੀ ਸੰਰਚਨਾ ਬਹਾਲ ਕਰੋ
### Needs Migration
main.vaultDetail.migrateButton=ਵਾਲਟ ਅੱਪਗਰੇਡ ਕਰੋ
main.vaultDetail.migratePrompt=ਤੁਹਾਡੇ ਵਾਲਟ ਨੂੰ ਵਰਤੇ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਨਵੇਂ ਫਾਰਮੈਟ ਲਈ ਅੱਪਗਰੇਡ ਕਰਨ ਦੀ ਲੋੜ ਹੈ
### Error
main.vaultDetail.error.info=ਡਿਸਕ ਤੋਂ ਵਾਲਟ ਨੂੰ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਸਮੱਸਿਆ ਆਈ ਸੀ।
main.vaultDetail.error.reload=ਮੁੜ-ਲੋਡ ਕਰੋ
main.vaultDetail.error.windowTitle=ਵਾਲਟ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ
@@ -451,7 +423,6 @@ vaultOptions.hub.convertBtn=ਪਾਸਵਰਡ ਅਧਾਰਿਤ ਵਾਲਟ
recoveryKey.display.title=ਰਿਕਵਰੀ ਕੁੰਜੀ ਨੂੰ ਵੇਖਾਓ
recoveryKey.create.message=ਪਾਸਵਰਡ ਚਾਹੀਦਾ ਹੈ
recoveryKey.create.description="%s" ਲਈ ਰਿਕਵਰੀ ਕੁੰਜੀ ਵੇਖਣ ਵਾਸਤੇ ਆਪਣਾ ਪਾਸਵਰਡ ਦਿਓ:
recoveryKey.recover.description=ਵਾਲਟ ਦੀ ਸੰਰਚਨਾ ਨੂੰ ਬਹਾਲ ਕਰਨ ਵਾਸਤੇ "%s" ਲਈ ਪਾਸਵਰਡ ਦਿਓ।
recoveryKey.display.description="%s" ਲਈ ਪਹੁੰਚ ਬਹਾਲ ਕਰਨ ਵਾਸਤੇ ਹੇਠਲੀ ਰਿਕਵਰੀ ਕੁੰਜੀ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ:
recoveryKey.display.StorageHints=ਇਸ ਨੂੰ ਕਿਸੇ ਥਾਂ ਬਹੁਤ ਹੀ ਸੰਭਾਲ ਕੇ ਰੱਖੋ.:\n • ਇਸ ਨੂੰ ਪਾਸਵਰਡ ਮੈਨੇਜਰ ਵਰਤ ਕੇ ਸੰਭਾਲੋ\n • ਇਸ ਨੂੰ USB ਫਲੈਸ਼ ਡਰਾਇਵ ਉੱਤੇ ਸੰਭਾਲੋ\n • ਇਸ ਨੂੰ ਪੇਪਰ ਉੱਤੇ ਛਪ ਲਵੋ
## Reset Password
@@ -464,30 +435,20 @@ recoveryKey.recover.invalidKey=ਇਹ ਜਾਇਜ਼ ਰਿਕਰਵੀ ਕੁੰ
recoveryKey.printout.heading=Cryptomator ਰਿਕਵਰੀ ਕੁੰਜੀ\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=ਰੀਸੈੱਟ ਕਰੋ
recoveryKey.recover.recoverBtn=ਬਹਾਲ ਕਰੋ
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=ਪਾਸਵਰਡ ਨੂੰ ਕਾਮਯਾਬੀ ਨਾਲ ਮੁੜ-ਸੈੱਟ ਕੀਤਾ ਗਿਆ
recoveryKey.recover.resetSuccess.description=ਤੁਸੀਂ ਆਪਣੇ ਵਾਲਟ ਨੂੰ ਨਵੇਂ ਪਾਸਵਰਡ ਨਾਲ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=ਵਾਲਟ ਸੰਰਚਨਾ ਨੂੰ ਬਹਾਲ ਕੀਤਾ ਗਿਆ
recoveryKey.recover.resetMasterkeyFileSuccess.message=ਮਾਸਟਰ-ਕੁੰਜੀ ਫ਼ਾਇਲ ਬਹਾਲ ਕੀਤੀ ਗਈ
recoveryKey.recover.resetMasterkeyFileSuccess.description=ਤੁਸੀਂ ਹੁਣ ਆਪਣੇ ਵਾਲਟ ਨੂੰ ਆਪਣੇ ਪਾਸਵਰਡ ਨਾਲ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ।
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=ਵਾਲਟ ਜੋੜਿਆ
recover.existing.message=ਵਾਲਟ ਨੂੰ ਕਾਮਯਾਬੀ ਨਾਲ ਜੋੜਿਆ ਗਿਆ ਸੀ
recover.existing.description=ਤੁਹਾਡੇ ਵਾਲਟ "%s" ਨੂੰ ਵਾਲਟ ਸੂਚੀ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ ਸੀ। ਕੋਈ ਰਿਕਵਰੀ ਕਾਰਵਾਈ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।
##Vault Already Exists - Dialog
recover.alreadyExists.title=ਵਾਲਟ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ
recover.alreadyExists.message=ਇਸ ਵਾਲਟ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਜੋੜਿਆ ਗਿਆ ਹੈ
##Invalid Selection - Dialog
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Hub ਵਾਲਟ
contactHubVaultOwner.message=ਇਸ ਵਾਲਟ ਨੂੰ Cryptomator Hub ਰਾਹੀਂ ਬਣਾਇਆ ਗਿਆ ਸੀ
##Dialog Title
@@ -567,20 +528,5 @@ shareVault.hub.openHub=Cryptomator Hub ਨੂੰ ਖੋਲ੍ਹੋ
# Event View
eventView.title=ਘਟਨਾਵਾਂ
eventView.filter.allVaults=ਸਭ
eventView.clearListButton.tooltip=ਸੂਚੀ ਨੂੰ ਮਿਟਾਓ
## event list entries
eventView.entry.vaultLocked.description=ਵੇਰਵਿਆਂ ਲਈ "%s" ਨੂੰ ਅਣ-ਲਾਕ ਕਰੋ
eventView.entry.conflictResolved.showDecrypted=ਡਿਕ੍ਰਿਪਟ ਕੀਤੀ ਫ਼ਾਇਲ ਨੂੰ ਵੇਖੋ
eventView.entry.decryptionFailed.message=ਡਿਕ੍ਰਿਪਟ ਕਰਨਾ ਅਸਫ਼ਲ ਹੈ
eventView.entry.decryptionFailed.showEncrypted=ਇੰਕ੍ਰਿਪਟ ਕੀਤੀ ਫ਼ਾਇਲ ਨੂੰ ਵੇਖੋ
eventView.entry.brokenDirFile.message=ਡਾਇਰੈਕਟਰੀ ਲਿੰਕ ਖ਼ਰਾਬ ਹੈ
eventView.entry.brokenDirFile.showEncrypted=ਖ਼ਰਾਬ, ਇੰੰਕ੍ਰਿਪਟ ਕੀਤੇ ਲਿੰਕ ਨੂੰ ਵੇਖਾਓ
eventView.entry.brokenFileNode.copyDecrypted=ਡਿਕ੍ਰਿਪਟ ਕੀਤੇ ਪਾਥ ਨੂੰ ਕਾਪੀ ਕਰੋ
eventView.entry.inUse.showDecrypted=ਡਿਕ੍ਰਿਪਟ ਕੀਤੀ ਫ਼ਾਇਲ ਨੂੰ ਵੇਖੋ
eventView.entry.inUse.showEncrypted=ਇੰਕ੍ਰਿਪਟ ਕੀਤੀ ਫ਼ਾਇਲ ਨੂੰ ਵੇਖੋ
# Notifications
## FileIsInUse Notification

View File

@@ -1,7 +1,7 @@
# Locale Specific CSS files such as CJK, RTL,...
# Generics
generic.action.dismiss=OdrzućOdrzućOdrzuć
generic.action.dismiss=Odrzuć
## Button
generic.button.apply=Zastosuj
generic.button.back=Wstecz
@@ -12,19 +12,10 @@ generic.button.close=Zamknij
generic.button.copy=Skopiuj
generic.button.copied=Skopiowano!
generic.button.done=Gotowe
generic.button.previous=Poprzedni
generic.button.next=Dalej
generic.button.print=Drukuj
generic.button.remove=Usuń
## Vault state
vault.state.locked=Zablokowany
vault.state.unlocked=Odblokowany
vault.state.missing=Brakujący
vault.state.migrationNeeded=Wymagana migracja
vault.state.processing=Przetwarzanie
vault.state.error=Błąd
# Error
error.message=Wystąpił błąd
error.description=Cryptomator nie spodziewał się czegoś takiego. Możesz wyszukać istniejące rozwiązania dla tego błędu. Jeśli nie został on jeszcze zgłoszony, możesz sam to zrobić.
@@ -44,7 +35,7 @@ defaults.vault.vaultName=Sejf
traymenu.showMainWindow=Wyświetl
traymenu.showPreferencesWindow=Ustawienia
traymenu.lockAllVaults=Blokuj wszystko
traymenu.quitApplication=WyjdźWyjdź
traymenu.quitApplication=Wyjdź
traymenu.vault.unlock=Odblokuj
traymenu.vault.lock=Blokuj
traymenu.vault.reveal=Odkryj
@@ -105,7 +96,6 @@ addvault.new.readme.accessLocation.4=Jeśli chcesz możesz spokojnie usunąć te
## Existing
addvaultwizard.existing.title=Dodaj istniejący sejf
addvaultwizard.existing.instruction=Wybierz plik "vault.cryptomator" w istniejącym sejfie. Jeśli istnieje tylko plik "masterkey.cryptomator", wybierz ten plik.
addvaultwizard.existing.restore=Przywróć…
addvaultwizard.existing.chooseBtn=Wybierz…
addvaultwizard.existing.filePickerTitle=Wybierz plik sejfu
addvaultwizard.existing.filePickerMimeDesc=Sejf Cryptomator-a
@@ -137,7 +127,6 @@ unlock.unlockBtn=Odblokuj
## Select
unlock.chooseMasterkey.message=Nie znaleziono pliku klucza głównego
unlock.chooseMasterkey.description=Brak pliku Masterkey dla tego sejfu w oczekiwanej lokalizacji. Proszę wybrać plik klucza ręcznie.
unlock.chooseMasterkey.restoreInstead=Przywróć zamiast tego plik klucza głównego
unlock.chooseMasterkey.filePickerTitle=Wybierz plik Masterkey
unlock.chooseMasterkey.filePickerMimeDesc=Klucz główny Cryptomator-a
## Success
@@ -186,9 +175,6 @@ hub.registerSuccess.legacy.description=Aby dostać się do sejfu, Twoje urządze
hub.registerFailed.message=Rejestracja urządzenia nie powiodła się
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.
### Archived
hub.archived.message=Sejf jest zarchiwizowany
hub.archived.description=Ten sejf został zarchiwizowany i nie jest już dostępny. Skontaktuj się z właścicielem sejfu.
### Unauthorized
hub.unauthorized.message=Brak dostępu
hub.unauthorized.description=Nie masz uprawnień do otwierania tego sejfu. Skontaktuj się z właścicielem sejfu i poproś o dostęp.
@@ -269,8 +255,6 @@ health.check.detail.checkFinishedAndFound=Test zakończony. Proszę sprawdzić w
health.check.detail.checkFailed=Wystąpił błąd, test zakończony.
health.check.detail.checkCancelled=Test został anulowany.
health.check.detail.listFilters.label=Filtruj
health.check.detail.filterSeverity=Filtruj według dotkliwości
health.check.detail.filterFixState=Filtruj według stanu naprawczego
health.check.detail.fixAllSpecificBtn=Napraw wszystkie typy
health.check.exportBtn=Eksportuj raport
## Result view
@@ -343,13 +327,8 @@ preferences.updates.lastUpdateCheck.never=nigdy
preferences.updates.lastUpdateCheck.recently=niedawno
preferences.updates.lastUpdateCheck.daysAgo=%s dni temu
preferences.updates.lastUpdateCheck.hoursAgo=%s godzin temu
preferences.updates.prohibitedDueToUnlockedVaults.1=Proszę
preferences.updates.prohibitedDueToUnlockedVaults.2=zablokuj swoje sejfy
preferences.updates.prohibitedDueToUnlockedVaults.3=aby zainstalować aktualizację.
preferences.updates.checkFailed=Nieudana próba sprawdzenia aktualizacji. Sprawdź połączenie z internetem i spróbuj ponownie.
preferences.updates.updateFailed=Aktualizacja nie powiodła się. Proszę zainstalować aktualizację ręcznie.
preferences.updates.upToDate=Cryptomator jest aktualny.
preferences.updates.visitDownloadPage=Odwiedź stronę pobierania
## Contribution
preferences.contribute=Wesprzyj nas
@@ -360,7 +339,6 @@ preferences.contribute.promptText=Wklej tutaj kod certyfikatu darczyńcy
preferences.contribute.thankYou=Dziękujemy za wsparcie rozwoju Cryptomatora!
preferences.contribute.donate=Wspomóż
preferences.contribute.sponsor=Sponsor
preferences.contribute.removeCert.tooltip=Usuń certyfikat
### Remove License Key Dialog
removeCert.title=Usuń Certyfikat
@@ -370,7 +348,6 @@ removeCert.description=Nie ma to wpływu na podstawowe funkcje Cryptomatora. Dos
## About
preferences.about=O programie
preferences.about.thirdPartyLicenses=Licencje stron trzecich
# Vault Statistics
stats.title=Statystyki dla %s
@@ -409,8 +386,6 @@ stats.access.total=Łączna liczba dostępów: %d
# Main Window
## Vault List
main.vaultlist=Sejfy
main.vaultlist.listEntry=Sejf %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Kliknij tutaj, aby dodać sejf
main.vaultlist.contextMenu.remove=Usuń…
main.vaultlist.contextMenu.lock=Zablokuj
@@ -419,20 +394,13 @@ main.vaultlist.contextMenu.unlockNow=Odblokuj teraz
main.vaultlist.contextMenu.vaultoptions=Pokaż opcje sejfu
main.vaultlist.contextMenu.reveal=Otwórz lokalizację
main.vaultlist.contextMenu.share=Udostępnij…
main.vaultlist.addVaultBtn.menuItemNew=Utwórz nowy sejf… .
main.vaultlist.addVaultBtn.menuItemExisting=Otwórz istniejący sejf…
main.vaultlist.addVaultBtn.menuItemRecover=Odzyskaj istniejący sejf…
main.vaultlist.addVaultButton.tooltip=Dodaj sejf
main.vaultlist.showEventsButton.tooltip=Otwórz widok wydarzeń
main.vaultlist.showPreferencesButton.tooltip=Pokaż preferencje
##Notification
##Notificaition
main.notification.updateAvailable=Dostępna aktualizacja.
main.notification.support=Wspomóż Cryptomatora.
main.notification.closeButton.tooltip=Zamknij pasek informacji
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Dziękujemy za wybranie programu Cryptomator do ochrony plików. Jeśli potrzebujesz pomocy, sprawdź nasze przewodniki:
main.vaultDetail.storageLocation=Lokalizacja przechowywania sejfu
### Locked
main.vaultDetail.lockedStatus=ZABLOKOWANY
main.vaultDetail.unlockBtn=Odblokuj…
@@ -464,8 +432,6 @@ main.vaultDetail.missing.recheck=Ponów próbę
main.vaultDetail.missing.remove=Usuń z listy sejfów…
main.vaultDetail.missing.changeLocation=Zmień lokalizację sejfu…
### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=Brakuje konfiguracji sejfu.
main.vaultDetail.missingVaultConfig.restore=Przywróć konfigurację sejfu
### Needs Migration
main.vaultDetail.migrateButton=Aktualizuj sejf
main.vaultDetail.migratePrompt=Twój sejf musi zostać zaktualizowany do nowego formatu, zanim będziesz mógł go używać
@@ -490,7 +456,6 @@ vaultOptions.general=Ogólne
vaultOptions.general.vaultName=Nazwa sejfu
vaultOptions.general.autoLock.lockAfterTimePart1=Zablokuj w stanie bezczynności po
vaultOptions.general.autoLock.lockAfterTimePart2=minut
vaultOptions.general.autoLock.accessibleText=Limit czasu blokady w minutach
vaultOptions.general.unlockAfterStartup=Odblokuj sejf podczas uruchamiania programu Cryptomator
vaultOptions.general.actionAfterUnlock=Po udanym odblokowaniu
vaultOptions.general.actionAfterUnlock.ignore=Nic nie rób
@@ -521,7 +486,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Zapomnij zapamiętane hasło
vaultOptions.masterkey.recoveryKeyExplanation=Klucz odzyskiwania jest twoim jedynym sposobem przywrócenia dostępu do sejfu w przypadku utraty hasła.
vaultOptions.masterkey.showRecoveryKeyBtn=Wyświetl klucz odzyskiwania
vaultOptions.masterkey.recoverPasswordBtn=Resetuj hasło
vaultOptions.masterkey.missingMasterkeyFile=Te opcje są dostępne tylko wtedy, gdy plik klucza głównego jest obecny w katalogu sejfu.
## Hub
vaultOptions.hub=Odzyskanie
vaultOptions.hub.convertInfo=Możesz użyć klucza odzyskiwania, aby przekonwertować ten Hub do sejfu opartego na hasłach w nagłych przypadkach.
@@ -532,7 +496,6 @@ vaultOptions.hub.convertBtn=Konwertuj na sejf oparty na hasłach
recoveryKey.display.title=Wyświetl kod odzyskiwania
recoveryKey.create.message=Hasło jest wymagane
recoveryKey.create.description=Wprowadź hasło, aby pokazać klucz odzyskiwania dla "%s":
recoveryKey.recover.description=Wprowadź hasło dla "%s", aby odzyskać konfigurację sejfu.
recoveryKey.display.description=Poniższy klucz odzyskiwania służy do przywrócenia dostępu do "%s":
recoveryKey.display.StorageHints=Trzymaj go w bezpiecznym miejscu, np.\n • Przechowuj go za pomocą menedżera haseł\n • Zapisz go na przenośnej pamięci USB\n • Wydrukuj na papierze
## Reset Password
@@ -545,59 +508,29 @@ recoveryKey.recover.invalidKey=Ten klucz jest nieprawidłowy
recoveryKey.printout.heading=Cryptomator - Klucz odzyskiwania\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=Resetuj
recoveryKey.recover.recoverBtn=Odzyskaj
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=Hasło zostało zresetowane
recoveryKey.recover.resetSuccess.description=Możesz odblokować sejf przy użyciu nowego hasła.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Konfiguracja sejfu odzyskana
recoveryKey.recover.resetMasterkeyFileSuccess.message=Plik klucza głównego odzyskany
recoveryKey.recover.resetMasterkeyFileSuccess.description=Możesz teraz odblokować swój sejf hasłem.
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=Sejf dodany
recover.existing.message=Sejf został dodany pomyślnie
recover.existing.description=Twój sejf "%s" został dodany do listy sejfów. Proces odzyskiwania nie był konieczny.
##Vault Already Exists - Dialog
recover.alreadyExists.title=Sejf już istnieje
recover.alreadyExists.message=Ten sejf został już dodany
recover.alreadyExists.description=Twój sejf "%s" jest już obecny na Twojej liście sejfów i dlatego nie został dodany ponownie.
##Invalid Selection - Dialog
recover.invalidSelection.title=Nieprawidłowy wybór
recover.invalidSelection.message=Twój wybór nie jest sejfem
recover.invalidSelection.description=Wybrany folder musi być prawidłowym sejfem Cryptomatora.
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Hub sejfów
contactHubVaultOwner.message=Ten sejf został utworzony z Cryptomator Hub
contactHubVaultOwner.description=Aby przywrócić brakujący plik, skontaktuj się z właścicielem sejfu. Mogą pobrać szablon sejfu z Cryptomator Hub.
##Dialog Title
recover.recoverVaultConfig.title=Odzyskaj konfigurację sejfu
recover.recoverMasterkey.title=Odzyskaj klucz główny
## OnBoarding
recover.onBoarding.chooseMethod=Wybierz metodę odzyskiwania:
recover.onBoarding.useRecoveryKey=Użyj klucza odzyskiwania
recover.onBoarding.usePassword=Użyj hasła
recover.onBoarding.intro=Należy sprawdzić, czy:
recover.onBoarding.pleaseConfirm=Przed rozpoczęciem postępowania proszę potwierdzić, że:
recover.onBoarding.otherwisePleaseConfirm=W przeciwnym razie proszę potwierdzić, że:
recover.onBoarding.allMissing.intro=Jeśli ten sejf jest zarządzany przez Cryptomator Hub, właściciel sejfu musi go przywrócić.
recover.onBoarding.intro.ensure=Wszystkie pliki są w pełni zsynchronizowane.
recover.onBoarding.affirmation=Przeczytałem i zrozumiałem te wymogi
###Vault Config Missing
recover.onBoarding.intro.recoveryKey=Masz klucz odzyskiwania i wiesz, czy używano ustawień ekspertów.
recover.onBoarding.intro.password=Masz hasło sejfu i wiesz, czy używano ustawień ekspertów.
###Masterkey Missing
recover.onBoarding.intro.masterkey.recoveryKey=Masz klucz odzyskiwania sejfu.
## Expert Settings
recover.expertSettings.shorteningThreshold.title=Ta wartość musi być zgodna z wartością użytą przed odzyskiwaniem aby zapewnić kompatybilność z poprzednio zaszyfrowanymi danymi.
# Convert Vault
convertVault.title=Konwertuj sejf
@@ -675,8 +608,6 @@ decryptNames.filePicker.title=Wybierz zaszyfrowany plik
decryptNames.filePicker.extensionDescription=Zaszyfrowany plik Cryptomator
decryptNames.copyTable.tooltip=Kopiuj tabelę
decryptNames.clearTable.tooltip=Wyczyść tabelę
decryptNames.column.encrypted=Zaszyfrowane
decryptNames.column.decrypted=Odszyfrowane
decryptNames.copyHint=Kopiuj zawartość komórki z %s
decryptNames.dropZone.message=Upuść pliki lub kliknij, aby wybrać
decryptNames.dropZone.error.vaultInternalFiles=Wybrano wewnętrzne pliki sejfu z nazwami niemożliwymi do odszyfrowania
@@ -689,26 +620,23 @@ decryptNames.dropZone.error.generic=Nie udało się odszyfrować nazw plików
eventView.title=Zdarzenia
eventView.filter.allVaults=Wszystkie
eventView.clearListButton.tooltip=Wyczyść listę
eventView.filterVaults=Filtruj według sejfu
eventView.cell.actionsButton.tooltip=Akcje zdarzeń
## event list entries
eventView.entry.vaultLocked.description=Odblokuj "%s" po szczegóły
eventView.entry.conflictResolved.message=Konflikt rozwiązany
eventView.entry.conflictResolved.showDecrypted=Pokaż odszyfrowany plik
eventView.entry.conflictResolved.copyDecrypted=Kopiuj odszyfrowaną ścieżkę
eventView.entry.conflict.message=Rozwiązywanie konfliktu nie powiodło się
eventView.entry.conflict.showDecrypted=Pokaż odszyfrowany, oryginalny plik
eventView.entry.conflict.copyDecrypted=Kopiuj odszyfrowaną, oryginalną ścieżkę
eventView.entry.conflict.showEncrypted=Pokaż sprzeczny, zaszyfrowany plik
eventView.entry.conflict.copyEncrypted=Kopiuj sprzeczną, zaszyfrowaną ścieżkę
eventView.entry.decryptionFailed.message=Odszyfrowywanie nie powiodło się
eventView.entry.decryptionFailed.showEncrypted=Pokaż zaszyfrowany plik
eventView.entry.decryptionFailed.copyEncrypted=Kopiuj zaszyfrowaną ścieżkę
eventView.entry.brokenDirFile.message=Uszkodzony link do katalogu
eventView.entry.brokenDirFile.showEncrypted=Pokaż uszkodzony, zaszyfrowany link
eventView.entry.brokenDirFile.copyEncrypted=Kopiuj ścieżkę uszkodzonego linku
eventView.entry.brokenFileNode.message=Uszkodzony węzeł systemu plików
eventView.entry.brokenFileNode.showEncrypted=Pokaż uszkodzony, zaszyfrowany węzeł
eventView.entry.brokenFileNode.copyEncrypted=Kopiuj ścieżkę uszkodzonego, zaszyfrowanego węzła
eventView.entry.brokenFileNode.copyDecrypted=Kopiuj odszyfrowaną ścieżkę
eventView.entry.inUse.showDecrypted=Pokaż odszyfrowany plik
eventView.entry.inUse.showEncrypted=Pokaż zaszyfrowany plik
eventView.entry.inUse.copyUserAndDevice=Kopiowanie blokady użytkownika i nazwy urządzenia
# Notifications
## FileIsInUse Notification

View File

@@ -12,19 +12,10 @@ generic.button.close=Fechar
generic.button.copy=Copiar
generic.button.copied=Copiado!
generic.button.done=Ok
generic.button.previous=Voltar
generic.button.next=Seguinte
generic.button.print=Imprimir
generic.button.remove=Remover
## Vault state
vault.state.locked=Bloqueado
vault.state.unlocked=Desbloqueado
vault.state.missing=Em falta
vault.state.migrationNeeded=Migração necessária
vault.state.processing=A processar…
vault.state.error=Erro
# Error
error.message=Erro %s
error.description=Opa! Cryptomator não esperava que isto acontecesse. Pode procurar as soluções existentes para este erro. Ou se ainda não tiver sido relatado, sinta-se à vontade para o fazer.
@@ -186,9 +177,6 @@ hub.registerSuccess.legacy.description=Para aceder ao cofre, o seu dispositivo p
hub.registerFailed.message=Registo do dispositivo falhou
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.
### Archived
hub.archived.message=O cofre está arquivado
hub.archived.description=Este cofre foi arquivado e não está mais acessível. Por favor, contate o proprietário do cofre.
### Unauthorized
hub.unauthorized.message=Acesso negado
hub.unauthorized.description=Não está autorizado a abrir este cofre. Contacte o proprietário do cofre para solicitar o acesso.
@@ -269,8 +257,6 @@ health.check.detail.checkFinishedAndFound=A verificação concluiu. Por favor, r
health.check.detail.checkFailed=A verificação foi encerrada devido a um erro.
health.check.detail.checkCancelled=A verificação foi cancelada.
health.check.detail.listFilters.label=Filtro
health.check.detail.filterSeverity=Filtrar por relevância
health.check.detail.filterFixState=Filtrar por estado da solução
health.check.detail.fixAllSpecificBtn=Corrigir todos do tipo
health.check.exportBtn=Exportar relatórios
## Result view
@@ -343,13 +329,8 @@ 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.prohibitedDueToUnlockedVaults.1=Por favor
preferences.updates.prohibitedDueToUnlockedVaults.2=tranque os seus cofres
preferences.updates.prohibitedDueToUnlockedVaults.3=para instalar a atualização.
preferences.updates.checkFailed=A procura de actualizações falhou. Verifique a sua ligação à Internet ou tente novamente mais tarde.
preferences.updates.updateFailed=A atualização falhou. Por favor instale a atualização manualmente.
preferences.updates.upToDate=Cryptomator está atualizado.
preferences.updates.visitDownloadPage=Visite a página de downloads
## Contribution
preferences.contribute=Apoie-nos
@@ -360,7 +341,6 @@ preferences.contribute.promptText=Insira o código do certificado de apoiador aq
preferences.contribute.thankYou=Obrigado por apoiar o desenvolvimento open-source (código aberto) do Cryptomator!
preferences.contribute.donate=Doação
preferences.contribute.sponsor=Patrocinador
preferences.contribute.removeCert.tooltip=Remover certificados
### Remove License Key Dialog
removeCert.title=Remover certificado
@@ -370,7 +350,6 @@ removeCert.description=As principais caraterísticas do Cryptomator não são af
## About
preferences.about=Sobre
preferences.about.thirdPartyLicenses=Licenças de terceiros
# Vault Statistics
stats.title=Estatísticas de %s
@@ -409,8 +388,6 @@ stats.access.total=Total de acessos: %d
# Main Window
## Vault List
main.vaultlist=Cofres
main.vaultlist.listEntry=Cofre %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Clique aqui para adicionar um cofre
main.vaultlist.contextMenu.remove=Remover…
main.vaultlist.contextMenu.lock=Bloquear
@@ -422,17 +399,13 @@ main.vaultlist.contextMenu.share=Partilhar…
main.vaultlist.addVaultBtn.menuItemNew=Criar novo cofre…
main.vaultlist.addVaultBtn.menuItemExisting=Abrir cofre existente…
main.vaultlist.addVaultBtn.menuItemRecover=Recuperar cofre existente…
main.vaultlist.addVaultButton.tooltip=Adicionar Cofre
main.vaultlist.showEventsButton.tooltip=Abrir visualização do Evento
main.vaultlist.showPreferencesButton.tooltip=Mostrar Preferências
##Notification
main.vaultlist.showEventsButton.tooltip=Abrir visualização do evento
##Notificaition
main.notification.updateAvailable=A atualização está disponível.
main.notification.support=Apoie o Cryptomator.
main.notification.closeButton.tooltip=Fechar barra de informação
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Obrigado por escolher Cryptomator para proteger os seus ficheiros. Se precisar de alguma ajuda, veja os nossos guias introdutórios:
main.vaultDetail.storageLocation=Local de armazenamento do cofre
### Locked
main.vaultDetail.lockedStatus=BLOQUEADO
main.vaultDetail.unlockBtn=Desbloquear…
@@ -490,7 +463,6 @@ vaultOptions.general=Geral
vaultOptions.general.vaultName=Nome do Cofre
vaultOptions.general.autoLock.lockAfterTimePart1=Bloquear quando inativo por
vaultOptions.general.autoLock.lockAfterTimePart2=minutos
vaultOptions.general.autoLock.accessibleText=Bloquear tempo limite em minutos
vaultOptions.general.unlockAfterStartup=Desbloquear o cofre ao iniciar o Cryptomator
vaultOptions.general.actionAfterUnlock=Após desbloquear com sucesso
vaultOptions.general.actionAfterUnlock.ignore=Não fazer nada
@@ -521,7 +493,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Esqueça a senha salva
vaultOptions.masterkey.recoveryKeyExplanation=Uma chave de recuperação é a única forma de restaurar o acesso a um cofre se perder a senha.
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir Chave de Recuperação
vaultOptions.masterkey.recoverPasswordBtn=Redefinir palavra-passe
vaultOptions.masterkey.missingMasterkeyFile=Estas opções só estão disponíveis se o ficheiro da chave mestra estiver presente no diretório do cofre.
## Hub
vaultOptions.hub=Recuperação
vaultOptions.hub.convertInfo=Pode usar a chave de recuperação para converter este cofre central num cofre baseado em palavras-passe, numa emergência.
@@ -550,8 +521,6 @@ recoveryKey.recover.recoverBtn=Recuperar
recoveryKey.recover.resetSuccess.message=Palavra-passe redefinida com sucesso
recoveryKey.recover.resetSuccess.description=Você pode desbloquear o seu cofre com a nova senha.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Configuração do cofre recuperada
recoveryKey.recover.resetMasterkeyFileSuccess.message=Ficheiro da chave mestra recuperado
recoveryKey.recover.resetMasterkeyFileSuccess.description=Agora pode desbloquear o seu cofre com a sua palavra-passe.
# Recover Vault Config File and/or Masterkey
@@ -675,8 +644,6 @@ decryptNames.filePicker.title=Selecione o ficheiro encriptado
decryptNames.filePicker.extensionDescription=Ficheiro encriptado pelo Criptomator
decryptNames.copyTable.tooltip=Copiar a tabela
decryptNames.clearTable.tooltip=Limpar a tabela
decryptNames.column.encrypted=Encriptado
decryptNames.column.decrypted=Desencriptado
decryptNames.copyHint=Copiar o conteúdo da célula com %s
decryptNames.dropZone.message=Largue os ficheiros ou clique para selecionar
decryptNames.dropZone.error.vaultInternalFiles=Ficheiros internos do coftre sem nome desencriptável selecionado
@@ -689,31 +656,23 @@ decryptNames.dropZone.error.generic=Falha ao desencriptar os nomes dos ficheiros
eventView.title=Eventos
eventView.filter.allVaults=Todos
eventView.clearListButton.tooltip=Limpar lista
eventView.filterVaults=Filtrar por cofre
eventView.cell.actionsButton.tooltip=Ações dos eventos
## event list entries
eventView.entry.vaultLocked.description=Desbloquear "%s" para detalhes
eventView.entry.conflictResolved.message=Conflito resolvido
eventView.entry.conflictResolved.showDecrypted=Mostrar o ficheiro desencriptado
eventView.entry.conflictResolved.copyDecrypted=Copiar o caminho desencriptado
eventView.entry.conflict.message=A resolução do conflito falhou
eventView.entry.conflict.showDecrypted=Mostrar o ficheiro original desencriptado
eventView.entry.conflict.copyDecrypted=Copie o caminho original desencriptado
eventView.entry.conflict.showEncrypted=Mostrar o ficheiro encriptado em conflito
eventView.entry.conflict.copyEncrypted=Copiar o caminho encriptado em conflito
eventView.entry.decryptionFailed.message=A desencriptação falhou
eventView.entry.decryptionFailed.showEncrypted=Mostrar ficheiro encriptado
eventView.entry.decryptionFailed.copyEncrypted=Copiar o caminho encriptado
eventView.entry.brokenDirFile.message=Link de diretório quebrado
eventView.entry.brokenDirFile.showEncrypted=Mostrar o link quebrado e encriptado
eventView.entry.brokenDirFile.copyEncrypted=Copiar caminho do link quebrado
eventView.entry.brokenFileNode.message=Nó do sistema de ficheiros avariado
eventView.entry.brokenFileNode.showEncrypted=Mostrar nó encriptado e danificado
eventView.entry.brokenFileNode.copyEncrypted=Copiar o caminho do nó encriptado e danificado
eventView.entry.brokenFileNode.copyDecrypted=Copiar o caminho desencriptado
eventView.entry.inUse.message=Ficheiro em utilização
eventView.entry.inUse.showDecrypted=Mostrar o ficheiro desencriptado
eventView.entry.inUse.showEncrypted=Mostrar ficheiro encriptado
eventView.entry.inUse.copyUserAndDevice=Copiar nome do utilizador e dispositivo bloqueado
eventView.entry.inUse.ignoreLock=Ignorar estado de utilização
# Notifications
## FileIsInUse Notification
notification.inUse.message=O ficheiro está em utilização noutro dispositivo
notification.inUse.description=O ficheiro está aberto por %s em %s. Peça-lhes que fechem o ficheiro e deixem a sincronização terminar. Pode ignorar o estado para o abrir agora, mas isso pode causar conflitos ou sobrescrever alterações mais recentes.
notification.inUse.action=Ignorar estado de utilização

View File

@@ -12,287 +12,271 @@ generic.button.close=Fechar
generic.button.copy=Copiar
generic.button.copied=Copiado!
generic.button.done=Concluído
generic.button.previous=Anterior
generic.button.next=Próximo
generic.button.print=Imprimir
generic.button.remove=Remover
## Vault state
vault.state.locked=Bloqueado
vault.state.unlocked=Desbloqueado
vault.state.missing=Faltando
vault.state.migrationNeeded=Requer migração
vault.state.processing=Processando
vault.state.error=Erro
# Error
error.message=Ocorreu um erro
error.description=O Cryptomator não esperava que isso acontecesse. Você pode buscar soluções existentes para esse erro. Se ainda não o relatou, sinta-se à vontade para fazê-lo.
error.hyperlink.lookup=Buscar este erro
error.hyperlink.report=Relatar este erro
error.message=Erro %s
error.description=O Cryptomator não esperava que isso acontecesse. Você pode procurar soluções existentes para este erro. Ou, se ainda não foi relatado, sinta-se à vontade para fazê-lo.
error.hyperlink.lookup=Procure este erro
error.hyperlink.report=Reportar este erro
error.technicalDetails=Detalhes:
error.existingSolutionDescription=O Cryptomator não esperava que isso acontecesse. Encontramos uma solução existente para esse erro. Acesse o link a seguir.
error.hyperlink.solution=Busque a solução
error.lookupPermissionMessage=O Cryptomator pode buscar uma solução para esse problema on-line. Isso enviará uma solicitação para nosso banco de dados de problemas a partir do seu endereço IP.
error.existingSolutionDescription=O Cryptomator encontrou um erro inesperado, mas há uma solução pré-existente disponível no seguinte link.
error.hyperlink.solution=Procure a solução
error.lookupPermissionMessage=O Cryptomator pode procurar uma solução para este problema online. Isso enviará uma solicitação para nosso banco de dados de problemas a partir do seu endereço IP.
error.dismiss=Ignorar
error.lookUpSolution=Buscar solução
error.lookUpSolution=Procurar solução
# Defaults
defaults.vault.vaultName=Cofre
# Tray Menu
traymenu.showMainWindow=Mostrar
traymenu.showMainWindow=Exibir
traymenu.showPreferencesWindow=Preferências
traymenu.lockAllVaults=Bloquear todos
traymenu.quitApplication=Sair
traymenu.vault.unlock=Desbloquear
traymenu.vault.lock=Bloquear
traymenu.vault.reveal=Revelar
traymenu.vault.reveal=Exibir
# Add Vault Wizard
addvaultwizard.title=Adicionar cofre
addvaultwizard.title=Adicionar Cofre
## New
addvaultwizard.new.title=Adicionar novo cofre
addvaultwizard.new.title=Adicionar Novo Cofre
### Name
addvaultwizard.new.nameInstruction=Escolha um nome para o cofre
addvaultwizard.new.namePrompt=Nome do cofre
addvaultwizard.new.namePrompt=Nome do Cofre
### Location
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.locationPrompt=
addvaultwizard.new.directoryPickerLabel=Local personalizado
addvaultwizard.new.directoryPickerLabel=Local Personalizado
addvaultwizard.new.directoryPickerButton=Escolher…
addvaultwizard.new.directoryPickerTitle=Selecionar diretório
addvaultwizard.new.directoryPickerTitle=Selecionar Diretório
addvaultwizard.new.fileAlreadyExists=Já existe um arquivo ou diretório com esse nome
addvaultwizard.new.locationDoesNotExist=Um diretório no caminho especificado não existe ou não pode ser acessado
addvaultwizard.new.locationIsNotWritable=Nenhum acesso de gravação no caminho especificado
addvaultwizard.new.locationIsNotWritable=Sem acesso de gravação no caminho especificado
addvaultwizard.new.locationIsOk=Local adequado para o seu cofre
addvaultwizard.new.invalidName=Nome do cofre inválido
addvaultwizard.new.validName=Nome do cofre válido
addvaultwizard.new.validCharacters.message=O nome do cofre pode conter os seguintes caracteres:
addvaultwizard.new.validCharacters.chars=Caracteres de palavra (ex.: a, ж ou 수)
addvaultwizard.new.validCharacters.chars=Caracteres de palavra (por exemplo, a, ж or 수)
addvaultwizard.new.validCharacters.numbers=Números
addvaultwizard.new.validCharacters.dashes=Hífen (%s) ou sublinhado (%s)
### Expert Settings
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=Ativar configurações avançadas
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Digite um valor entre 36 e 220 (padrão: 220)
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Digite um valor entre 36 e 220 (padrão 220)
addvaultwizard.new.expertSettings.shorteningThreshold.tooltip=Abra a documentação para saber mais.
addvaultwizard.new.expertSettings.shorteningThreshold.title=Comprimento máximo dos nomes de arquivos criptografados
addvaultwizard.new.expertSettings.shorteningThreshold.valid=Válido
### Password
addvaultwizard.new.createVaultBtn=Criar cofre
addvaultwizard.new.generateRecoveryKeyChoice=Você será incapaz de acessar os seus dados sem a sua senha. Deseja uma chave de recuperação para caso perca a sua senha?
addvaultwizard.new.generateRecoveryKeyChoice.yes=Sim, por favor. Melhor prevenir do que remediar
addvaultwizard.new.generateRecoveryKeyChoice.no=Não, obrigado. Eu não perderei minha senha
addvaultwizard.new.createVaultBtn=Criar Cofre
addvaultwizard.new.generateRecoveryKeyChoice=Você não será capaz de acessar seus dados sem sua senha. Você quer uma chave de recuperação para o caso de perder sua senha?
addvaultwizard.new.generateRecoveryKeyChoice.yes=Sim, por favor, melhor prevenir do que remediar
addvaultwizard.new.generateRecoveryKeyChoice.no=Não, obrigado, eu não vou perder minha senha
### Information
addvault.new.readme.storageLocation.fileName=IMPORTANTE.rtf
addvault.new.readme.storageLocation.1=⚠ ARQUIVOS DO COFRE ⚠
addvault.new.readme.storageLocation.2=Este é o local de armazenamento do seu cofre.
addvault.new.readme.storageLocation.3=NÃO DEVE
addvault.new.readme.storageLocation.4=• alterar quaisquer arquivos deste diretório; ou
addvault.new.readme.storageLocation.5=• colar quaisquer arquivos para encriptar neste diretório.
addvault.new.readme.storageLocation.3=NÃO
addvault.new.readme.storageLocation.4=• altere quaisquer arquivos deste diretório ou
addvault.new.readme.storageLocation.5=• cole quaisquer arquivos para encriptar neste diretório.
addvault.new.readme.storageLocation.6=Se você deseja encriptar arquivos e visualizar o conteúdo do cofre, faça o seguinte:
addvault.new.readme.storageLocation.7=1. Adicione este cofre ao Cryptomator;
addvault.new.readme.storageLocation.8=2. Desbloqueie o cofre no Cryptomator;
addvault.new.readme.storageLocation.7=1. Adicione este cofre ao Cryptomator.
addvault.new.readme.storageLocation.8=2. Desbloqueie o cofre no Cryptomator.
addvault.new.readme.storageLocation.9=3. Abra o local de acesso clicando no botão "Revelar".
addvault.new.readme.storageLocation.10=Se precisar de ajuda, visite a documentação: %s
addvault.new.readme.accessLocation.fileName=BEM-VINDO(A).rtf
addvault.new.readme.accessLocation.fileName=BEM-VINDO.rtf
addvault.new.readme.accessLocation.1=🔐️ VOLUME ENCRIPTADO 🔐️
addvault.new.readme.accessLocation.2=Este é o local de acesso ao seu cofre.
addvault.new.readme.accessLocation.3=Qualquer arquivo adicionado a este volume será criptografado pelo Cryptomator. Você pode trabalhar nele como em qualquer outro disco ou pasta. Esta é apenas uma visualização descriptografada do conteúdo, seus arquivos permanecem criptografados no seu disco rígido o tempo todo.
addvault.new.readme.accessLocation.3=Todos os arquivos adicionados a este volume serão criptografados de forma transparente pelo Cryptomator. Você pode trabalhar nele como se fosse qualquer unidade/pasta. Esta é apenas uma visão não criptografada do seu conteúdo, mas seus arquivos permanecem criptografados na sua unidade o tempo todo.
addvault.new.readme.accessLocation.4=Fique à vontade para apagar este arquivo.
## Existing
addvaultwizard.existing.title=Adicionar cofre existente
addvaultwizard.existing.instruction=Escolha o arquivo "vault.cryptomator" do seu cofre existente. Caso exista apenas um arquivo chamado "masterkey.cryptomator", selecione outro.
addvaultwizard.existing.restore=Restaurar…
addvaultwizard.existing.chooseBtn=Escolher…
addvaultwizard.existing.filePickerTitle=Selecionar arquivo do cofre
addvaultwizard.existing.title=Adicionar Cofre Existente
addvaultwizard.existing.instruction=Escolha o arquivo "vault.cryptomator" do seu cofre existente. Se existir apenas um arquivo chamado "masterkey.cryptomator", selecione outro.
addvaultwizard.existing.chooseBtn=Selecionar…
addvaultwizard.existing.filePickerTitle=Selecionar arquivo do Cofre
addvaultwizard.existing.filePickerMimeDesc=Cofre Cryptomator
## Success
addvaultwizard.success.nextStepsInstructions=Cofre "%s" adicionado.\nVocê precisa desbloqueá-lo para acessar ou adicionar conteúdo. O desbloqueio dele pode ser feito a qualquer momento.
addvaultwizard.success.unlockNow=Desbloquear agora
addvaultwizard.success.nextStepsInstructions=Cofre "%s" adicionado.\nVocê precisa desbloquear este cofre para acessar ou adicionar conteúdo. Você também pode desbloqueá-lo a qualquer momento.
addvaultwizard.success.unlockNow=Desbloquear Agora
# Remove Vault
removeVault.title=Remover o cofre "%s"
removeVault.message=Remover o cofre?
removeVault.description=Isto só fará com que o Cryptomator esqueça este cofre. Você pode adicioná-lo novamente. Nenhum arquivo criptografado será apagado do seu disco rígido.
removeVault.description=Isso só fará com que o Cryptomator esqueça esse cofre. Você pode adicioná-lo novamente. Nenhum arquivo criptografado será excluído do seu disco rígido.
# Change Password
changepassword.title=Alterar senha
changepassword.enterOldPassword=Digite a senha atual para o cofre "%s"
changepassword.finalConfirmation=Estou ciente que não conseguirei acessar os meus dados caso esqueça a minha senha
changepassword.title=Alterar Senha
changepassword.enterOldPassword=Digite a senha atual para "%s"
changepassword.finalConfirmation=Eu entendo que não poderei acessar os meus dados caso esqueça a minha senha
# Forget Password
forgetPassword.title=Esqueci a senha
forgetPassword.title=Esquecer Senha
forgetPassword.message=Esqueceu sua senha?
forgetPassword.description=Isto apagará a senha salva deste cofre do chaveiro do seu sistema.
forgetPassword.confirmBtn=Esqueci a senha
forgetPassword.description=Isso excluirá a senha que você salvou deste cofre, do chaveiro de senhas do sistema.
forgetPassword.confirmBtn=Esquecer Senha
# Unlock
unlock.title=Desbloquear "%s"
unlock.passwordPrompt=Digite a senha para "%s":
unlock.savePassword=Lembrar senha
unlock.savePassword=Lembrar Senha
unlock.unlockBtn=Desbloquear
## Select
unlock.chooseMasterkey.message=O arquivo Masterkey foi não encontrado
unlock.chooseMasterkey.description=Não foi possível encontrar o arquivo masterkey para o cofre "%s". Selecione manualmente o arquivo contendo a chave.
unlock.chooseMasterkey.restoreInstead=Em vez disso, restaure o arquivo masterkey
unlock.chooseMasterkey.filePickerTitle=Selecione o arquivo Masterkey
unlock.chooseMasterkey.filePickerMimeDesc=Masterkey do Cryptomator
unlock.chooseMasterkey.message=Arquivo "masterkey" não encontrado
unlock.chooseMasterkey.description=Não encontrei o arquivo "masterkey" para o cofre "%s". Por favor selecione manualmente o arquivo contendo a chave.
unlock.chooseMasterkey.filePickerTitle=Selecionar arquivo "masterkey"
unlock.chooseMasterkey.filePickerMimeDesc=Chave mestra do Cryptomator
## Success
unlock.success.message=Desbloqueado com sucesso
unlock.success.description=O conteúdo no cofre "%s" agora está acessível no seu ponto de montagem.
unlock.success.rememberChoice=Lembrar opção escolhida. Não perguntar novamente
unlock.success.revealBtn=Revelar volume
unlock.success.description="%s" desbloqueado com êxito! Seu cofre agora está acessível na unidade virtual.
unlock.success.rememberChoice=Lembrar opção escolhida, não mostrar isto novamente
unlock.success.revealBtn=Revelar Volume
## Failure
unlock.error.customPath.message=Não foi possível iniciar o cofre no caminho personalizado
unlock.error.customPath.description.notSupported=Se você deseja continuar usando o caminho personalizado, acesse as preferências e selecione um tipo de volume que seja compatível. Caso contrário, vá para as opções do cofre e escolha um ponto de montagem suportado.
unlock.error.customPath.description.notExists=O caminho de montagem personalizado não existe. Crie o caminho em seu sistema de arquivos local ou o altere nas opções do cofre.
unlock.error.customPath.description.inUse=A letra de unidade ou o caminho de montagem "%s" já está em uso.
unlock.error.customPath.description.hideawayNotDir=Não foi possível remover o arquivo oculto e temporário "%3$s". Verifique-o e depois apague ele manualmente.
unlock.error.customPath.description.couldNotBeCleaned=Não foi possível montar seu cofre no caminho "%s". Tente novamente ou escolha um caminho diferente.
unlock.error.customPath.description.notEmptyDir=O caminho de montagem personalizado escolhido "%s" não é uma pasta vazia. Escolha uma pasta vazia e tente novamente.
unlock.error.customPath.description.notSupported=Se você deseja continuar usando o caminho personalizado, por favor vá para as preferências e selecione um tipo de volume que o suporte. Caso contrário, vá para as opções de cofre e escolha um ponto de montagem suportado.
unlock.error.customPath.description.notExists=O caminho de montagem personalizado não existe. Crie o caminho em seu sistema de arquivos local, ou o altere nas opções de cofre.
unlock.error.customPath.description.inUse=A letra da unidade ou o caminho de montagem "%s" já está em uso.
unlock.error.customPath.description.hideawayNotDir=O arquivo oculto e temporário "%3$s" usado para desbloquear não pôde ser removido. Exclua-o manualmente.
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.generic=Você selecionou um caminho de montagem personalizado para este cofre, mas falhou com a mensagem: %2$s
unlock.error.restartRequired.message=Não foi possível desbloquear o cofre
unlock.error.restartRequired.description=Altere o tipo de volume nas opções do cofre ou reinicie o Cryptomator.
unlock.error.title=Falha ao desbloquear "%s"
unlock.error.title=Desbloqueio "%s" falhou
## Hub
hub.noKeychain.message=Não foi possível acessar a chave do dispositivo
hub.noKeychain.description=Para desbloquear os cofres do Hub, você precisa de uma chave do dispositivo que fica protegida usando um chaveiro. Para continuar, ative "%s" e escolha um chaveiro nas preferências.
hub.noKeychain.openBtn=Abrir preferências
hub.noKeychain.description=Para desbloquear os cofres centrais, é necessário a chave do dispositivo, protegida por um chaveiro. Para proceder, ative "%s" e selecione um chaveiro nas preferências.
hub.noKeychain.openBtn=Abrir Preferências
### Waiting
hub.auth.message=Aguardando autenticação…
hub.auth.message=Esperando pela autenticação…
hub.auth.description=Você será redirecionado automaticamente para a página de login.
hub.auth.loginLink=Não foi redirecionado? Clique aqui para abrir.
### Receive Key
hub.receive.message=Processando resposta…
hub.receive.description=O Cryptomator está recebendo e processando a resposta do Hub. Aguarde.
hub.receive.description=Cryptomator está recebendo e processando a resposta do Hub. Por favor, aguarde.
### Register Device
hub.register.message=Novo dispositivo
hub.register.description=Este é o primeiro acesso do Hub neste dispositivo. Registre-o usando sua Chave de Conta.
hub.register.message=Novo Dispositivo
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.invalidAccountKeyLabel=Chave da conta inválida
hub.register.invalidAccountKeyLabel=Chave de Conta inválida
hub.register.registerBtn=Registrar
### Register Device Legacy
hub.register.legacy.occupiedMsg=Esse nome já está em uso
hub.register.legacy.description=Este é o primeiro acesso do Hub neste dispositivo. Registre-o.
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
hub.registerSuccess.message=Dispositivo registrado
hub.registerSuccess.description=Seu dispositivo foi registrado com sucesso. Prossiga com o desbloqueio 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
hub.registerFailed.message=Falha ao registrar o dispositivo
hub.registerFailed.description.generic=Ocorreu um erro no processo de registro. Para mais detalhes, verifique o registro 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 outro dispositivo.
### Archived
hub.archived.message=Cofre arquivado
hub.archived.description=Este cofre foi arquivo e está inacessível. Contate o proprietário dele.
hub.registerFailed.message=Falha ao registrar o Dispositivo
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
hub.unauthorized.message=Acesso negado
hub.unauthorized.description=Você não tem autorização para abrir este cofre. Entre em contato com o proprietário dele para solicitar acesso.
hub.unauthorized.description=Você não está autorizado a abrir este cofre. Entre em contato com o proprietário do cofre para solicitar acesso.
### Requires Account Initialization
hub.requireAccountInit.message=Ação necessária
hub.requireAccountInit.description.0=Para prosseguir, complete as etapas obrigatórias no seu
hub.requireAccountInit.description.0=Para prosseguir, por favor, complete os passos necessários
hub.requireAccountInit.description.1=Perfil de usuário do Hub
hub.requireAccountInit.description.2=.
### License Exceeded
hub.invalidLicense.message=Licença Hub invalida
hub.invalidLicense.description=Sua instância do Cryptomator Hub tem uma licença inválida. Informe a um administrador do Hub para atualizar ou renová-la.
hub.invalidLicense.message=Licença Invalida
hub.invalidLicense.description=Sua instância do Cryptomator Hub possui uma licença inválida. Por favor, informe um administrador do Hub para atualizar ou renovar a licença.
# Lock
## Force
lock.forced.message=Bloqueio falhou
lock.forced.description=O fechamento do cofre "%s" foi impedido por arquivos abertos ou tarefas em andamento. Você pode forçar o fechamento, mas interromper a gravação de dados pode causar a perda de arquivos não salvos.
lock.forced.retryBtn=Tentar novamente
lock.forced.forceBtn=Forçar bloqueio
lock.forced.description=Trancar "%s" foi bloqueado por operações pendentes ou arquivos abertos. Você pode forçar o bloqueio deste cofre, no entanto, a interrupção pode resultar em perda de dados não salvos.
lock.forced.retryBtn=Tentar Novamente
lock.forced.forceBtn=Forçar Bloqueio
## Failure
lock.fail.message=O bloqueio do cofre falhou.
lock.fail.description=Não foi possível bloquear o cofre "%s". Certifique-se de que o trabalho não salvo foi armazenado em outro local e que as operações importantes de leitura/gravação foram concluídas. Para fechar o cofre, encerre o processo do Cryptomator.
lock.fail.description=Cofre "%s" não pôde ser bloqueado. Certifique-se de que o trabalho não salvo está salvo em outro lugar e que operações de Leitura/Escrita importantes sejam concluídas. Para fechar o cofre, encerre o processo do Cryptomator.
# Migration
migration.title=Atualizar cofre
migration.title=Atualizar Cofre
## Start
migration.start.header=Atualizar cofre
migration.start.text=Para abrir seu cofre "%s" nesta nova versão do Cryptomator, o cofre precisa ser atualizado para um formato mais recente. Antes de realizar esse procedimento, esteja ciente do seguinte:
migration.start.remarkUndone=Esta melhoria não pode ser desfeita.
migration.start.header=Atualizar Cofre
migration.start.text=Para abrir o seu cofre "%s" nesta nova versão do Cryptomator, o cofre precisa ser atualizado para um formato mais recente. Antes de fazer isso, você deve saber o seguinte:
migration.start.remarkUndone=Essa atualização não pode ser desfeita.
migration.start.remarkVersions=Versões mais antigas do Cryptomator não conseguirão abrir o cofre na versão atualizada.
migration.start.remarkCanRun=Garanta que todos os dispositivos que você usa para acessar o cofre consigam executar esta versão do Cryptomator.
migration.start.remarkSynced=Antes de atualizá-lo, tenha certeza de que seu cofre está totalmente sincronizado neste e em outros dispositivos.
migration.start.confirm=Li e estou ciente das informações acima
migration.start.remarkCanRun=Você deve ter certeza de que todos os dispositivos a partir dos quais você acessar o cofre podem executar esta versão do Cryptomator.
migration.start.remarkSynced=Você deve ter certeza de que o seu cofre está totalmente sincronizado neste dispositivo e em outros dispositivos, antes de atualizá-lo.
migration.start.confirm=Eu li e entendi a informação acima
## Run
migration.run.enterPassword=Digite a senha para "%s"
migration.run.startMigrationBtn=Migrar cofre
migration.run.startMigrationBtn=Migrar Cofre
migration.run.progressHint=Isso pode levar algum tempo…
## Success
migration.success.nextStepsInstructions="%s" migrado com sucesso.\nAgora você pode desbloquear este cofre.
migration.success.unlockNow=Desbloquear agora
migration.success.nextStepsInstructions="%s" migrado com sucesso.\nVocê agora pode desbloquear este cofre.
migration.success.unlockNow=Desbloquear Agora
## Missing file system capabilities
migration.error.missingFileSystemCapabilities.title=Sistema de arquivos incompatível
migration.error.missingFileSystemCapabilities.title=Sistema de arquivos não suportado
migration.error.missingFileSystemCapabilities.description=A migração não foi iniciada porque o seu cofre está localizado em um sistema de arquivos inadequado.
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=O sistema de arquivos não suporta arquivos com nomes longos.
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=O sistema de arquivos não suporta arquivos com nome longo.
migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=O sistema de arquivos não suporta caminhos longos.
migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=O sistema de arquivos não permite leitura.
migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=O sistema de arquivos não permite ser gravado.
## Impossible
migration.impossible.heading=Não é possível migrar o cofre
migration.impossible.reason=O cofre não pode ser migrado automaticamente porque sua localização de armazenamento ou o ponto de acesso é incompatível.
migration.impossible.reason=O cofre não pode ser migrado automaticamente porque sua localização de armazenamento ou o ponto de acesso não é compatível.
migration.impossible.moreInfo=O cofre ainda pode ser aberto com uma versão mais antiga. Para instruções sobre como migrar um cofre manualmente, visite
# Health Check
## Start
health.title=Verificação de saúde de "%s"
health.title=Exame de saúde de "%s"
health.intro.header=Verificação de Saúde
health.intro.text=A verificação de saúde é um grupo de verificações que detectam e tentam corrigir problemas na estrutura interna do cofre. Lembre-se de:
health.intro.remarkSync=Certifique-se de que todos os dispositivos estejam completamente sincronizados. Isso resolve a maioria dos problemas.
health.intro.remarkFix=A maioria dos problema podem ser corrigidos.
health.intro.remarkBackup=Caso os dados corrompam, apenas um backup poderá ajudar.
health.intro.affirmation=Li e estou ciente das informações acima
health.intro.text=A Verificação de Saúde é um grupo de verificações que detectam e tentam corrigir problemas na estrutura interna do cofre. Lembre-se de:
health.intro.remarkSync=Certifique-se de que todos os dispositivos estejam completamente sincronizados, isso resolve a maioria dos problemas.
health.intro.remarkFix=Nem todos os problemas podem ser corrigidos.
health.intro.remarkBackup=Se os dados estiverem corrompidos, apenas um backup poderá ajudar.
health.intro.affirmation=Eu li e entendi a informação acima
## Start Failure
health.fail.header=Erro ao carregar a configuração do cofre
health.fail.header=Erro ao carregar configuração do Cofre
health.fail.ioError=Ocorreu um erro ao acessar e ler o arquivo de configuração.
health.fail.parseError=Ocorreu um erro ao analisar a configuração do cofre.
health.fail.moreInfo=Mais informações
## Check Selection
health.checkList.description=Selecione as verificações na lista à esquerda ou use os botões abaixo.
health.checkList.selectAllButton=Selecionar todas as verificações
health.checkList.deselectAllButton=Desmarcar todas as verificações
health.check.runBatchBtn=Executar verificações selecionadas
health.checkList.description=Selecione as verificações na lista esquerda ou use os botões abaixo.
health.checkList.selectAllButton=Selecionar Todas as Verificações
health.checkList.deselectAllButton=Desfazer seleção de todas as planilhas
health.check.runBatchBtn=Executar Verificações
## Detail view
health.check.detail.noSelectedCheck=Para ver os resultados, selecione uma verificação de saúde na lista à esquerda.
health.check.detail.noSelectedCheck=Para ver os resultados, selecione uma verificação na lista à esquerda.
health.check.detail.checkScheduled=A verificação está programada.
health.check.detail.checkRunning=A verificação está em execução…
health.check.detail.checkRunning=A verificação está rodando…
health.check.detail.checkSkipped=A verificação não foi selecionada para execução.
health.check.detail.checkFinished=A verificação terminou com sucesso.
health.check.detail.checkFinishedAndFound=A verificação terminou. Verifique os resultados.
health.check.detail.checkFailed=A verificação encerrou devido a um erro.
health.check.detail.checkCancelled=A verificação foi cancelada.
health.check.detail.listFilters.label=Filtro
health.check.detail.filterSeverity=Filtrar por severidade
health.check.detail.filterFixState=Filtrar por estado de correção
health.check.detail.fixAllSpecificBtn=Corrigir todos deste tipo
health.check.exportBtn=Exportar relatório
health.check.detail.fixAllSpecificBtn=Reparar todos deste tipo
health.check.exportBtn=Exportar Relatório
## Result view
health.result.severityFilter.all=Gravidade Todas
health.result.severityFilter.good=Boa
health.result.severityFilter.info=Informação
health.result.severityFilter.warn=Alerta
health.result.severityFilter.crit=Crítica
health.result.severityTip.good=Severidade: Boa\nEstrutura do cofre normal.
health.result.severityTip.info=Gravidade: Informação\nEstrutura de cofre intacta. Recomenda-se correção.
health.result.severityTip.warn=Gravidade: Alerta\nEstrutura de cofre corrompida. É altamente recomendado realizar a correção.
health.result.severityTip.crit=Gravidade: Crítica\nEstrutura do cofre corrompida. Os dados poderão ser perdidos.
health.result.fixStateFilter.all=Estado de reparo Todos
health.result.fixStateFilter.fixable=Corrigível
health.result.fixStateFilter.notFixable=Incorrigível
health.result.fixStateFilter.fixing=Corrigindo…
health.result.fixStateFilter.fixed=Corrigido
health.result.fixStateFilter.fixFailed=Correção falhou
health.result.severityFilter.all=Gravidade - Todas
health.result.severityFilter.good=Bom estado
health.result.severityFilter.info=Info
health.result.severityFilter.warn=Aviso
health.result.severityFilter.crit=Crítico
health.result.severityTip.good=Gravidade: Boa\nestrutura do cofre normal.
health.result.severityTip.info=Gravidade: Info\nEstrutura de cofre intacta, correção sugerida.
health.result.severityTip.warn=Gravidade: Aviso\nEstrutura de cofre corrompida, correção altamente aconselhada.
health.result.severityTip.crit=Gravidade: Crítica\nEstrutura do cofre corrompida, haverá perda de dados.
health.result.fixStateFilter.all=Estado de reparo - Todos
health.result.fixStateFilter.fixable=Reparável
health.result.fixStateFilter.notFixable=Não reparável
health.result.fixStateFilter.fixing=Reparando…
health.result.fixStateFilter.fixed=Reparado
health.result.fixStateFilter.fixFailed=Reparo falhou
## Fix Application
health.fix.fixBtn=Corrigir
health.fix.successTip=Corrigido
health.fix.failTip=Falha na correção. Consulte o registro para obter detalhes
health.fix.fixBtn=Reparar
health.fix.successTip=Reparado
health.fix.failTip=Falha na correção, consulte o log para obter detalhes
# Preferences
preferences.title=Preferências
@@ -300,87 +284,80 @@ preferences.title=Preferências
preferences.general=Geral
preferences.general.startHidden=Ocultar janela ao iniciar o Cryptomator
preferences.general.autoCloseVaults=Bloquear cofres sem perguntar ao sair do aplicativo
preferences.general.debugLogging=Ativar registro de depuração
preferences.general.debugDirectory=Mostrar arquivos de registro
preferences.general.autoStart=Iniciar o Cryptomator com o sistema
preferences.general.debugLogging=Ativar log de debug
preferences.general.debugDirectory=Mostrar arquivos de log
preferences.general.autoStart=Iniciar o Cryptomator ao inicializar o sistema
preferences.general.keychainBackend=Armazenar senhas com
preferences.general.quickAccessService=Adicione cofres desbloqueados à área de acesso rápido
## Interface
preferences.interface=Interface
preferences.interface.theme=Aparência
preferences.interface.theme.automatic=Automática
preferences.interface.theme.dark=Escura
preferences.interface.theme.light=Clara
preferences.interface.theme.automatic=Automático
preferences.interface.theme.dark=Escuro
preferences.interface.theme.light=Claro
preferences.interface.unlockThemes=Desbloquear o modo escuro
preferences.interface.language=Idioma (requer reinicialização)
preferences.interface.language.auto=Padrão do sistema
preferences.interface.language.auto=Padrão do Sistema
preferences.interface.interfaceOrientation=Orientação da interface
preferences.interface.interfaceOrientation.ltr=Da esquerda para a direita
preferences.interface.interfaceOrientation.rtl=Da direita para a esquerda
preferences.interface.showTrayIcon=Mostrar ícone na barra do sistema (requer reinicialização)
preferences.interface.compactMode=Ativar lista de cofres compacta
preferences.interface.compactMode=Habilitar lista de cofres compactos
## Volume
preferences.volume=Volume virtual
preferences.volume=Volume Virtual
preferences.volume.type=Tipo de volume padrão
preferences.volume.type.automatic=Automático
preferences.volume.docsTooltip=Acesse a documentação para saber mais sobre os diferentes tipos de volumes.
preferences.volume.fuseRestartRequired=Para aplicar as alterações, o Cryptomator precisa ser reiniciado.
preferences.volume.tcp.port=Porta TCP padrão
preferences.volume.docsTooltip=Abra a documentação para saber mais sobre os diferentes tipos de volumes.
preferences.volume.fuseRestartRequired=Para aplicar as mudanças, o Cryptomator precisa ser reiniciado.
preferences.volume.tcp.port=Porta TCP Padrão
preferences.volume.supportedFeatures=O tipo de volume escolhido suporta os seguintes recursos:
preferences.volume.feature.mountAuto=Seleção automática de ponto de montagem
preferences.volume.feature.mountToDir=Diretório personalizado como ponto de montagem
preferences.volume.feature.mountToDriveLetter=Letra de unidade como ponto de montagem
preferences.volume.feature.mountFlags=Opções personalizadas de montagem
preferences.volume.feature.readOnly=Montagem de somente leitura
preferences.volume.feature.mountToDriveLetter=Cartaz como ponto de montagem
preferences.volume.feature.mountFlags=Opções customizadas
preferences.volume.feature.readOnly=Montaria somente leitura
## Updates
preferences.updates=Atualizações
preferences.updates.currentVersion=Versão atual: %s
preferences.updates.autoUpdateCheck=Buscar atualizações automaticamente
preferences.updates.checkNowBtn=Verificar agora
preferences.updates.checkNowBtn=Buscar Agora
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 dias
preferences.updates.lastUpdateCheck.hoursAgo=%s horas
preferences.updates.prohibitedDueToUnlockedVaults.1=Por favor
preferences.updates.prohibitedDueToUnlockedVaults.2=bloqueie seus cofres
preferences.updates.prohibitedDueToUnlockedVaults.3=para instalar a atualização.
preferences.updates.checkFailed=A busca por atualizações falhou. Verifique sua conexão à rede ou tente novamente mais tarde.
preferences.updates.updateFailed=Falha na atualização. Instale-a manualmente.
preferences.updates.lastUpdateCheck.daysAgo=%s dia atrás
preferences.updates.lastUpdateCheck.hoursAgo=%s horas atrás
preferences.updates.checkFailed=Procura 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.
preferences.updates.visitDownloadPage=Visite a página de download
## Contribution
preferences.contribute=Apoie-nos
preferences.contribute=Nos Apoie
preferences.contribute.registeredFor=Certificado de apoiador registrado para %s
preferences.contribute.noCertificate=Apoie o Cryptomator e receba um certificado de apoiador. Ele é como uma chave de licença para pessoas maravilhosas que usam software livre. ;-)
preferences.contribute.getCertificate=Ainda não tem um? Saiba como obtê-lo.
preferences.contribute.getCertificate=Não tem um ainda? Saiba como obtê-lo.
preferences.contribute.promptText=Cole o código do certificado de apoiador aqui
preferences.contribute.thankYou=Obrigado por apoiar o desenvolvimento de código aberto do Cryptomator!
preferences.contribute.thankYou=Obrigado por apoiar o desenvolvimento open-source do Cryptomator!
preferences.contribute.donate=Doar
preferences.contribute.sponsor=Apoiador
preferences.contribute.removeCert.tooltip=Remover certificado
preferences.contribute.sponsor=Patrocinador
### Remove License Key Dialog
removeCert.title=Remover certificado
removeCert.message=Remover o certificado de apoiador?
removeCert.title=Excluir Certificado
removeCert.message=Excluir certificado de apoiador?
removeCert.description=Os principais recursos do Cryptomador não são afetados por isso. Nem o acesso aos seus cofres é restrito, nem o nível de segurança é reduzido.
#<-- Add entries for donations and code/translation/documentation contribution -->
## About
preferences.about=Sobre
preferences.about.thirdPartyLicenses=Licenças de terceiros
# Vault Statistics
stats.title=Estatísticas para %s
stats.cacheHitRate=Taxa de uso do cache
stats.cacheHitRate=Taxa de Utilização do Cache
## Read
stats.read.throughput.idle=Leitura: ociosa
stats.read.throughput.kibs=Leitura: %.2f KiB/s
stats.read.throughput.kibs=Leitura: %.2f MiB/s
stats.read.throughput.mibs=Leitura: %.2f MiB/s
stats.read.total.data.none=Dados lidos: -
stats.read.total.data.kib=Dados lidos: %.1f KiB
stats.read.total.data.kib=Dados lidos: %.1f GiB
stats.read.total.data.mib=Dados lidos: %.1f MiB
stats.read.total.data.gib=Dados lidos: %.1f GiB
stats.decr.total.data.none=Dados descriptografados: -
@@ -409,41 +386,32 @@ stats.access.total=Acessos totais: %d
# Main Window
## Vault List
main.vaultlist=Cofres
main.vaultlist.listEntry=Cofre %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Clique aqui para adicionar um cofre
main.vaultlist.contextMenu.remove=Remover…
main.vaultlist.contextMenu.lock=Bloquear
main.vaultlist.contextMenu.unlock=Desbloquear…
main.vaultlist.contextMenu.unlockNow=Desbloquear agora
main.vaultlist.contextMenu.vaultoptions=Mostrar opções do cofre
main.vaultlist.contextMenu.reveal=Revelar volume
main.vaultlist.contextMenu.unlockNow=Desbloquear Agora
main.vaultlist.contextMenu.vaultoptions=Exibir Opções de Cofre
main.vaultlist.contextMenu.reveal=Revelar Volume
main.vaultlist.contextMenu.share=Compartilhar…
main.vaultlist.addVaultBtn.menuItemNew=Criar novo cofre…
main.vaultlist.addVaultBtn.menuItemExisting=Abrir cofre existente…
main.vaultlist.addVaultBtn.menuItemRecover=Recuperar cofre existente…
main.vaultlist.addVaultButton.tooltip=Adicionar cofre
main.vaultlist.showEventsButton.tooltip=Abrir visualização de eventos
main.vaultlist.showPreferencesButton.tooltip=Mostrar preferências
##Notification
main.vaultlist.showEventsButton.tooltip=Abrir visualização de evento
##Notificaition
main.notification.updateAvailable=Atualização disponível.
main.notification.support=Apoie o Cryptomator.
main.notification.closeButton.tooltip=Fechar barra de informações
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Obrigado por escolher o Cryptomator para proteger seus arquivos. Se precisar de ajuda, confira nossos guias de introdução:
main.vaultDetail.storageLocation=Local de armazenamento do cofre
### Locked
main.vaultDetail.lockedStatus=BLOQUEADO
main.vaultDetail.unlockBtn=Desbloquear…
main.vaultDetail.unlockNowBtn=Desbloquear agora
main.vaultDetail.optionsBtn=Opções do cofre
main.vaultDetail.unlockNowBtn=Desbloquear Agora
main.vaultDetail.optionsBtn=Opções de Cofre
main.vaultDetail.passwordSavedInKeychain=Senha salva
main.vaultDetail.share=Compartilhar…
### Unlocked
main.vaultDetail.unlockedStatus=DESBLOQUEADO
main.vaultDetail.accessLocation=O conteúdo do seu cofre está disponível aqui:
main.vaultDetail.revealBtn=Revelar volume
main.vaultDetail.revealBtn=Revelar Volume
main.vaultDetail.copyUri=Copiar URI
main.vaultDetail.lockBtn=Bloquear
main.vaultDetail.bytesPerSecondRead=Leitura:
@@ -451,166 +419,131 @@ main.vaultDetail.bytesPerSecondWritten=Gravação:
main.vaultDetail.throughput.idle=ocioso
main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Estatísticas do cofre
main.vaultDetail.locateEncryptedFileBtn=Localizar arquivo criptografado
main.vaultDetail.stats=Estatísticas do Cofre
main.vaultDetail.locateEncryptedFileBtn=Localizar Arquivo Criptografado
main.vaultDetail.locateEncryptedFileBtn.tooltip=Escolha um arquivo do seu cofre para localizar sua versão criptografada
main.vaultDetail.encryptedPathsCopied=Caminhos copiados para a área de transferência!
main.vaultDetail.locateEncrypted.filePickerTitle=Selecionar arquivo no cofre
main.vaultDetail.decryptName.buttonLabel=Descriptografar nome do arquivo
main.vaultDetail.encryptedPathsCopied=Caminhos copiados para a Área de Transferência!
main.vaultDetail.locateEncrypted.filePickerTitle=Selecionar Arquivo no Cofre
main.vaultDetail.decryptName.buttonLabel=Descriptografar Nome do Arquivo
main.vaultDetail.decryptName.tooltip=Escolha um arquivo criptografado do cofre para descriptografar seu nome
### Missing
main.vaultDetail.missing.info=O Cryptomator não encontrou um cofre nesse caminho.
main.vaultDetail.missing.info=O Cryptomator não encontrou um cofre neste caminho.
main.vaultDetail.missing.recheck=Verificar novamente
main.vaultDetail.missing.remove=Remover da lista de cofres…
main.vaultDetail.missing.changeLocation=Alterar localização do cofre…
main.vaultDetail.missing.changeLocation=Alterar Localização do Cofre…
### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=A configuração do cofre está faltando.
main.vaultDetail.missingVaultConfig.restore=Restaurar configuração do cofre
### Needs Migration
main.vaultDetail.migrateButton=Atualizar cofre
main.vaultDetail.migratePrompt=Seu cofre precisa ser atualizado para um novo formato antes de conseguir acessá-lo
main.vaultDetail.migrateButton=Atualizar Cofre
main.vaultDetail.migratePrompt=Seu cofre precisa ser atualizado para um novo formato antes de poder acessá-lo
### Error
main.vaultDetail.error.info=Ocorreu um erro ao carregar o cofre do disco.
main.vaultDetail.error.reload=Recarregar
main.vaultDetail.error.windowTitle=Erro ao carregar o cofre
main.vaultDetail.error.windowTitle=Erro ao carregar cofre
# Wrong File Alert
wrongFileAlert.title=Como criptografar os arquivos
wrongFileAlert.message=Você tentou criptografar estes arquivos?
wrongFileAlert.description=Para esta finalidade, o Cryptomator fornece um volume no seu gerenciador de arquivos do sistema.
wrongFileAlert.instruction.0=Para criptografar os arquivos, siga as etapas abaixo:
wrongFileAlert.instruction.1=1. Desbloqueie o seu cofre;
wrongFileAlert.title=Como Encriptar Arquivos
wrongFileAlert.message=Você tentou encriptar esses arquivos?
wrongFileAlert.description=Para este propósito, o Cryptomator fornece um volume no seu gerenciador de arquivos do sistema.
wrongFileAlert.instruction.0=Para encriptar arquivos, siga estes passos:
wrongFileAlert.instruction.1=1. Desbloqueie o seu cofre.
wrongFileAlert.instruction.2=2. Clique em "Revelar" para abrir o volume no seu gerenciador de arquivos.
wrongFileAlert.instruction.3=3. Adicione seus arquivos a esse volume;
wrongFileAlert.instruction.3=3. Adicione seus arquivos a este volume.
wrongFileAlert.link=Para obter assistência, visite
# Vault Options
## General
vaultOptions.general=Geral
vaultOptions.general.vaultName=Nome do cofre
vaultOptions.general.vaultName=Nome do Cofre
vaultOptions.general.autoLock.lockAfterTimePart1=Bloquear quando inativo por
vaultOptions.general.autoLock.lockAfterTimePart2=minuto(s)
vaultOptions.general.autoLock.accessibleText=Bloquear tempo limite em minutos
vaultOptions.general.unlockAfterStartup=Desbloquear o cofre ao iniciar o Cryptomator
vaultOptions.general.actionAfterUnlock=Após desbloquear
vaultOptions.general.autoLock.lockAfterTimePart2=minutos
vaultOptions.general.unlockAfterStartup=Desbloqueie o cofre ao iniciar o Cryptomator
vaultOptions.general.actionAfterUnlock=Após desbloquear com sucesso
vaultOptions.general.actionAfterUnlock.ignore=Não fazer nada
vaultOptions.general.actionAfterUnlock.reveal=Revelar volume
vaultOptions.general.actionAfterUnlock.reveal=Revelar Volume
vaultOptions.general.actionAfterUnlock.ask=Perguntar
vaultOptions.general.startHealthCheckBtn=Iniciar verificação de saúde
vaultOptions.general.startHealthCheckBtn=Iniciar Exame de Saúde
## Mount
vaultOptions.mount=Montagem
vaultOptions.mount.info=Abra preferências do volume virtual para alterar as configurações padrões.
vaultOptions.mount.readonly=Somente leitura
vaultOptions.mount.customMountFlags=Flags personalizadas de montagem
vaultOptions.mount.info=Abra preferências de drive virtual para alterar as configurações padrão.
vaultOptions.mount.readonly=Somente Leitura
vaultOptions.mount.customMountFlags=Flags Personalizadas de Montagem
vaultOptions.mount.winDriveLetterOccupied=ocupado
vaultOptions.mount.mountPoint=Ponto de montagem
vaultOptions.mount.mountPoint=Ponto de Montagem
vaultOptions.mount.mountPoint.auto=Escolher automaticamente um local adequado
vaultOptions.mount.mountPoint.driveLetter=Usar letra de unidade atribuída
vaultOptions.mount.mountPoint.custom=Usar diretório escolhido
vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
vaultOptions.mount.mountPoint.directoryPickerTitle=Escolha um diretório
vaultOptions.mount.volumeType.default=Padrão (%s)
vaultOptions.mount.volumeType.restartRequired=Para usar este 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.type=Tipo de volume
vaultOptions.mount.volume.type=Tipo de Volume
## Master Key
vaultOptions.masterkey=Senha
vaultOptions.masterkey.changePasswordBtn=Alterar senha
vaultOptions.masterkey.changePasswordBtn=Alterar Senha
vaultOptions.masterkey.forgetSavedPasswordBtn=Esquecer a senha salva
vaultOptions.masterkey.recoveryKeyExplanation=Caso perca a sua senha, a única forma de restaurar acesso a um cofre é através de uma chave de recuperação.
vaultOptions.masterkey.showRecoveryKeyBtn=Mostrar chave de recuperação
vaultOptions.masterkey.recoverPasswordBtn=Redefinir senha
vaultOptions.masterkey.missingMasterkeyFile=Essas opções ficarão disponíveis se o arquivo masterkey estiver na pasta do cofre.
vaultOptions.masterkey.recoveryKeyExplanation=Se você perder a sua senha, a única forma de restaurar acesso a um cofre é através de uma chave de recuperação.
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir chave de recuperação
vaultOptions.masterkey.recoverPasswordBtn=Redefinir Senha
## Hub
vaultOptions.hub=Recuperação
vaultOptions.hub.convertInfo=Você pode usar a chave de recuperação para converter este cofre do Hub em um cofre protegido por senha de emergência.
vaultOptions.hub.convertBtn=Converter para cofre protegido por senha
vaultOptions.hub.convertBtn=Converter para Cofre protegido por senha
# Recovery Key
## Display Recovery Key
recoveryKey.display.title=Mostrar Chave de Recuperação
recoveryKey.create.message=Requer senha
recoveryKey.create.description=Digite a senha para mostrar a chave de recuperação de "%s":
recoveryKey.recover.description=Digite a senha para "%s" para recuperar a configuração do cofre.
recoveryKey.create.message=Senha obrigatória
recoveryKey.create.description=Digite sua senha para mostrar a chave de recuperação de "%s":
recoveryKey.display.description=A seguinte chave de recuperação pode ser usada para restaurar o acesso a "%s":
recoveryKey.display.StorageHints=Mantenha-a em um lugar bem seguro. Por exemplo:\n • Guarde em um gerenciador de senhas;\n • Grave em um pen drive;\n • Imprima ou escreva em um papel.
recoveryKey.display.StorageHints=Mantenha-a em um lugar bem seguro, por exemplo:\n • Guarde num gerenciador de senhas\n • Grave num flash drive USB\n • Imprima, ou escreva, num papel
## Reset Password
### Enter Recovery Key
recoveryKey.recover.title=Redefinir senha
recoveryKey.recover.title=Redefinir Senha
recoveryKey.recover.prompt=Digite a chave de recuperação para "%s":
recoveryKey.recover.correctKey=Essa é uma chave de recuperação válida
recoveryKey.recover.wrongKey=Essa chave de recuperação pertence a um outro cofre
recoveryKey.recover.invalidKey=Essa chave de recuperação é inválida
recoveryKey.printout.heading=Chave de Recuperação do Cryptomator\n"%s"
recoveryKey.recover.correctKey=Esta é uma chave de recuperação válida
recoveryKey.recover.wrongKey=Esta chave de recuperação pertence a um outro cofre
recoveryKey.recover.invalidKey=Esta chave de recuperação não é válida
recoveryKey.printout.heading=Chave de Recuperação do Cryptomator\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=Redefinir
recoveryKey.recover.recoverBtn=Recuperar
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=Senha redefinida com sucesso
recoveryKey.recover.resetSuccess.description=Você pode desbloquear o seu cofre com a nova senha.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Configuração do cofre recuperada
recoveryKey.recover.resetMasterkeyFileSuccess.message=Arquivo Masterkey recuperado
recoveryKey.recover.resetMasterkeyFileSuccess.description=Agora você pode desbloquear o seu cofre com a sua nova senha.
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=Cofre adicionado
recover.existing.message=O cofre foi adicionado com sucesso
recover.existing.description=O seu cofre "%s" foi adicionado à lista de cofre. Nenhum processo de recuperação foi necessário.
##Vault Already Exists - Dialog
recover.alreadyExists.title=O cofre já existe
recover.alreadyExists.message=Este cofre já foi adicionado
recover.alreadyExists.description=Seu cofre "%s" não foi adicionado novamente porque já está na sua lista de cofres.
##Invalid Selection - Dialog
recover.invalidSelection.title=Seleção inválida
recover.invalidSelection.message=Sua seleção não é um cofre
recover.invalidSelection.description=A pasta selecionada precisa ser um cofre válido do Cryptomator.
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Cofre do Hub
contactHubVaultOwner.message=Este cofre foi criado com o Cryptomator Hub
contactHubVaultOwner.description=Entre em contato com o proprietário do cofre para restaurar o arquivo restante. Eles podem baixar o modelo de cofre no Cryptomator Hub.
##Dialog Title
recover.recoverVaultConfig.title=Recuperar a configuração do cofre
recover.recoverMasterkey.title=Recuperar Masterkey
## OnBoarding
recover.onBoarding.chooseMethod=Escolha o método de recuperação:
recover.onBoarding.useRecoveryKey=Usar chave de recuperação
recover.onBoarding.usePassword=Usar senha
recover.onBoarding.intro=Certifique-se de verificar o seguinte:
recover.onBoarding.pleaseConfirm=Antes de prosseguir, confirme que:
recover.onBoarding.otherwisePleaseConfirm=Caso contrário, confirme que:
recover.onBoarding.allMissing.intro=Se este cofre for gerenciado pelo Cryptomator Hub, o proprietário do cofre deve restaurá-lo para você.
recover.onBoarding.intro.ensure=Todos os arquivos estão sincronizados.
recover.onBoarding.affirmation=Li e estou ciente dos requisitos
###Vault Config Missing
recover.onBoarding.intro.recoveryKey=Você tem a chave de recuperação e sabe se as configurações avançadas foram usadas.
recover.onBoarding.intro.password=Você tem a senha do cofre e sabe se as configurações avançadas foram usadas.
###Masterkey Missing
recover.onBoarding.intro.masterkey.recoveryKey=Você tem a chave de recuperação do cofre.
## Expert Settings
recover.expertSettings.shorteningThreshold.title=Este valor deve corresponder ao usado antes da recuperação para garantir a compatibilidade com os dados criptografados anteriormente.
# Convert Vault
convertVault.title=Converter cofre
convertVault.title=Converter Cofre
convertVault.convert.convertBtn.before=Converter
convertVault.convert.convertBtn.processing=Convertendo...
convertVault.success.message=Conversão concluída
convertVault.hubToPassword.success.description=Agora você pode desbloquear o cofre com a senha escolhida sem solicitar acesso ao Hub.
convertVault.success.message=Conversão bem sucedida
convertVault.hubToPassword.success.description=Agora você pode desbloquear o cofre com a senha escolhida sem exigir acesso ao Hub.
# New Password
newPassword.promptText=Digite a nova senha
newPassword.reenterPassword=Confirme a nova senha
newPassword.passwordsMatch=As senhas são iguais!
newPassword.passwordsDoNotMatch=As senhas são diferentes
newPassword.passwordsMatch=As senhas são idênticas!
newPassword.passwordsDoNotMatch=As senhas não coincidem
passwordStrength.messageLabel.tooShort=Use pelo menos %d caracteres
passwordStrength.messageLabel.0=Muito fraca
passwordStrength.messageLabel.1=Fraca
@@ -620,100 +553,90 @@ passwordStrength.messageLabel.4=Muito forte
# Quit
quit.title=Sair da aplicação
quit.message= cofres desbloqueados
quit.description=Confirme que deseja sair. O Cryptomador bloqueará cuidadosamente todos os cofres abertos para evitar a perda de dados.
quit.lockAndQuitBtn=Bloquear e sair
quit.message=Existem cofres desbloqueados
quit.description=Por favor, confirme que você deseja sair. O Cryptomador irá bloquear cuidadosamente todos os cofres abertos para evitar a perda de dados.
quit.lockAndQuitBtn=Bloquear e Sair
# Forced Quit
quit.forced.message=Alguns cofres não foram trancados
quit.forced.description=O bloqueio dos cofres foi impedido por operações pendentes ou arquivos abertos. Você pode forçar o bloqueio dos cofres restantes, mas essa interrupção de gravação de dados pode resultar na perda de arquivos não salvos nos cofres.
quit.forced.forceAndQuitBtn=Forçar e sair
quit.forced.message=Alguns cofres não puderam ser trancados
quit.forced.description=O bloqueio dos cofres foi impedido por operações pendentes ou arquivos abertos. Você pode forçar o bloqueio dos cofres restantes, no entanto, essa interrupção de E/S pode resultar na perda de dados não salvos nos cofres — “seus dados”.
quit.forced.forceAndQuitBtn=Forçar e Sair
# Update Reminder
updateReminder.title=Verificação de atualizações
updateReminder.message=Verificar atualizações?
updateReminder.description=Mantenha-se atualizado com novos recursos, correções de bugs e melhorias de segurança. Recomendamos verificar as atualizações automaticamente.
updateReminder.notNow=Agora não
updateReminder.yesOnce=Sim, uma vez
updateReminder.yesAutomatically=Sim, automaticamente
updateReminder.title=Verificação de Atualizações
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.notNow=Agora Não
updateReminder.yesOnce=Sim, Uma Vez
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 compatível com o Cryptomator. Suas configurações serão ajustadas para usar o tipo de volume padrão. Veja o tipo padrão nas preferências.
dokanySupportEnd.preferencesBtn=Abrir preferências
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
#Retry If Readonly
retryIfReadonly.title=Acesso restrito ao cofre
retryIfReadonly.title=Acesso Restrito ao Cofre
retryIfReadonly.message=Sem acesso de gravação ao diretório do cofre
retryIfReadonly.description=O Cryptomator não pode gravar no diretório do cofre. Você pode alterar o cofre para somente leitura e tentar novamente. Esta opção pode ser desativada nas opções do cofre.
retryIfReadonly.retry=Alterar e repetir
retryIfReadonly.description=O Cryptomator não pode escrever no diretório do cofre. Você pode alterar o cofre para somente leitura e tentar novamente. Esta opção pode ser desativada nas opções de cofre.
retryIfReadonly.retry=Alterar e Repetir
# Share Vault
shareVault.title=Compartilhar cofre
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 terceiros. Em resumo, siga esses passos:
shareVault.instruction.1=1. Compartilhe o acesso da pasta do cofre criptografado via armazenamento em nuvem.
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 boas práticas em nossas documentações.
shareVault.docsTooltip=Abra a documentação para aprender mais sobre o compartilhamento de cofres.
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 conhecimento zero
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ê deve realizar duas etapas:
shareVault.hub.instruction.1=1. Compartilhe o acesso da pasta do cofre criptografado via armazenamento em nuvem.
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
# Decrypt File Names
decryptNames.title=Descriptografar nomes de arquivos
decryptNames.title=Descriptografar Nomes de Arquivos
decryptNames.filePicker.title=Selecione o arquivo criptografado
decryptNames.filePicker.extensionDescription=Arquivo criptografado do Cryptomator
decryptNames.copyTable.tooltip=Copiar tabela
decryptNames.clearTable.tooltip=Limpar tabela
decryptNames.column.encrypted=Criptografado
decryptNames.column.decrypted=Descriptografado
decryptNames.copyHint=Copiar conteúdo da célula com %s
decryptNames.dropZone.message=Arraste e solte os arquivos ou clique para selecionar
decryptNames.dropZone.error.vaultInternalFiles=Arquivos internos do cofre sem nome descriptografável selecionados
decryptNames.dropZone.error.foreignFiles=Os arquivos não pertencem ao cofre "%s"
decryptNames.dropZone.error.noDirIdBackup=O diretório dos arquivos selecionados não contém o arquivo dirId.c9r
decryptNames.dropZone.error.generic=Falha ao descriptografar os nomes de arquivos
decryptNames.dropZone.message=Arraste e solte arquivos ou clique para selecionar
decryptNames.dropZone.error.vaultInternalFiles=Selecionados arquivos internos do cofre sem nome descriptografável
decryptNames.dropZone.error.foreignFiles=Arquivos não pertencem ao cofre "%s"
decryptNames.dropZone.error.noDirIdBackup=Diretório dos arquivos selecionados não contém o arquivo dirId.c9r
decryptNames.dropZone.error.generic=Falha ao descriptografar nomes de arquivos
# Event View
eventView.title=Eventos
eventView.filter.allVaults=Todos
eventView.clearListButton.tooltip=Limpar lista
eventView.filterVaults=Filtrar por cofre
eventView.cell.actionsButton.tooltip=Ações de evento
## event list entries
eventView.entry.vaultLocked.description=Desbloquear "%s" para mais detalhes
eventView.entry.vaultLocked.description=Desbloquear "%s" para detalhes
eventView.entry.conflictResolved.message=Conflito resolvido
eventView.entry.conflictResolved.showDecrypted=Mostrar arquivo descriptografado
eventView.entry.conflict.message=Falha na resolução de conflitos
eventView.entry.conflictResolved.copyDecrypted=Copiar caminho descriptografado
eventView.entry.conflict.message=Resolução de conflitos falhou
eventView.entry.conflict.showDecrypted=Mostrar arquivo original descriptografado
eventView.entry.conflict.copyDecrypted=Copiar caminho original descriptografado
eventView.entry.conflict.showEncrypted=Mostrar arquivo criptografado conflitante
eventView.entry.decryptionFailed.message=Falha ao descriptografar
eventView.entry.conflict.copyEncrypted=Copiar caminho criptografado conflitante
eventView.entry.decryptionFailed.message=Decriptação falhou
eventView.entry.decryptionFailed.showEncrypted=Mostrar arquivo criptografado
eventView.entry.decryptionFailed.copyEncrypted=Copiar caminho encriptado
eventView.entry.brokenDirFile.message=Link do diretório quebrado
eventView.entry.brokenDirFile.showEncrypted=Mostrar link quebrado e criptografado
eventView.entry.brokenDirFile.copyEncrypted=Copiar caminho do link quebrado
eventView.entry.brokenFileNode.message=Nó de sistema de arquivos danificado
eventView.entry.brokenFileNode.showEncrypted=Mostrar nó criptografado com falha
eventView.entry.brokenFileNode.copyEncrypted=Copiar caminho do nó quebrado criptografado
eventView.entry.brokenFileNode.copyDecrypted=Copiar caminho descriptografado
eventView.entry.inUse.message=Arquivo em uso
eventView.entry.inUse.showDecrypted=Mostrar arquivo descriptografado
eventView.entry.inUse.showEncrypted=Mostrar arquivo criptografado
eventView.entry.inUse.copyUserAndDevice=Copiar usuário de bloqueio e nome do dispositivo
eventView.entry.inUse.ignoreLock=Ignorar status de uso
# Notifications
## FileIsInUse Notification
notification.inUse.message=O arquivo está sendo usado em outro dispositivo
notification.inUse.description=O arquivo é aberto por %s em %s. Solicite a eles para fechá-lo e deixar a sincronização finalizar. Você pode ignorar o status para abri-lo agora, mas isso pode causar conflitos ou substituir novas alterações.
notification.inUse.action=Ignorar status de uso

View File

@@ -12,14 +12,10 @@ generic.button.close=Închide
generic.button.copy=Copiază
generic.button.copied=Copiat!
generic.button.done=Terminat
generic.button.previous=Precedentul
generic.button.next=Următorul
generic.button.print=Tipărește
generic.button.remove=Șterge
## Vault state
vault.state.error=Eroare
# Error
error.message=A apărut o eroare
error.description=Cryptomator nu se aștepta să se întâmple asta. Puteți căuta soluții existente pentru această eroare. În cazul in care nu s-a raportat încă, nu ezitați să faceți acest lucru.
@@ -179,7 +175,6 @@ hub.registerSuccess.legacy.description=Pentru a accesa seiful dispozitivului tre
hub.registerFailed.message=Înregistrarea dispozitivului a eșuat
hub.registerFailed.description.generic=.
hub.registerFailed.description.deviceAlreadyExists=Acest dispozitiv este deja înregistrat pentru un alt utilizator. Încercați să schimbați contul de utilizator sau folosiți un alt dispozitiv.
### Archived
### Unauthorized
hub.unauthorized.message=Acces respins
### Requires Account Initialization
@@ -387,7 +382,6 @@ stats.access.total=Accesuri totale: %d
# Main Window
## Vault List
main.vaultlist=Seifuri
main.vaultlist.emptyList.onboardingInstruction=Faceți clic aici pentru a adăuga un seif
main.vaultlist.contextMenu.remove=Elimină…
main.vaultlist.contextMenu.lock=Blocaţi
@@ -396,8 +390,7 @@ main.vaultlist.contextMenu.unlockNow=Deblochează acum
main.vaultlist.contextMenu.vaultoptions=Arată opțiunile seifului
main.vaultlist.contextMenu.reveal=Dezvăluie unitatea
main.vaultlist.contextMenu.share=Distribuie…
main.vaultlist.addVaultButton.tooltip=Adaugă un seif
##Notification
##Notificaition
main.notification.updateAvailable=O nouă versiune este valabilă.
main.notification.support=Susține Cryptomator.
## Vault Detail
@@ -601,7 +594,3 @@ shareVault.hub.openHub=Deschide Cryptomator Hub
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,19 +12,10 @@ generic.button.close=Закрыть
generic.button.copy=Скопировать
generic.button.copied=Скопировано!
generic.button.done=Готово
generic.button.previous=Назад
generic.button.next=Далее
generic.button.print=Печать
generic.button.remove=Удалить
## Vault state
vault.state.locked=Заблокировано
vault.state.unlocked=Разблокировано
vault.state.missing=Отсутствует
vault.state.migrationNeeded=Требуется миграция
vault.state.processing=Обработка
vault.state.error=Ошибка
# Error
error.message=Произошла ошибка
error.description=Произошла непредвиденная ситуация. Попробуйте найти уже имеющиеся решения этой ошибки. Если об этой ошибке ещё не сообщали, то сделайте это сами.
@@ -186,9 +177,6 @@ hub.registerSuccess.legacy.description=Для доступа к хранилищ
hub.registerFailed.message=Ошибка регистрации устройства
hub.registerFailed.description.generic=Ошибка регистрации. Подробную информацию см. в журнале приложения.
hub.registerFailed.description.deviceAlreadyExists=Это устройство уже зарегистрировано другим пользователем. Попробуйте изменить учётную запись или используйте другое устройство.
### Archived
hub.archived.message=Хранилище заархивировано
hub.archived.description=Это хранилище было заархивировано и больше недоступно. Свяжитесь с владельцем хранилища.
### Unauthorized
hub.unauthorized.message=Нет доступа
hub.unauthorized.description=Вы не авторизованы для открытия этого хранилища. Свяжитесь с владельцем хранилища, чтобы запросить доступ.
@@ -269,8 +257,6 @@ health.check.detail.checkFinishedAndFound=Проверка завершена.
health.check.detail.checkFailed=Проверка прервана из-за ошибки.
health.check.detail.checkCancelled=Проверка была отменена.
health.check.detail.listFilters.label=Фильтр
health.check.detail.filterSeverity=Фильтр по строгости
health.check.detail.filterFixState=Фильтр по фикс. состоянию
health.check.detail.fixAllSpecificBtn=Исправить все
health.check.exportBtn=Экспорт отчёта
## Result view
@@ -343,13 +329,8 @@ preferences.updates.lastUpdateCheck.never=никогда
preferences.updates.lastUpdateCheck.recently=недавно
preferences.updates.lastUpdateCheck.daysAgo=%s дн. назад
preferences.updates.lastUpdateCheck.hoursAgo=%s ч назад
preferences.updates.prohibitedDueToUnlockedVaults.1=*
preferences.updates.prohibitedDueToUnlockedVaults.2=Заблокируйте хранилища
preferences.updates.prohibitedDueToUnlockedVaults.3=для установки обновления.
preferences.updates.checkFailed=Ошибка поиска обновлений. Проверьте подключение к Интернету и повторите попытку.
preferences.updates.updateFailed=Обновление не выполнено. Установите обновление вручную.
preferences.updates.upToDate=У вас новейшая версия Cryptomator.
preferences.updates.visitDownloadPage=Открыть страницу загрузки
## Contribution
preferences.contribute=Поддержите нас
@@ -360,7 +341,6 @@ preferences.contribute.promptText=Вставьте сюда код сертиф
preferences.contribute.thankYou=Благодарим вас за поддержку разработки Cryptomator с открытым исходным кодом!
preferences.contribute.donate=Пожертвование
preferences.contribute.sponsor=Спонсировать
preferences.contribute.removeCert.tooltip=Удалить сертификат
### Remove License Key Dialog
removeCert.title=Удалить сертификат
@@ -370,7 +350,6 @@ removeCert.description=Ключевые функции криптоматора
## About
preferences.about=О программе
preferences.about.thirdPartyLicenses=Сторонние лицензии
# Vault Statistics
stats.title=Статистика: %s
@@ -409,8 +388,6 @@ stats.access.total=Всего доступов: %d
# Main Window
## Vault List
main.vaultlist=Хранилища
main.vaultlist.listEntry=Хранилище %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Нажмите здесь, чтобы добавить хранилище
main.vaultlist.contextMenu.remove=Удалить…
main.vaultlist.contextMenu.lock=Заблокировать
@@ -422,17 +399,13 @@ main.vaultlist.contextMenu.share=Поделиться…
main.vaultlist.addVaultBtn.menuItemNew=Создать хранилище…
main.vaultlist.addVaultBtn.menuItemExisting=Открыть имеющееся хранилище…
main.vaultlist.addVaultBtn.menuItemRecover=Восстановить имеющееся хранилище…
main.vaultlist.addVaultButton.tooltip=Добавить хранилище
main.vaultlist.showEventsButton.tooltip=Открыть просмотр событий
main.vaultlist.showPreferencesButton.tooltip=Показать параметры
##Notification
main.vaultlist.showEventsButton.tooltip=Открыть просмотр события
##Notificaition
main.notification.updateAvailable=Есть обновление.
main.notification.support=Поддержите Cryptomator.
main.notification.closeButton.tooltip=Закрыть инфопанель
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Благодарим за выбор Cryptomator для защиты ваших файлов. Если требуется помощь, ознакомьтесь с документацией по началу работы:
main.vaultDetail.storageLocation=Расположение хранилища
### Locked
main.vaultDetail.lockedStatus=ЗАБЛОКИРОВАНО
main.vaultDetail.unlockBtn=Разблокировать…
@@ -490,7 +463,6 @@ vaultOptions.general=Общие
vaultOptions.general.vaultName=Имя хранилища
vaultOptions.general.autoLock.lockAfterTimePart1=Блокировать при бездействии
vaultOptions.general.autoLock.lockAfterTimePart2=мин
vaultOptions.general.autoLock.accessibleText=Тайм-аут блокировки в минутах
vaultOptions.general.unlockAfterStartup=Разблокировать хранилище при запуске Cryptomator
vaultOptions.general.actionAfterUnlock=После успешной разблокировки
vaultOptions.general.actionAfterUnlock.ignore=Ничего не делать
@@ -521,7 +493,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Забыть сохранённы
vaultOptions.masterkey.recoveryKeyExplanation=При утере пароля вернуть доступ к хранилищу можно только с помощью ключа восстановления.
vaultOptions.masterkey.showRecoveryKeyBtn=Показать ключ восстановления
vaultOptions.masterkey.recoverPasswordBtn=Сброс пароля
vaultOptions.masterkey.missingMasterkeyFile=Эти параметры доступны, только если в каталоге хранилища есть файл masterkey.
## Hub
vaultOptions.hub=Восстановление
vaultOptions.hub.convertInfo=Ключ восстановления используется для преобразования этого хаб-хранилища в хранилище с паролем в чрезвычайных ситуациях.
@@ -550,8 +521,6 @@ recoveryKey.recover.recoverBtn=Восстановить
recoveryKey.recover.resetSuccess.message=Пароль успешно сброшен
recoveryKey.recover.resetSuccess.description=Вы можете разблокировать хранилище новым паролем.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Конфигурация хранилища восстановлена
recoveryKey.recover.resetMasterkeyFileSuccess.message=Файл Masterkey восстановлен
recoveryKey.recover.resetMasterkeyFileSuccess.description=Теперь вы можете разблокировать хранилище с помощью пароля.
# Recover Vault Config File and/or Masterkey
@@ -675,8 +644,6 @@ decryptNames.filePicker.title=Выберите зашифрованный фай
decryptNames.filePicker.extensionDescription=Файл, зашифрованный Cryptomator
decryptNames.copyTable.tooltip=Скопировать таблицу
decryptNames.clearTable.tooltip=Очистить таблицу
decryptNames.column.encrypted=Зашифровано
decryptNames.column.decrypted=Расшифровано
decryptNames.copyHint=Скопировать содержимое ячейки с %s
decryptNames.dropZone.message=Перетащите файлы или нажмите для выбора
decryptNames.dropZone.error.vaultInternalFiles=Выбраны внутренние файлы хранилища с нерасшифрованными именами
@@ -689,31 +656,23 @@ decryptNames.dropZone.error.generic=Не удалось расшифровать
eventView.title=События
eventView.filter.allVaults=Все
eventView.clearListButton.tooltip=Очистить список
eventView.filterVaults=Фильтр по хранилищу
eventView.cell.actionsButton.tooltip=Действия события
## event list entries
eventView.entry.vaultLocked.description=Разблокируйте "%s" для деталей
eventView.entry.conflictResolved.message=Решённый конфликт
eventView.entry.conflictResolved.showDecrypted=Показать расшифрованный файл
eventView.entry.conflictResolved.copyDecrypted=Скопировать расшифрованный путь
eventView.entry.conflict.message=Не удалось решить конфликты
eventView.entry.conflict.showDecrypted=Показать расшифрованный исходный файл
eventView.entry.conflict.copyDecrypted=Скопировать расшифрованный исходный путь
eventView.entry.conflict.showEncrypted=Показать конфликтующий зашифрованный файл
eventView.entry.conflict.copyEncrypted=Скопировать конфликтующий зашифрованный путь
eventView.entry.decryptionFailed.message=Ошибка дешифрования
eventView.entry.decryptionFailed.showEncrypted=Показать зашифрованный файл
eventView.entry.decryptionFailed.copyEncrypted=Скопировать зашифрованный путь
eventView.entry.brokenDirFile.message=Повреждённая ссылка на папку
eventView.entry.brokenDirFile.showEncrypted=Показать повреждённую зашифрованную ссылку
eventView.entry.brokenDirFile.copyEncrypted=Скопировать путь повреждённой ссылки
eventView.entry.brokenFileNode.message=Повреждённый узел файловой системы
eventView.entry.brokenFileNode.showEncrypted=Показать повреждённый зашифрованный узел
eventView.entry.brokenFileNode.copyEncrypted=Скопировать путь повреждённого зашифрованного узла
eventView.entry.brokenFileNode.copyDecrypted=Скопировать расшифрованный путь
eventView.entry.inUse.message=Файл используется
eventView.entry.inUse.showDecrypted=Показать расшифрованный файл
eventView.entry.inUse.showEncrypted=Показать зашифрованный файл
eventView.entry.inUse.copyUserAndDevice=Скопировать блокирующее имя пользователя и устройства
eventView.entry.inUse.ignoreLock=Игнорировать статус использования
# Notifications
## FileIsInUse Notification
notification.inUse.message=Файл используется на другом устройстве
notification.inUse.description=Файл открыт %s на %s. Попросите закрыть файл и завершить синхронизацию. Вы можете проигнорировать статус и открыть его, но есть риск конфликтов или перезаписи новых изменений.
notification.inUse.action=Игнорировать статус использования

View File

@@ -13,8 +13,6 @@ generic.button.done=සම්පූර්ණයි
generic.button.next=ඊළඟ
generic.button.print=මුද්‍රණය කරන්න
## Vault state
# Error
error.message=දෝෂය: %s
error.technicalDetails=විස්තර:
@@ -55,7 +53,6 @@ unlock.unlockBtn=අගුළුහරින්න
### Registration Success
hub.registerSuccess.unlockBtn=අගුළුහරින්න
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -101,7 +98,7 @@ hub.registerSuccess.unlockBtn=අගුළුහරින්න
# Main Window
## Vault List
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -168,7 +165,3 @@ hub.registerSuccess.unlockBtn=අගුළුහරින්න
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,19 +12,10 @@ generic.button.close=Zavrieť
generic.button.copy=Kopírovať
generic.button.copied=Skopírované!
generic.button.done=Hotovo
generic.button.previous=Predošlý
generic.button.next=Ďalej
generic.button.print=Tlač
generic.button.remove=Odstrániť
## Vault state
vault.state.locked=Zamknutý
vault.state.unlocked=Odomknutý
vault.state.missing=Chýbajúci
vault.state.migrationNeeded=Vyžaduje sa migrácia
vault.state.processing=Spracovávanie
vault.state.error=Chyba
# Error
error.message=Vyskytla sa chyba
error.description=Cryptomator toto neočakával. Môžte nahliadnuť do existujúcich riešení tejto chyby. Alebo v prípade že zatiaľ nebola nahlásená, môžte to slobodne urobiť.
@@ -178,9 +169,6 @@ hub.registerSuccess.message=Zariadenie registrované
hub.registerSuccess.unlockBtn=Odomknúť
### Registration Failed
hub.registerFailed.message=Registrácia zariadenia zlyhala
### Archived
hub.archived.message=Trezor je archivovaný
hub.archived.description=Tento trezor bol archivovaný a nie je viac dostupný. Prosím kontaktujte jeho vlastníka.
### Unauthorized
hub.unauthorized.message=Prístup zamietnutý
hub.unauthorized.description=Nie ste autorizovaný na otvorenie tohto trezora. Kontaktujte vlastníka trezora pre vyžiadanie prístupu.
@@ -261,8 +249,6 @@ health.check.detail.checkFinishedAndFound=Kontrola skončila. Prosím pozrite si
health.check.detail.checkFailed=Kontrola skončila kôli chybe.
health.check.detail.checkCancelled=Kontrola bola zrušená.
health.check.detail.listFilters.label=Filter
health.check.detail.filterSeverity=Filtrovať podľa závažnosti
health.check.detail.filterFixState=Filtrovať podľa stavu opravy
health.check.detail.fixAllSpecificBtn=Opraviť všetko tohto typu
health.check.exportBtn=Exportovať správu
## Result view
@@ -335,13 +321,8 @@ preferences.updates.lastUpdateCheck.never=nikdy
preferences.updates.lastUpdateCheck.recently=nedávno
preferences.updates.lastUpdateCheck.daysAgo=pred %s dňami
preferences.updates.lastUpdateCheck.hoursAgo=pred %s hodinami
preferences.updates.prohibitedDueToUnlockedVaults.1=Prosím
preferences.updates.prohibitedDueToUnlockedVaults.2=zamknúť Vaše trezory
preferences.updates.prohibitedDueToUnlockedVaults.3=nainštalovať aktualizáciu.
preferences.updates.checkFailed=Kontrola aktualizácie zlyhala. Prosím skontrolujte pripojenie k internetu a skúste znovu.
preferences.updates.updateFailed=Aktualizácia zlyhala. Prosím aktualizujte manuálne.
preferences.updates.upToDate=Cryptomator je aktuálny.
preferences.updates.visitDownloadPage=Navštíviť stránku pre stiahnutie
## Contribution
preferences.contribute=Podporte nás
@@ -352,7 +333,6 @@ preferences.contribute.promptText=Vlož sem kód certifikátu podporovateľa
preferences.contribute.thankYou=Ďakujeme za podporu tvorby open-source Cryptomator-a!
preferences.contribute.donate=Podporiť
preferences.contribute.sponsor=Sponzor
preferences.contribute.removeCert.tooltip=Odstrániť certifikát
### Remove License Key Dialog
removeCert.title=Odstrániť certifikát
@@ -362,7 +342,6 @@ removeCert.description=Funkcionality jadra Cryptomator-a nie sú týmto dotknut
## About
preferences.about=O programe
preferences.about.thirdPartyLicenses=Licencie tretích strán
# Vault Statistics
stats.title=Štatistiky pre %s
@@ -401,8 +380,6 @@ stats.access.total=Celkovo sprístupnené: %d
# Main Window
## Vault List
main.vaultlist=Trezory
main.vaultlist.listEntry=Trezor %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Kliknite sem pre pridanie trezora
main.vaultlist.contextMenu.remove=Odstrániť…
main.vaultlist.contextMenu.lock=Uzamknúť
@@ -412,18 +389,13 @@ main.vaultlist.contextMenu.vaultoptions=Ukáž možnosti trezora
main.vaultlist.contextMenu.reveal=Odkry disk
main.vaultlist.contextMenu.share=Zdieľať…
main.vaultlist.addVaultBtn.menuItemNew=Vytvoriť Nový trezor…
main.vaultlist.addVaultBtn.menuItemExisting=Otvoriť existujúci trezor…
main.vaultlist.addVaultButton.tooltip=Pridať trezor
main.vaultlist.showEventsButton.tooltip=Otvoriť zobrazenie udalosti
main.vaultlist.showPreferencesButton.tooltip=Ukázať preferencie
##Notification
##Notificaition
main.notification.updateAvailable=Aktualizácia je k dispozícii.
main.notification.support=O aplikácii Cryptomator.
main.notification.closeButton.tooltip=Zavrieť informačnú lištu
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Ďakujeme Vám že ste si zvolili Cryptomator pre ochranu Vaších súborov. Ak potrebujete akúkoľvek pomoc, pozrite si našu príručku ako začať:
main.vaultDetail.storageLocation=Lokácia uloženia trezora
### Locked
main.vaultDetail.lockedStatus=Uzamknutý
main.vaultDetail.unlockBtn=Odomknúť…
@@ -479,7 +451,6 @@ vaultOptions.general=Hlavné
vaultOptions.general.vaultName=Názov trezoru
vaultOptions.general.autoLock.lockAfterTimePart1=Uzamknutie po uplynutí nečinnosti
vaultOptions.general.autoLock.lockAfterTimePart2=minút
vaultOptions.general.autoLock.accessibleText=Časový limit uzamknutia v minútach
vaultOptions.general.unlockAfterStartup=Odomknúť trezor pri spustení Cryptomator-a
vaultOptions.general.actionAfterUnlock=Po úspešnom odomknutí
vaultOptions.general.actionAfterUnlock.ignore=Nič nerob
@@ -509,7 +480,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Zabudnúť uložené heslo
vaultOptions.masterkey.recoveryKeyExplanation=Kľúč pre obnovu je Vašou jedinou cestou k obnove prístupu do trezoru v prípade straty hesla.
vaultOptions.masterkey.showRecoveryKeyBtn=Ukázať klúč obnovy
vaultOptions.masterkey.recoverPasswordBtn=Obnoviť heslo
vaultOptions.masterkey.missingMasterkeyFile=Tieto možnosti sú dostupne ak je master-key obsiahnutý v adresári trezora.
## Hub
vaultOptions.hub=Obnova
vaultOptions.hub.convertInfo=Kľúč na obnovenie môžete v prípade núdze použiť na konverziu tohto trezora Hub na trezor založený na hesle.
@@ -619,7 +589,6 @@ shareVault.title=Zdielať trezor
shareVault.hubAd.authentication=* Silná autentifikácia
shareVault.hubAd.encryption=* Šifrovanie end-to-end
shareVault.hub.openHub=Otvoriť Cryptomator Hub
# Decrypt File Names
decryptNames.title=Dešifrovať názvy súborov
@@ -627,8 +596,6 @@ decryptNames.filePicker.title=Vyberte zašifrovaný súbor
decryptNames.filePicker.extensionDescription=Cryptomator zašifrovaný súbor
decryptNames.copyTable.tooltip=Kopírovať tabuľku
decryptNames.clearTable.tooltip=Vymazať tabuľku
decryptNames.column.encrypted=Zašifrované
decryptNames.column.decrypted=Dešifrované
decryptNames.copyHint=Kopírovať obsah bunky s %s
decryptNames.dropZone.message=Presuňte súbory alebo ich kliknutím vyberte
decryptNames.dropZone.error.vaultInternalFiles=Interné súbory trezora bez vybratého názvu, ktorý je možné dešifrovať
@@ -641,28 +608,23 @@ decryptNames.dropZone.error.generic=Nepodarilo sa dešifrovať názvy súborov
eventView.title=Udalosti
eventView.filter.allVaults=Všetko
eventView.clearListButton.tooltip=Vymazať zoznam
eventView.filterVaults=Filtrovať podľa trezora
eventView.cell.actionsButton.tooltip=Akcie udalostí
## event list entries
eventView.entry.vaultLocked.description=Podrobnosti získate odomknutím „%s“
eventView.entry.conflictResolved.message=Vyriešený konflikt
eventView.entry.conflictResolved.showDecrypted=Zobraziť dešifrovaný súbor
eventView.entry.conflictResolved.copyDecrypted=Skopírujte dešifrovanú cestu
eventView.entry.conflict.message=Riešenie konfliktu zlyhalo
eventView.entry.conflict.showDecrypted=Zobraziť dešifrovaný pôvodný súbor
eventView.entry.conflict.copyDecrypted=Kopírovať dešifrovanú, pôvodnú cestu
eventView.entry.conflict.showEncrypted=Zobraziť konfliktný zašifrovaný súbor
eventView.entry.conflict.copyEncrypted=Kopírovať konfliktnú zašifrovanú cestu
eventView.entry.decryptionFailed.message=Dešifrovanie zlyhalo
eventView.entry.decryptionFailed.showEncrypted=Zobraziť zašifrovaný súbor
eventView.entry.decryptionFailed.copyEncrypted=Skopírujte zašifrovanú cestu
eventView.entry.brokenDirFile.message=Nefunkčný odkaz na adresár
eventView.entry.brokenDirFile.showEncrypted=Zobraziť nefunkčný, šifrovaný odkaz
eventView.entry.brokenDirFile.copyEncrypted=Kopírovať cestu nefunkčného odkazu
eventView.entry.brokenFileNode.message=Poškodený uzol súborového systému
eventView.entry.brokenFileNode.showEncrypted=Zobraziť nefunkčný, zašifrovaný uzol
eventView.entry.brokenFileNode.copyEncrypted=Kopírovať cestu nefunkčného, šifrovaného uzla
eventView.entry.brokenFileNode.copyDecrypted=Skopírujte dešifrovanú cestu
eventView.entry.inUse.message=Súbor sa používa
eventView.entry.inUse.showDecrypted=Zobraziť dešifrovaný súbor
eventView.entry.inUse.showEncrypted=Zobraziť zašifrovaný súbor
eventView.entry.inUse.copyUserAndDevice=Kopírovať zamykaného užívateľa a meno zariadenia
# Notifications
## FileIsInUse Notification
notification.inUse.message=Súbor je používaný iným zariadením

View File

@@ -11,14 +11,10 @@ generic.button.close=Zapri
generic.button.copy=Kopiraj
generic.button.copied=Kopirano!
generic.button.done=Opravljeno
generic.button.previous=Prejšnji
generic.button.next=Naslednji
generic.button.print=Natisni
generic.button.remove=Odstrani
## Vault state
vault.state.error=Napaka
# Error
error.message=Prišlo je do napake
error.description=Cryptomator ni pričakoval, da se bo to zgodilo. Za to napako lahko poiščete obstoječe rešitve. Če pa to še ni bilo prijavljeno, lahko to storite.
@@ -81,7 +77,6 @@ hub.register.registerBtn=Registracija
### Registration Success
hub.registerSuccess.unlockBtn=Odkleni
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -135,12 +130,10 @@ preferences.updates.lastUpdateCheck.daysAgo=%s dni nazaj
# Main Window
## Vault List
main.vaultlist=Trezorji
main.vaultlist.contextMenu.lock=Zakleni
main.vaultlist.contextMenu.unlockNow=Odkleni zdaj
main.vaultlist.contextMenu.share=Deli…
main.vaultlist.addVaultButton.tooltip=Dodaj trezor
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -217,7 +210,3 @@ contactHubVaultOwner.title=Hub trezor
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -15,8 +15,6 @@ generic.button.next=Dalje
generic.button.print=Štampaj
generic.button.remove=Уклони
## Vault state
# Error
# Defaults
@@ -110,7 +108,6 @@ unlock.success.revealBtn=Otvori disk
### Registration Success
hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -223,8 +220,7 @@ main.vaultlist.contextMenu.unlock=Откључај…
main.vaultlist.contextMenu.unlockNow=Otključaj sada
main.vaultlist.contextMenu.vaultoptions=Прикажи опције сефа
main.vaultlist.contextMenu.reveal=Otvori disk
main.vaultlist.addVaultButton.tooltip=Dodavanje safa
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Хвала вам што сте одабрали Cryptomator за заштиту ваших података. Ако вам је потребна помоћ, прегледајте наше корисничко упутство:
@@ -356,7 +352,3 @@ quit.lockAndQuitBtn=Zaključaj i Izađi
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -14,8 +14,6 @@ generic.button.done=Završeno
generic.button.next=Dalje
generic.button.print=Štampaj
## Vault state
# Error
# Defaults
@@ -102,7 +100,6 @@ unlock.success.revealBtn=Otvori disk
### Registration Success
hub.registerSuccess.unlockBtn=Otključaj
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -198,8 +195,7 @@ stats.decr.total.data.gib=Dešifrovano podataka: %.1f GiB
main.vaultlist.contextMenu.lock=Zaključaj
main.vaultlist.contextMenu.unlockNow=Otključaj sada
main.vaultlist.contextMenu.reveal=Otvori disk
main.vaultlist.addVaultButton.tooltip=Dodavanje safa
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -275,7 +271,3 @@ vaultOptions.masterkey.changePasswordBtn=Promena lozinke
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,19 +12,10 @@ generic.button.close=Stäng
generic.button.copy=Kopiera
generic.button.copied=Kopierad!
generic.button.done=Klar
generic.button.previous=Föregående
generic.button.next=Nästa
generic.button.print=Skriv ut
generic.button.remove=Radera
## Vault state
vault.state.locked=Låst
vault.state.unlocked=Upplåst
vault.state.missing=Saknas
vault.state.migrationNeeded=Migrering krävs
vault.state.processing=Bearbetas
vault.state.error=Fel
# Error
error.message=Fel: %s
error.description=Hoppsan! Cryptomator stötte på något oväntat. Du kan leta upp befintliga lösningar för detta fel. Om det inte har rapporterats ännu får du gärna rapportera in felet.
@@ -186,9 +177,6 @@ hub.registerSuccess.legacy.description=För att komma åt valvet måste din enhe
hub.registerFailed.message=Enhetsregistrering misslyckades
hub.registerFailed.description.generic=Ett fel uppstod i registreringsprocessen. För mer information, titta in i programloggen.
hub.registerFailed.description.deviceAlreadyExists=Denna enhet är redan registrerad för en annan användare. Försök att ändra användarkontot eller använda en annan enhet.
### Archived
hub.archived.message=Valvet arkiverades
hub.archived.description=Detta valv har arkiverats och är inte längre tillgängligt. Kontakta valvägaren.
### Unauthorized
hub.unauthorized.message=Åtkomst nekad
hub.unauthorized.description=Du har inte behörighet att öppna detta valv. Kontakta valvets ägare för att begära åtkomst.
@@ -269,8 +257,6 @@ health.check.detail.checkFinishedAndFound=Kontrollen är slutförd. Vänligen gr
health.check.detail.checkFailed=Kontrollen avslutades på grund av ett fel.
health.check.detail.checkCancelled=Kontrollen avbröts.
health.check.detail.listFilters.label=Filter
health.check.detail.filterSeverity=Filtrera efter svårighetsgrad
health.check.detail.filterFixState=Filtrera efter korrigeringsläge
health.check.detail.fixAllSpecificBtn=Fixa liknande fel
health.check.exportBtn=Exportera rapport
## Result view
@@ -343,13 +329,8 @@ preferences.updates.lastUpdateCheck.never=aldrig
preferences.updates.lastUpdateCheck.recently=nyligen
preferences.updates.lastUpdateCheck.daysAgo=%s dagar sedan
preferences.updates.lastUpdateCheck.hoursAgo=%s timmar sedan
preferences.updates.prohibitedDueToUnlockedVaults.1=Vänligen
preferences.updates.prohibitedDueToUnlockedVaults.2=lås dina valv
preferences.updates.prohibitedDueToUnlockedVaults.3=för att installera uppdateringen.
preferences.updates.checkFailed=Det gick inte att söka efter uppdateringar. Kontrollera din internetanslutning eller försök igen senare.
preferences.updates.updateFailed=Uppdateringen misslyckades. Vänligen installera uppdateringen manuellt.
preferences.updates.upToDate=Cryptomator är uppdaterad.
preferences.updates.visitDownloadPage=Besök nedladdningssidan
## Contribution
preferences.contribute=Stöd oss
@@ -360,7 +341,6 @@ preferences.contribute.promptText=Klistra in supportercertifikats-koden här
preferences.contribute.thankYou=Tack för att du stöder Cryptomators utveckling med öppen källkod!
preferences.contribute.donate=Donera
preferences.contribute.sponsor=Sponsor
preferences.contribute.removeCert.tooltip=Ta bort certifikat
### Remove License Key Dialog
removeCert.title=Ta bort certifikat
@@ -370,7 +350,6 @@ removeCert.description=Cryptomators kärnfunktioner påverkas inte av detta. Åt
## About
preferences.about=Om
preferences.about.thirdPartyLicenses=Tredjepartslicenser
# Vault Statistics
stats.title=Statistik för %s
@@ -409,8 +388,6 @@ stats.access.total=Totalt antal åtkomster: %d
# Main Window
## Vault List
main.vaultlist=Valv
main.vaultlist.listEntry=Valv %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Klicka här för att lägga till valv
main.vaultlist.contextMenu.remove=Ta bort…
main.vaultlist.contextMenu.lock=Lås
@@ -422,17 +399,13 @@ main.vaultlist.contextMenu.share=Dela…
main.vaultlist.addVaultBtn.menuItemNew=Skapa nytt valv…
main.vaultlist.addVaultBtn.menuItemExisting=Öppna befintligt valv…
main.vaultlist.addVaultBtn.menuItemRecover=Återställ befintligt valv…
main.vaultlist.addVaultButton.tooltip=Lägg till valv
main.vaultlist.showEventsButton.tooltip=Öppna händelsevy
main.vaultlist.showPreferencesButton.tooltip=Visa inställningar
##Notification
##Notificaition
main.notification.updateAvailable=Uppdatering tillgänglig.
main.notification.support=Stöd Cryptomator.
main.notification.closeButton.tooltip=Stäng informationsfältet
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Tack för att du väljer Cryptomator för att skydda dina filer. Om du behöver hjälp kan du kolla in våra guider:
main.vaultDetail.storageLocation=Plats för valvlagring
### Locked
main.vaultDetail.lockedStatus=LÅST
main.vaultDetail.unlockBtn=Lås upp…
@@ -490,7 +463,6 @@ vaultOptions.general=Allmänt
vaultOptions.general.vaultName=Valvnamn
vaultOptions.general.autoLock.lockAfterTimePart1=Lås när inaktiv i
vaultOptions.general.autoLock.lockAfterTimePart2=minuter
vaultOptions.general.autoLock.accessibleText=Tidsgräns för inaktivitet, minuter
vaultOptions.general.unlockAfterStartup=Lås upp valvet när Cryptomator startas
vaultOptions.general.actionAfterUnlock=Efter lyckad upplåsning
vaultOptions.general.actionAfterUnlock.ignore=Gör ingenting
@@ -521,7 +493,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Ta bort sparat lösenord
vaultOptions.masterkey.recoveryKeyExplanation=En återställningsnyckel är ditt enda sätt att återställa åtkomst till ett valv om du förlorar ditt lösenord.
vaultOptions.masterkey.showRecoveryKeyBtn=Visa återsällningsnyckel
vaultOptions.masterkey.recoverPasswordBtn=Återställ lösenord
vaultOptions.masterkey.missingMasterkeyFile=Dessa alternativ är endast tillgängliga om filen med huvudnyckeln finns i valvkatalogen.
## Hub
vaultOptions.hub=Återställning
vaultOptions.hub.convertInfo=Du kan använda återställningsnyckeln för att konvertera detta Hub valv till ett lösenordsbaserat valv i en nödsituation.
@@ -550,8 +521,6 @@ recoveryKey.recover.recoverBtn=Återställ
recoveryKey.recover.resetSuccess.message=Lösenord återställt
recoveryKey.recover.resetSuccess.description=Du kan låsa upp valvet med det nya lösenordet.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Valvkonfigurationen återställd
recoveryKey.recover.resetMasterkeyFileSuccess.message=Huvudnyckeln återställd
recoveryKey.recover.resetMasterkeyFileSuccess.description=Nu kan du låsa upp valvet med lösenordet.
# Recover Vault Config File and/or Masterkey
@@ -659,8 +628,6 @@ decryptNames.filePicker.title=Välj krypterad fil
decryptNames.filePicker.extensionDescription=Cryptomator krypterad fil
decryptNames.copyTable.tooltip=Kopiera tabell
decryptNames.clearTable.tooltip=Rensa tabell
decryptNames.column.encrypted=Krypterad
decryptNames.column.decrypted=Dekrypterad
decryptNames.copyHint=Kopiera cellinnehåll med %s
decryptNames.dropZone.message=Släpp filer eller klicka för att välja
decryptNames.dropZone.error.vaultInternalFiles=Interna valvfiler utan dekrypterbart namn valdes
@@ -673,25 +640,23 @@ decryptNames.dropZone.error.generic=Det gick inte att dekryptera filnamn
eventView.title=Händelser
eventView.filter.allVaults=Samtliga
eventView.clearListButton.tooltip=Rensa listan
eventView.filterVaults=Filtrera efter valv
## event list entries
eventView.entry.vaultLocked.description=Lås upp "%s" för detaljer
eventView.entry.conflictResolved.message=Löst konflikt
eventView.entry.conflictResolved.showDecrypted=Visa dekrypterad fil
eventView.entry.conflictResolved.copyDecrypted=Kopiera dekrypterad sökväg
eventView.entry.conflict.message=Konfliktlösning misslyckades
eventView.entry.conflict.showDecrypted=Visa dekrypterad, originalfil
eventView.entry.conflict.copyDecrypted=Kopiera dekrypterad, ursprunglig sökväg
eventView.entry.conflict.showEncrypted=Visa krypterad fil som inte kunde synkroniseras
eventView.entry.conflict.copyEncrypted=Kopiera krypterad sökväg som inte kunde synkroniseras
eventView.entry.decryptionFailed.message=Dekryptering misslyckades
eventView.entry.decryptionFailed.showEncrypted=Visa krypterad fil
eventView.entry.decryptionFailed.copyEncrypted=Kopiera krypterad sökväg
eventView.entry.brokenDirFile.message=Trasig kataloglänk
eventView.entry.brokenDirFile.showEncrypted=Visa trasig, krypterad länk
eventView.entry.brokenDirFile.copyEncrypted=Kopiera sökväg för trasig länk
eventView.entry.brokenFileNode.message=Trasig filsystemsnod
eventView.entry.brokenFileNode.showEncrypted=Visa trasig krypterad nod
eventView.entry.brokenFileNode.copyEncrypted=Kopiera sökväg för trasig, krypterad nod
eventView.entry.brokenFileNode.copyDecrypted=Kopiera dekrypterad sökväg
eventView.entry.inUse.showDecrypted=Visa dekrypterad fil
eventView.entry.inUse.showEncrypted=Visa krypterad fil
eventView.entry.inUse.copyUserAndDevice=Kopiera blockerande användare och enhet
# Notifications
## FileIsInUse Notification

View File

@@ -11,14 +11,10 @@ generic.button.close=Futa
generic.button.copy=Nakili
generic.button.copied=Nakiliwa!
generic.button.done=Tayari
generic.button.previous=Iliyotangulia
generic.button.next=Nyingine
generic.button.print=Chapisha
generic.button.remove=Ondoa
## Vault state
vault.state.error=Kosa
# Error
error.message=Kosa %s
error.description=Lo! Cryptomator haikutarajia hii kutokea. Unaweza kutafuta suluhu zilizopo za kosa hili. Au ikiwa haijaripotiwa bado, jisikie huru kufanya hivyo.
@@ -145,7 +141,6 @@ hub.register.nameLabel=Jina la Kifaa
### Registration Success
hub.registerSuccess.unlockBtn=Fungua
### Registration Failed
### Archived
### Unauthorized
hub.unauthorized.message=Ufikiaji umekataliwa
### Requires Account Initialization
@@ -333,7 +328,6 @@ stats.access.total=Jumla ya ufikiaji: %d
# Main Window
## Vault List
main.vaultlist=Kuba
main.vaultlist.emptyList.onboardingInstruction=Bofya hapa ili kuongeza kuba
main.vaultlist.contextMenu.remove=Ondoa…
main.vaultlist.contextMenu.lock=Funga
@@ -341,8 +335,7 @@ main.vaultlist.contextMenu.unlock=Fungua…
main.vaultlist.contextMenu.unlockNow=Fungua Sasa
main.vaultlist.contextMenu.vaultoptions=Onyesha Machaguo ya Kuba
main.vaultlist.contextMenu.reveal=Fichua Kiendeshaji
main.vaultlist.addVaultButton.tooltip=Ongeza Kuba
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Shukrani kwa kuchagua Cryptomator kulinda faili zako. Ikiwa unahitaji msaada wowote, angalia miongozo yetu ya kuanza:
@@ -503,7 +496,3 @@ dokanySupportEnd.preferencesBtn=Fungua Mapendeleo
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -11,13 +11,10 @@ generic.button.close=மூடு
generic.button.copy=நகலெடு
generic.button.copied=நகலெடுக்கப்பட்டது!
generic.button.done=முடிந்தது
generic.button.previous=முந்தைய
generic.button.next=அடுத்து
generic.button.print=அச்சிடு
generic.button.remove=நீக்கு
## Vault state
# Error
error.message=ஒரு பிழை ஏற்பட்டுள்ளது
error.description=இது நடக்கும் என்று Cryptomator எதிர்பார்க்கவில்லை. இந்தப் பிழைக்கான ஏற்கனவே உள்ள தீர்வுகளை நீங்கள் காணலாம். அல்லது இது இன்னும் புகாரளிக்கப்படவில்லை என்றால், அவ்வாறு செய்யத் தயங்க வேண்டாம்.
@@ -126,7 +123,6 @@ unlock.success.revealBtn=இயக்ககத்தை வெளிப்பட
### Registration Success
hub.registerSuccess.unlockBtn=பூட்டுநீக்கு
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -235,8 +231,7 @@ main.vaultlist.contextMenu.unlock=பூட்டுநீக்கு…
main.vaultlist.contextMenu.unlockNow=இப்போது திறக்கவும்
main.vaultlist.contextMenu.vaultoptions=பெட்டக விருப்பங்களைக் காட்டு
main.vaultlist.contextMenu.reveal=இயக்ககத்தை வெளிப்படுத்து
main.vaultlist.addVaultButton.tooltip=பெட்டகத்தைச் சேர்க்கவும்
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=உங்கள் கோப்புகளைப் பாதுகாக்க Cryptomator -ஐத் தேர்ந்தெடுத்ததற்கு நன்றி. உங்களுக்கு ஏதேனும் உதவி தேவைப்பட்டால், எங்கள் தொடக்க வழிகாட்டிகளைப் பார்க்கவும்:
@@ -340,7 +335,3 @@ quit.forced.forceAndQuitBtn=கட்டாயப்படுத்தி வெ
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -2,11 +2,8 @@
# Generics
## Button
generic.button.previous=మునుపటి
generic.button.remove=తొలగించు
## Vault state
# Error
# Defaults
@@ -40,7 +37,6 @@ generic.button.remove=తొలగించు
### Register Device Legacy
### Registration Success
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -89,7 +85,7 @@ preferences.interface.theme.light=కాంతి
# Main Window
## Vault List
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -156,7 +152,3 @@ preferences.interface.theme.light=కాంతి
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=ปิด
generic.button.copy=คัดลอก
generic.button.copied=คัดลอกแล้ว!
generic.button.done=เสร็จสิ้น
generic.button.previous=ก่อนหน้า
generic.button.next=ถัดไป
generic.button.print=พิมพ์
generic.button.remove=ลบ
## Vault state
vault.state.error=ข้อผิดพลาด
# Error
error.message=เกิดข้อผิดพลาด
error.description=ไม่นะ! Cryptomator ไม่ได้ต้องการให้สิ่งนี้เกิดขึ้น คุณสามารถค้นหาข้อผิดพลาดนี้ได้ หากค้นหาไม่เจอ โปรดรายงาน
@@ -179,7 +175,6 @@ hub.registerSuccess.legacy.description=ในการเข้าถึง vaul
hub.registerFailed.message=การลงทะเบียนอุปกรณ์ล้มเหลว
hub.registerFailed.description.generic=เกิดข้อผิดพลาดในการลงทะเบียน สำหรับรายละเอียดเพิ่มเติม โปรดตรวจสอบบันทึกของแอปพลิเคชัน
hub.registerFailed.description.deviceAlreadyExists=อุปกรณ์นี้ลงทะเบียนไว้แล้วสำหรับผู้ใชอื่น โปรดลองเปลี่ยนบัญชีผู้ใช้หรือลงทะเบียนอุปกรณ์อื่น
### Archived
### Unauthorized
hub.unauthorized.message=การเข้าถึงถูกปฏิเสธ
### Requires Account Initialization
@@ -333,7 +328,6 @@ stats.access.current=การเข้าถึง: %d
# Main Window
## Vault List
main.vaultlist=Vaults
main.vaultlist.emptyList.onboardingInstruction=คลิกที่นี่เพื่อเพิ่ม vault
main.vaultlist.contextMenu.remove=ลบ...
main.vaultlist.contextMenu.lock=ล็อก
@@ -342,8 +336,7 @@ main.vaultlist.contextMenu.unlockNow=ปลดล็อกตอนนี้
main.vaultlist.contextMenu.vaultoptions=แสดงตัวเลือก Vault
main.vaultlist.contextMenu.reveal=เปิดไดรฟ์
main.vaultlist.contextMenu.share=แชร์...
main.vaultlist.addVaultButton.tooltip=เพิ่ม Vault
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -485,7 +478,3 @@ shareVault.hubAd.encryption=• เข้ารหัสจากต้นทา
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,18 +12,10 @@ generic.button.close=Kapat
generic.button.copy=Kopyala
generic.button.copied=Kopyalandı!
generic.button.done=Tamam
generic.button.previous=Önceki
generic.button.next=İleri
generic.button.print=Yazdır
generic.button.remove=Kaldır
## Vault state
vault.state.locked=Kilitli
vault.state.unlocked=Kilidi açık
vault.state.missing=Kayıt
vault.state.processing=İşleniyor
vault.state.error=Hata
# Error
error.message=Bir hata oluştu
error.description=Cryptomator bunun olmasını beklemiyordu. Bu hata için mevcut çözümlere bakabilirsiniz. Ya da henüz bildirilmediyse, bunu raporlamaktan çekinmeyin.
@@ -183,8 +175,6 @@ hub.registerSuccess.legacy.description=Kasaya erişmek için cihazınızın kasa
hub.registerFailed.message=Cihaz kaydı başarısız oldu
hub.registerFailed.description.generic=Kayıt işleminde bir hata oluştu. Daha fazla bilgi için uygulama günlüğüne bakın.
hub.registerFailed.description.deviceAlreadyExists=Bu cihaz zaten farklı bir kullanıcı için kayıtlı. Kullanıcı hesabını değiştirmeyi veya farklı bir cihaz kullanmayı deneyin.
### Archived
hub.archived.message=Kasa arşivlendi
### Unauthorized
hub.unauthorized.message=Erişim engellendi
hub.unauthorized.description=Bu kasayı açma yetkiniz yok. Erişim talebinde bulunmak için kasanın sahibiyle iletişime geçin.
@@ -337,7 +327,6 @@ preferences.updates.lastUpdateCheck.never=asla
preferences.updates.lastUpdateCheck.recently=az önce
preferences.updates.lastUpdateCheck.daysAgo=%s gün önce
preferences.updates.lastUpdateCheck.hoursAgo=%s saat önce
preferences.updates.prohibitedDueToUnlockedVaults.1=Lütfen
preferences.updates.checkFailed=Güncelleme kontrolü başarısız oldu. Lütfen internet bağlantınızı kontrol edin veya daha sonra tekrar deneyin.
preferences.updates.upToDate=Cryptomator güncel.
@@ -397,7 +386,6 @@ stats.access.total=Toplam erişim: %d
# Main Window
## Vault List
main.vaultlist=Kasalar
main.vaultlist.emptyList.onboardingInstruction=Kasa eklemek için buraya tıklayın
main.vaultlist.contextMenu.remove=Kaldır…
main.vaultlist.contextMenu.lock=Kilitle
@@ -406,10 +394,7 @@ main.vaultlist.contextMenu.unlockNow=Kilidi Şimdi Aç
main.vaultlist.contextMenu.vaultoptions=Kasa Ayarlarını Göster
main.vaultlist.contextMenu.reveal=Sürücüyü Göster
main.vaultlist.contextMenu.share=Paylaş…
main.vaultlist.addVaultButton.tooltip=Kasa ekle
main.vaultlist.showEventsButton.tooltip=Etkinlik görünümünü aç
main.vaultlist.showPreferencesButton.tooltip=Tercihleri göster
##Notification
##Notificaition
main.notification.updateAvailable=Güncelleme mevcut.
main.notification.support=Cryptomator'a destek olun.
## Vault Detail
@@ -614,24 +599,8 @@ shareVault.hub.instruction.2=2. Cryptomator Hub'da ekip üyesine erişim izni ve
shareVault.hub.openHub=Cryptomator Hub'ı
# Decrypt File Names
decryptNames.copyTable.tooltip=Tabloyu kopyala
decryptNames.clearTable.tooltip=Tabloyu temizle
decryptNames.column.encrypted=Şifrelendi
decryptNames.column.decrypted=Şifresi çözüldü
# Event View
eventView.title=Etkinlikler
eventView.filter.allVaults=Tümü
eventView.clearListButton.tooltip=Listeyi temizle
eventView.filterVaults=Kasayı süz
## event list entries
eventView.entry.inUse.message=Kullanılan dosya
eventView.entry.inUse.ignoreLock=Kullanım durumunu yok say
# Notifications
## FileIsInUse Notification
notification.inUse.message=Dosya başka bir cihazda kullanılıyor
notification.inUse.description=Dosya %s tarafından %s tarihinde açıldı. Onlardan dosyayı kapatmalarını ve senkronizasyonun tamamlanmasını beklemelerini isteyin. Dosyayı şimdi açmak için durumu görmezden gelebilirsiniz, ancak bu çakışmalara veya yeni değişikliklerin üzerine yazılmasına neden olabilir.
notification.inUse.action=Kullanım Durumunu Yok Say

View File

@@ -12,12 +12,9 @@ generic.button.close=ياپ
generic.button.copy=كۆچۈر
generic.button.copied=كۆچۈرۈلدى!
generic.button.done=تامام
generic.button.previous=ئالدىنقىسى
generic.button.next=كېيىنكى
generic.button.print=پىرىنتلاش
## Vault state
# Error
error.message=خاتالىق كۆرۈلدى
error.description=Cryptomator بۇنداق بولۇشىنى كۈتمىگەنىدى. بۇ خاتالىق ئۈچۈن مەۋجۇت ھەل قىلىش چارىلىرىنى ئىزدىيەلەيسىز. ياكى ئەگەر دوكلات قىلىنمىغان بولسا، دوكلات قىلىشقا ئەركىن.
@@ -117,7 +114,7 @@ changepassword.finalConfirmation=ئەگەر مەن پارولۇمنى ئۇنتۇ
# Forget Password
forgetPassword.title=پارولنى ئۇنتۇش
forgetPassword.message=ساقلانغان پارولنى ئۇنتۇڭ?
forgetPassword.message=ساقلانغان پارولنى ئۇنتۇمسىز؟
forgetPassword.description=بۇ سىستېمىڭىزنىڭ ئاچقۇچ ساقلىغۇچىسىدىكى بۇ ئامبارنىڭ ساقلانغان پارولىنى ئۆچۈرىدۇ.
forgetPassword.confirmBtn=پارولنى ئۇنتۇش
@@ -153,7 +150,7 @@ hub.noKeychain.message=ئۈسكۈنە ئاچقۇچىغا كىرىش مۇمكىن
hub.noKeychain.description=Hub ئامبارلىرىنى قۇلۇپسىزلاش ئۈچۈن، ئاچقۇچ ساقلىغۇچ ئارقىلىق بىخەتەرلەشتۈرۈلگەن ئۈسكۈنە ئاچقۇچى كېرەك. داۋاملاشتۇرۇش ئۈچۈن، تەڭشەكلەردە "%s" نى قوزغىتىپ ئاچقۇچ ساقلىغۇچنى تاللاڭ.
hub.noKeychain.openBtn=تەڭشەكلەرنى ئېچىش
### Waiting
hub.auth.message=دەلىللەشنى كۈتۈۋاتىدۇ
hub.auth.message=دەلىللەش كۈتۈۋاتىدۇ...
hub.auth.description=سىز ئاپتوماتىك ھالدا كىرىش بېتىگە يۆتكىلىشىڭىز كېرەك.
hub.auth.loginLink=يۆتكەلمىدىڭىزمۇ؟ بۇ يەرنى چېكىپ ئېچىڭ.
### Receive Key
@@ -177,7 +174,6 @@ hub.registerSuccess.legacy.description=ئامبارغا كىرىش ئۈچۈن،
hub.registerFailed.message=ئۈسكۈنە تىزىملىتىش مەغلۇپ بولدى
hub.registerFailed.description.generic=تىزىملىتىش جەريانىدا بىر خاتالىق كۆرۈلدى. تەپسىلاتلار ئۈچۈن پروگرامما خاتىرىسىگە قاراڭ.
hub.registerFailed.description.deviceAlreadyExists=بۇ ئۈسكۈنە ئاللىقاچان باشقا بىر ئىشلەتكۈچى ئۈچۈن تىزىملانغان. ئىشلەتكۈچى ھېساباتىنى ئۆزگەرتىشكە ئۇرۇنۇڭ ياكى باشقا بىر ئۈسكۈنە ئىشلىتىڭ.
### Archived
### Unauthorized
hub.unauthorized.message=كىرىش رەت قىلىندى
### Requires Account Initialization
@@ -388,8 +384,7 @@ main.vaultlist.contextMenu.unlockNow=ھازىر قۇلۇپسىزلا
main.vaultlist.contextMenu.vaultoptions=ئامبار تاللانمىلىرىنى كۆرسەت
main.vaultlist.contextMenu.reveal=دىسكىنى كۆرسەت
main.vaultlist.contextMenu.share=ھەمبەھىرلە…
main.vaultlist.addVaultButton.tooltip=ئامبار قوش
##Notification
##Notificaition
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Cryptomator نى ھۆججەتلىرىڭىزنى قوغداش ئۈچۈن تاللىغىنىڭىزغا رەھمەت. ياردەمگە ئېھتىياجىڭىز بولسا، باشلاش قوللانمىلىرىمىزنى كۆرۈپ چىقىڭ:
@@ -591,7 +586,3 @@ shareVault.hub.openHub=Cryptomator Hub ئۇچۇرىنى ئېچىڭ
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -13,19 +13,10 @@ generic.button.close=Закрити
generic.button.copy=Копіювати
generic.button.copied=Скопійовано!
generic.button.done=Завершити
generic.button.previous=Попередній
generic.button.next=Далі
generic.button.print=Друкувати
generic.button.remove=Вилучити
## Vault state
vault.state.locked=Заблоковано
vault.state.unlocked=Розблоковано
vault.state.missing=Відсутній
vault.state.migrationNeeded=Необхідна міграція
vault.state.processing=Обробка
vault.state.error=Помилка
# Error
error.message=Виникла помилка
error.description=Ой! Cryptomator не очікував, що це станеться. Ви можете спробувати знайти рішення для цієї помилки. Або, якщо про неї ще не повідомляли, не соромтеся зробити це.
@@ -187,9 +178,6 @@ hub.registerSuccess.legacy.description=Щоб отримати доступ до
hub.registerFailed.message=Не вдалося зареєструвати пристрій
hub.registerFailed.description.generic=Під час реєстрації виникла помилка. Для отримання додаткової інформації перегляньте журнал програми.
hub.registerFailed.description.deviceAlreadyExists=Цей пристрій вже зареєстровано для іншого користувача. Спробуйте змінити обліковий запис або скористайтеся іншим пристроєм.
### Archived
hub.archived.message=Сховище заархівовано
hub.archived.description=Це сховище було заархівовано і більше не доступне. Зверніться до власника сховища.
### Unauthorized
hub.unauthorized.message=У доступі відмовлено
hub.unauthorized.description=Ви не авторизовані для відкриття цього сховища. Зв'яжіться з його власником, щоб отримати доступ.
@@ -270,8 +258,6 @@ health.check.detail.checkFinishedAndFound=Перевірку завершено.
health.check.detail.checkFailed=Перевірку перервано через помилку.
health.check.detail.checkCancelled=Перевірку було скасовано.
health.check.detail.listFilters.label=Фільтр
health.check.detail.filterSeverity=Фільтрувати за важливістю
health.check.detail.filterFixState=Фільтрувати за станом виправлення
health.check.detail.fixAllSpecificBtn=Виправити всі цього типу
health.check.exportBtn=Експортувати звіт
## Result view
@@ -319,7 +305,7 @@ preferences.interface.interfaceOrientation=Орієнтація інтерфей
preferences.interface.interfaceOrientation.ltr=Зліва направо
preferences.interface.interfaceOrientation.rtl=Справа наліво
preferences.interface.showTrayIcon=Показувати іконку в треї (потрібен перезапуск)
preferences.interface.compactMode=Увімкнути компактний список сховищ
preferences.interface.compactMode=Активувати компактний список сховищ
## Volume
preferences.volume=Віртуальний диск
preferences.volume.type=Тип тому за замовчуванням
@@ -336,7 +322,7 @@ preferences.volume.feature.readOnly=Монтування лише для чит
## Updates
preferences.updates=Оновлення
preferences.updates.currentVersion=Поточна версія: %s
preferences.updates.autoUpdateCheck=Автоматично перевіряти наявність оновлень
preferences.updates.autoUpdateCheck=Перевіряти наявність оновлень автоматично
preferences.updates.checkNowBtn=Перевірити зараз
preferences.updates.updateAvailable=Доступне оновлення до версії %s.
preferences.updates.lastUpdateCheck=Остання перевірка: %s
@@ -344,13 +330,8 @@ preferences.updates.lastUpdateCheck.never=ніколи
preferences.updates.lastUpdateCheck.recently=нещодавно
preferences.updates.lastUpdateCheck.daysAgo=%s дні(в) тому
preferences.updates.lastUpdateCheck.hoursAgo=%s годин(и) тому
preferences.updates.prohibitedDueToUnlockedVaults.1=Будь ласка,
preferences.updates.prohibitedDueToUnlockedVaults.2=заблокуйте свої сховища,
preferences.updates.prohibitedDueToUnlockedVaults.3=щоб встановити оновлення.
preferences.updates.checkFailed=Не вдалось перевірити наявність оновлень. Будь ласка, перевірте підключення до Інтернету або спробуйте ще раз пізніше.
preferences.updates.updateFailed=Не вдалося оновити. Будь ласка, встановіть оновлення вручну.
preferences.updates.upToDate=Ваш Cryptomator не потребує оновлення.
preferences.updates.visitDownloadPage=Відкрити сторінку завантаження
## Contribution
preferences.contribute=Підтримайте нас
@@ -358,10 +339,9 @@ preferences.contribute.registeredFor=Сертифікат помічника з
preferences.contribute.noCertificate=Підтримайте Cryptomator та отримайте сертифікат помічника. Це як ліцензійний ключ, але для чудових людей, які користуються безплатним програмним забезпеченням. ;-)
preferences.contribute.getCertificate=Ще немає такого? Дізнайтеся, як його отримати.
preferences.contribute.promptText=Вставте код сертифікату помічника тут
preferences.contribute.thankYou=Дякуємо за підтримку розробки Cryptomator з відкритим кодом!
preferences.contribute.thankYou=Дякуємо, що підтримуєте розробку Cryptomator з відкритим вихідним кодом!
preferences.contribute.donate=Зробити пожертву
preferences.contribute.sponsor=Спонсори
preferences.contribute.removeCert.tooltip=Вилучити сертифікат
### Remove License Key Dialog
removeCert.title=Вилучити сертифікат
@@ -370,11 +350,10 @@ removeCert.description=Основні функції Cryptomator не будут
#<-- Add entries for donations and code/translation/documentation contribution -->
## About
preferences.about=Про програму
preferences.about.thirdPartyLicenses=Ліцензії третіх сторін
preferences.about=Про додаток
# Vault Statistics
stats.title=Статистика для «%s»
stats.title=Статистика %s
stats.cacheHitRate=Коефіцієнт влучань кеша
## Read
stats.read.throughput.idle=Читання: простоює
@@ -410,8 +389,6 @@ stats.access.total=Усього отримано доступ: %d
# Main Window
## Vault List
main.vaultlist=Сховища
main.vaultlist.listEntry=Сховище %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Натисніть тут, щоб додати сховище
main.vaultlist.contextMenu.remove=Вилучити…
main.vaultlist.contextMenu.lock=Заблокувати
@@ -423,17 +400,13 @@ main.vaultlist.contextMenu.share=Поділитися…
main.vaultlist.addVaultBtn.menuItemNew=Створити нове сховище…
main.vaultlist.addVaultBtn.menuItemExisting=Відкрити наявне сховище…
main.vaultlist.addVaultBtn.menuItemRecover=Відновити наявне сховище…
main.vaultlist.addVaultButton.tooltip=Додати сховище
main.vaultlist.showEventsButton.tooltip=Відкрити журнал подій
main.vaultlist.showPreferencesButton.tooltip=Показати налаштування
##Notification
##Notificaition
main.notification.updateAvailable=Доступне оновлення.
main.notification.support=Підтримайте Cryptomator.
main.notification.closeButton.tooltip=Закрити інформаційну панель
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Дякуємо, що обрали Cryptomator для захисту ваших файлів. Якщо вам потрібна допомога, ознайомтеся з нашими посібниками для початку роботи:
main.vaultDetail.storageLocation=Місце зберігання сховища
### Locked
main.vaultDetail.lockedStatus=ЗАБЛОКОВАНО
main.vaultDetail.unlockBtn=Розблокувати…
@@ -491,7 +464,6 @@ vaultOptions.general=Загальні
vaultOptions.general.vaultName=Назва сховища
vaultOptions.general.autoLock.lockAfterTimePart1=Блокувати після простою протягом
vaultOptions.general.autoLock.lockAfterTimePart2=хвилин
vaultOptions.general.autoLock.accessibleText=Тайм-аут блокування у хвилинах
vaultOptions.general.unlockAfterStartup=Розблоковувати сховище під час запуску Cryptomator
vaultOptions.general.actionAfterUnlock=Після успішного розблокування
vaultOptions.general.actionAfterUnlock.ignore=Нічого не робити
@@ -502,7 +474,7 @@ vaultOptions.general.startHealthCheckBtn=Розпочати перевірку
## Mount
vaultOptions.mount=Монтування
vaultOptions.mount.info=Відкрийте налаштування віртуального диска, щоб змінити параметри за замовчуванням.
vaultOptions.mount.readonly=Лише для читання
vaultOptions.mount.readonly=Тільки для перегляду
vaultOptions.mount.customMountFlags=Власні прапори монтування
vaultOptions.mount.winDriveLetterOccupied=зайнято
vaultOptions.mount.mountPoint=Точка монтування
@@ -522,7 +494,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Забути збережений
vaultOptions.masterkey.recoveryKeyExplanation=Ключ відновлення — це ваш єдиний спосіб відновити доступ до сховища, якщо ви втратите пароль.
vaultOptions.masterkey.showRecoveryKeyBtn=Показати ключ відновлення
vaultOptions.masterkey.recoverPasswordBtn=Скинути пароль
vaultOptions.masterkey.missingMasterkeyFile=Ці параметри доступні лише, якщо файл masterkey знаходиться в каталозі сховища.
## Hub
vaultOptions.hub=Відновлення
vaultOptions.hub.convertInfo=Ви можете використати ключ відновлення, щоб у надзвичайній ситуації перетворити це Hub-сховище на сховище, захищене паролем.
@@ -551,8 +522,6 @@ recoveryKey.recover.recoverBtn=Відновити
recoveryKey.recover.resetSuccess.message=Пароль успішно скинуто
recoveryKey.recover.resetSuccess.description=Ви можете розблокувати своє сховище за допомогою нового пароля.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=Конфігурацію сховища відновлено
recoveryKey.recover.resetMasterkeyFileSuccess.message=Файл Masterkey відновлено
recoveryKey.recover.resetMasterkeyFileSuccess.description=Тепер ви можете розблокувати сховище за допомогою свого пароля.
# Recover Vault Config File and/or Masterkey
@@ -617,7 +586,7 @@ passwordStrength.messageLabel.0=Дуже слабкий
passwordStrength.messageLabel.1=Слабкий
passwordStrength.messageLabel.2=Задовільний
passwordStrength.messageLabel.3=Надійний
passwordStrength.messageLabel.4=Дуже надійний
passwordStrength.messageLabel.4=Дуже надiйний
# Quit
quit.title=Вийти з додатка
@@ -659,7 +628,7 @@ shareVault.instruction.2=2. Передайте пароль сховища бе
shareVault.remarkBestPractices=Для отримання додаткової інформації перегляньте поради щодо найкращих практик у нашій документації.
shareVault.docsTooltip=Відкрийте документацію, щоб дізнатися більше про спільний доступ до сховищ.
shareVault.hubAd.description=Надійний спосіб для командної роботи
shareVault.hubAd.keyManagement=• Управління ключами за принципом «нульового розголошення»
shareVault.hubAd.keyManagement=• Управління ключами за принципом «zero-knowledge»
shareVault.hubAd.authentication=• Надійна автентифікація
shareVault.hubAd.encryption=• Наскрізне шифрування
shareVault.visitHub=Відвідати Cryptomator Hub
@@ -676,8 +645,6 @@ decryptNames.filePicker.title=Виберіть зашифрований файл
decryptNames.filePicker.extensionDescription=Зашифрований файл Cryptomator
decryptNames.copyTable.tooltip=Копіювати таблицю
decryptNames.clearTable.tooltip=Очистити таблицю
decryptNames.column.encrypted=Зашифровано
decryptNames.column.decrypted=Розшифровано
decryptNames.copyHint=Скопіювати вміст комірки за допомогою %s
decryptNames.dropZone.message=Перетягніть файли або натисніть, щоб вибрати
decryptNames.dropZone.error.vaultInternalFiles=Вибрано службові файли сховища, які не можна розшифрувати
@@ -690,31 +657,23 @@ decryptNames.dropZone.error.generic=Не вдалося розшифрувати
eventView.title=Події
eventView.filter.allVaults=Усі
eventView.clearListButton.tooltip=Очистити список
eventView.filterVaults=Фільтрувати за сховищем
eventView.cell.actionsButton.tooltip=Дії події
## event list entries
eventView.entry.vaultLocked.description=Розблокуйте «%s» для отримання деталей
eventView.entry.conflictResolved.message=Конфлікт вирішено
eventView.entry.conflictResolved.showDecrypted=Показати розшифрований файл
eventView.entry.conflictResolved.copyDecrypted=Копіювати розшифрований шлях
eventView.entry.conflict.message=Не вдалося вирішити конфлікт
eventView.entry.conflict.showDecrypted=Показати розшифрований оригінальний файл
eventView.entry.conflict.copyDecrypted=Скопіювати розшифрований оригінальний шлях
eventView.entry.conflict.showEncrypted=Показати конфліктуючий зашифрований файл
eventView.entry.conflict.copyEncrypted=Скопіювати конфліктуючий зашифрований шлях
eventView.entry.decryptionFailed.message=Не вдалося розшифрувати
eventView.entry.decryptionFailed.showEncrypted=Показати зашифрований файл
eventView.entry.decryptionFailed.copyEncrypted=Копіювати зашифрований шлях
eventView.entry.brokenDirFile.message=Пошкоджене посилання на каталог
eventView.entry.brokenDirFile.showEncrypted=Показати пошкоджене зашифроване посилання
eventView.entry.brokenDirFile.copyEncrypted=Копіювати шлях пошкодженого посилання
eventView.entry.brokenFileNode.message=Пошкоджений вузол файлової системи
eventView.entry.brokenFileNode.showEncrypted=Показати пошкоджений зашифрований вузол
eventView.entry.brokenFileNode.copyEncrypted=Скопіювати шлях до пошкодженого зашифрованого вузла
eventView.entry.brokenFileNode.copyDecrypted=Копіювати розшифрований шлях
eventView.entry.inUse.message=Файл використовується
eventView.entry.inUse.showDecrypted=Показати розшифрований файл
eventView.entry.inUse.showEncrypted=Показати зашифрований файл
eventView.entry.inUse.copyUserAndDevice=Копіювати ім'я користувача та пристрою, що блокують
eventView.entry.inUse.ignoreLock=Ігнорувати статус використання
# Notifications
## FileIsInUse Notification
notification.inUse.message=Файл використовується на іншому пристрої
notification.inUse.description=Файл відкритий користувачем %s на пристрої %s. Попросіть його закрити файл, щоб завершити синхронізацію. Ви можете ігнорувати цей статус і відкрити файл зараз, але це може призвести до конфліктів або перезапису новіших змін.
notification.inUse.action=Ігнорувати статус використання

View File

@@ -3,8 +3,6 @@
# Generics
## Button
## Vault state
# Error
# Defaults
@@ -38,7 +36,6 @@
### Register Device Legacy
### Registration Success
### Registration Failed
### Archived
### Unauthorized
### Requires Account Initialization
### License Exceeded
@@ -84,7 +81,7 @@
# Main Window
## Vault List
##Notification
##Notificaition
## Vault Detail
### Welcome
### Locked
@@ -151,7 +148,3 @@
# Event View
## event list entries
# Notifications
## FileIsInUse Notification

View File

@@ -12,14 +12,10 @@ generic.button.close=Đóng
generic.button.copy=Sao chép
generic.button.copied=Đã sao chép!
generic.button.done=Hoàn thành
generic.button.previous=Liền trước
generic.button.next=Tiếp
generic.button.print=In
generic.button.remove=Xóa
## Vault state
vault.state.error=Lỗi
# Error
error.message=Đã xảy ra lỗi
error.description=Oops! Cryptomator không mong đợi điều này xảy ra. Bạn có thể tra cứu các giải pháp hiện có cho lỗi này. Hoặc nếu lỗi chưa được báo cáo, hãy làm như vậy.
@@ -179,7 +175,6 @@ hub.registerSuccess.legacy.description=Để truy cập vault, thiết bị củ
hub.registerFailed.message=Đăng ký thiết bị thất bại
hub.registerFailed.description.generic=Đã xảy ra lỗi trong quá trình đăng ký. Để biết thêm chi tiết, vui lòng kiểm tra nhật ký ứng dụng.
hub.registerFailed.description.deviceAlreadyExists=Thiết bị này đã được đăng ký cho người dùng khác. Hãy thử tài khoản khác hoặc sử dụng một thiết bị khác.
### Archived
### Unauthorized
hub.unauthorized.message=Truy cập bị từ chối
hub.unauthorized.description=Bạn không được phép mở vault này. Vui lòng liên hệ với chủ sở hữu vault để yêu cầu quyền truy cập.
@@ -391,7 +386,6 @@ stats.access.total=Tổng số lần truy cập: %d
# Main Window
## Vault List
main.vaultlist=Danh sách Vault
main.vaultlist.emptyList.onboardingInstruction=Bấm vào đây để thêm vault
main.vaultlist.contextMenu.remove=Xóa…
main.vaultlist.contextMenu.lock=Khoá
@@ -400,8 +394,8 @@ main.vaultlist.contextMenu.unlockNow=Mở khóa bây giờ
main.vaultlist.contextMenu.vaultoptions=Hiện tùy chọn vault
main.vaultlist.contextMenu.reveal=Hiển thị Ổ đĩa
main.vaultlist.contextMenu.share=Chia sẻ…
main.vaultlist.addVaultButton.tooltip=Thêm Vault
##Notification
main.vaultlist.showEventsButton.tooltip=Mở xem sự kiện
##Notificaition
main.notification.updateAvailable=Có bản cập nhật mới.
main.notification.support=Hỗ trợ Cryptomator.
## Vault Detail
@@ -629,19 +623,19 @@ eventView.clearListButton.tooltip=Xóa danh sách
eventView.entry.vaultLocked.description=Mở khóa "%s" để xem chi tiết
eventView.entry.conflictResolved.message=Đã xử lý xung đột
eventView.entry.conflictResolved.showDecrypted=Xem tệp đã giải mã
eventView.entry.conflictResolved.copyDecrypted=Sao chép đường dẫn giải mã
eventView.entry.conflict.message=Giải quyết xung đột thất bại
eventView.entry.conflict.showDecrypted=Xem tệp gốc đã giải mã
eventView.entry.conflict.copyDecrypted=Sao chép đường dẫn gốc đã giải mã
eventView.entry.conflict.showEncrypted=Hiển thị tệp bị xung đột, đã mã hóa
eventView.entry.conflict.copyEncrypted=Sao chép đường dẫn mã hóa bị xung đột
eventView.entry.decryptionFailed.message=Giải mã thất bại
eventView.entry.decryptionFailed.showEncrypted=Hiển thị tệp đã mã hóa
eventView.entry.decryptionFailed.copyEncrypted=Sao chép đường dẫn tệp đã mã hóa
eventView.entry.brokenDirFile.message=Liên kết thư mục hỏng
eventView.entry.brokenDirFile.showEncrypted=Hiển thị liên kết mã hóa bị hỏng
eventView.entry.brokenDirFile.copyEncrypted=Sao chép đường dẫn liên kết bị hỏng
eventView.entry.brokenFileNode.message=Nút tập tin bị hỏng
eventView.entry.brokenFileNode.showEncrypted=Hiển thị nút mã hóa bị hỏng
eventView.entry.brokenFileNode.copyEncrypted=Sao chép đường dẫn nút mã hóa bị hỏng
eventView.entry.brokenFileNode.copyDecrypted=Sao chép đường dẫn giải mã
eventView.entry.inUse.showDecrypted=Xem tệp đã giải mã
eventView.entry.inUse.showEncrypted=Hiển thị tệp đã mã hóa
# Notifications
## FileIsInUse Notification

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