diff --git a/.github/workflows/av-whitelist.yml b/.github/workflows/av-whitelist.yml new file mode 100644 index 000000000..102f1bee0 --- /dev/null +++ b/.github/workflows/av-whitelist.yml @@ -0,0 +1,40 @@ +name: AntiVirus Whitelisting + +on: + workflow_call: + inputs: + url: + description: "Url to the file to upload" + required: true + type: string + workflow_dispatch: + inputs: + url: + description: "Url to the file to upload" + required: true + type: string + +jobs: + allowlist: + name: Anti Virus Allowlisting + runs-on: ubuntu-latest + steps: + - name: Download file + run: | + curl --remote-name ${{ inputs.url }} -L + - name: Upload to Kaspersky + uses: SamKirkland/FTP-Deploy-Action@v4.3.4 + with: + protocol: ftps + server: allowlist.kaspersky-labs.com + port: 990 + username: ${{ secrets.ALLOWLIST_KASPERSKY_USERNAME }} + password: ${{ secrets.ALLOWLIST_KASPERSKY_PASSWORD }} + - name: Upload to Avast + uses: SamKirkland/FTP-Deploy-Action@v4.3.4 + with: + protocol: ftp + server: whitelisting.avast.com + port: 21 + username: ${{ secrets.ALLOWLIST_AVAST_USERNAME }} + password: ${{ secrets.ALLOWLIST_AVAST_PASSWORD }} \ No newline at end of file diff --git a/.github/workflows/flathub.yml b/.github/workflows/flathub.yml index 432777f41..da8f6c77f 100644 --- a/.github/workflows/flathub.yml +++ b/.github/workflows/flathub.yml @@ -53,13 +53,11 @@ jobs: - name: Checkout release branch run: | git checkout -b release/${{ needs.get-version.outputs.semVerStr }} - - name: Update build file with yq + - name: Update build file run: | - wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O yq && chmod +x yq - ./yq -i eval '(.modules[] | select(.name == "cryptomator") | .build-options.env.VERSION) = "${{ needs.get-version.outputs.semVerStr }}"' org.cryptomator.Cryptomator.yaml - ./yq -i eval '(.modules[] | select(.name == "cryptomator") | .sources[] | select(.type == "archive" and .url = "https://github.com/cryptomator/cryptomator/archive*") | .url) = "${{ needs.tarball.outputs.url }}"' org.cryptomator.Cryptomator.yaml - ./yq -i eval '(.modules[] | select(.name == "cryptomator") | .sources[] | select(.type == "archive" and .url = "https://github.com/cryptomator/cryptomator/archive*") | .sha512) = "${{ needs.tarball.outputs.sha512 }}"' org.cryptomator.Cryptomator.yaml - rm yq + sed -i -e 's/VERSION: [0-9]\+\.[0-9]\+\.[0-9]\+.*/VERSION: ${{ needs.get-version.outputs.semVerStr }}/g' org.cryptomator.Cryptomator.yaml + sed -i -e 's/sha512: [0-9A-Za-z_\+-]\{128\} #CRYPTOMATOR/sha512: ${{ needs.tarball.outputs.sha512 }} #CRYPTOMATOR/g' org.cryptomator.Cryptomator.yaml + sed -i -e 's;url: https://github.com/cryptomator/cryptomator/archive/refs/tags/[^[:blank:]]\+;url: ${{ needs.tarball.outputs.url }};g' org.cryptomator.Cryptomator.yaml - name: Commit and push run: | git config user.name "${{ github.actor }}" @@ -70,7 +68,8 @@ jobs: git push - name: Create pull request run: | - PR_URL=$(gh pr create --title "Release ${{ needs.get-version.outputs.semVerStr }}" --body "> [!IMPORTANT]\n> Todos:\n> - [ ] Update maven dependencies\n> - [ ] Check for JDK update\n> - [ ] Check for JFX update") + printf "> [!IMPORTANT]\n> Todos:\n> - [ ] Update maven dependencies\n> - [ ] Check for JDK update\n> - [ ] Check for JFX update" > pr_body.md + PR_URL=$(gh pr create --title "Release ${{ needs.get-version.outputs.semVerStr }}" --body-file pr_body.md) echo "FLATHUB_PR_URL=$PR_URL" >> "$GITHUB_ENV" env: GH_TOKEN: ${{ secrets.CRYPTOBOT_WINGET_TOKEN }} diff --git a/.github/workflows/get-version.yml b/.github/workflows/get-version.yml index d97fe1caa..cbb463824 100644 --- a/.github/workflows/get-version.yml +++ b/.github/workflows/get-version.yml @@ -73,4 +73,4 @@ jobs: - name: Validate Version uses: skymatic/semver-validation-action@v2 with: - version: ${{ steps.versions.outputs.semVerStr }} \ No newline at end of file + version: ${{ steps.versions.outputs.semVerStr }} \ No newline at end of file diff --git a/.github/workflows/release-check.yml b/.github/workflows/release-check.yml index 90c778d50..e5b977d79 100644 --- a/.github/workflows/release-check.yml +++ b/.github/workflows/release-check.yml @@ -44,7 +44,7 @@ jobs: fi - name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file run: | - if ! grep -q "" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml; then + if ! grep -q "" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml; then echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml" exit 1 fi diff --git a/.github/workflows/win-exe.yml b/.github/workflows/win-exe.yml index d3720c76b..7dcaaa0ee 100644 --- a/.github/workflows/win-exe.yml +++ b/.github/workflows/win-exe.yml @@ -254,15 +254,6 @@ jobs: Cryptomator-*.msi Cryptomator-*.asc if-no-files-found: error - - name: Publish .msi on GitHub Releases - if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published' - uses: softprops/action-gh-release@v1 - with: - fail_on_unmatched_files: true - token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }} - files: | - *.msi - *.asc build-exe: name: Build .exe installer @@ -365,59 +356,48 @@ jobs: Cryptomator-*.exe Cryptomator-*.asc if-no-files-found: error + + publish: + name: Publish installers to the github release + if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published' + runs-on: ubuntu-latest + needs: [build-msi, build-exe] + outputs: + download-url-msi: ${{ fromJSON(steps.publish.outputs.assets)[0].browser_download_url }} + download-url-exe: ${{ fromJSON(steps.publish.outputs.assets)[1].browser_download_url }} + steps: + - name: Download installers + uses: actions/download-artifact@v4 + with: + merge-multiple: true - name: Publish .msi on GitHub Releases - if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published' + id: publish uses: softprops/action-gh-release@v1 with: fail_on_unmatched_files: true token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }} + # do not change ordering of filelist, required for correct job output files: | - Cryptomator-*.exe - Cryptomator-*.asc + *.msi + *.exe + *.asc + + allowlist-msi: + uses: ./.github/workflows/av-whitelist.yml + needs: [publish] + with: + url: ${{ needs.publish.outputs.download-url-msi }} + + allowlist-exe: + uses: ./.github/workflows/av-whitelist.yml + needs: [publish] + with: + url: ${{ needs.publish.outputs.download-url-exe }} - allowlist: - name: Anti Virus Allowlisting - if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published' - runs-on: ubuntu-latest - needs: [build-msi, build-exe] - steps: - - name: Download .msi - uses: actions/download-artifact@v4 - with: - name: msi - path: msi - - name: Download .exe - uses: actions/download-artifact@v4 - with: - name: exe - path: exe - - name: Collect files - run: | - mkdir files - cp msi/*.msi files - cp exe/*.exe files - - name: Upload to Kaspersky - uses: SamKirkland/FTP-Deploy-Action@v4.3.4 - with: - protocol: ftps - server: allowlist.kaspersky-labs.com - port: 990 - username: ${{ secrets.ALLOWLIST_KASPERSKY_USERNAME }} - password: ${{ secrets.ALLOWLIST_KASPERSKY_PASSWORD }} - local-dir: files/ - - name: Upload to Avast - uses: SamKirkland/FTP-Deploy-Action@v4.3.4 - with: - protocol: ftp - server: whitelisting.avast.com - port: 21 - username: ${{ secrets.ALLOWLIST_AVAST_USERNAME }} - password: ${{ secrets.ALLOWLIST_AVAST_PASSWORD }} - local-dir: files/ notify-winget: name: Notify for winget-release - if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published' && needs.get-version.outputs.versionType == 'stable' - needs: [build-msi, get-version] + if: needs.get-version.outputs.versionType == 'stable' + needs: [publish, get-version] runs-on: ubuntu-latest steps: - name: Slack Notification diff --git a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml index a542eca67..578597243 100644 --- a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml +++ b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml @@ -5,26 +5,27 @@ FSFAP GPL-3.0-or-later Cryptomator - Multi-platform client-side encryption tool optimized for cloud storages + Encryption made easy and optimized for the cloud

- Cryptomator provides transparent, client-side encryption for your cloud. Protect your documents from unauthorized - access. Cryptomator is free and open source software, so you can rest assured there are no backdoors. + Cryptomator provides easy-to-use, transparent, client-side encryption for your cloud. + It protects your documents from unauthorized access and prying eyes, while you will still be able to view and edit your documents locally. + By not requiring any registration or account and performing all encryption locally, it gives you back control over your data and ensures your privacy. + Cryptomator is offered for all major platforms (including Android and iOS).

- Cryptomator encrypts file contents and names using AES. Your passphrase is protected against bruteforcing attempts - using scrypt. Directory structures get obfuscated. The only thing which cannot be encrypted without breaking your - cloud synchronization is the modification date of your files. + Cryptomator encrypts file contents and names using the widespread industry standard AES. + Your passphrase is protected against brute forcing attempts using scrypt. + Additionally, directory structures get obfuscated. + For more info about the Cryptomator encryption scheme, check out the online documentation.

- Cryptomator is a free and open source software licensed under the GPLv3. This allows anyone to check our code. It - is impossible to introduce backdoors for third parties. Also we cannot hide vulnerabilities. And the best thing - is: There is no need to trust us, as you can control us! -

-

- Vendor lock-ins are impossible. Even if we decided to stop development: The source code is already cloned by - hundreds of other developers. As you don't need an account, you will never stand in front of locked doors. + Cryptomator is a free and open-source software licensed under the GPLv3. + This allows anyone to check our code. + Thus, it is impossible to introduce backdoors for third parties or to hide vulnerabilities, so you do not need to trust Cryptomator. + Also, vendor lock-ins are impossible. + Even if we decided to stop development: The source code is already cloned by hundreds of other developers and development can be picked up by others.

@@ -42,7 +43,7 @@ - + Light theme https://user-images.githubusercontent.com/11858409/156986109-6e58f59c-8b8c-4501-b33b-bb1e33007cea.png @@ -56,16 +57,22 @@ https://github.com/cryptomator/cryptomator/issues/ https://cryptomator.org/donate https://community.cryptomator.org/c/kb/faq - https://community.cryptomator.org/ + https://docs.cryptomator.org/ https://translate.cryptomator.org - Skymatic GmbH + + Skymatic GmbH + + mild + + https://github.com/cryptomator/cryptomator/releases/1.12.3 + https://github.com/cryptomator/cryptomator/releases/1.12.2 diff --git a/pom.xml b/pom.xml index 49c6126e2..a39bdd080 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 2.6.9 - 1.3.0 + 1.3.1 1.2.5 1.2.3 1.4.4 diff --git a/src/main/java/org/cryptomator/common/mount/Mounter.java b/src/main/java/org/cryptomator/common/mount/Mounter.java index d3818557c..6ca067305 100644 --- a/src/main/java/org/cryptomator/common/mount/Mounter.java +++ b/src/main/java/org/cryptomator/common/mount/Mounter.java @@ -119,9 +119,8 @@ public class Mounter { Files.createDirectories(defaultMountPointBase); builder.setMountpoint(defaultMountPointBase); } else if (canMountToDir) { - var mountPoint = defaultMountPointBase.resolve(vaultSettings.id); + var mountPoint = defaultMountPointBase.resolve(vaultSettings.mountName.get()); Files.createDirectories(mountPoint); - cleanup = () -> removeCreatedDirectory(mountPoint); builder.setMountpoint(mountPoint); } } else { @@ -157,14 +156,6 @@ public class Mounter { } - private void removeCreatedDirectory(Path toDelete) { - try { - Files.delete(toDelete); - } catch (IOException e) { - LOG.warn("Unable to remove {} after unmount: {}.", toDelete, e.getMessage()); - } - } - public MountHandle mount(VaultSettings vaultSettings, Path cryptoFsRoot) throws IOException, MountFailedException { var mountService = mountProviders.stream().filter(s -> s.getClass().getName().equals(vaultSettings.mountService.getValue())).findFirst().orElse(defaultMountService.getValue()); diff --git a/src/main/resources/i18n/strings_fr.properties b/src/main/resources/i18n/strings_fr.properties index b3c7f8b5c..c9cc7caa8 100644 --- a/src/main/resources/i18n/strings_fr.properties +++ b/src/main/resources/i18n/strings_fr.properties @@ -535,7 +535,19 @@ updateReminder.yesAutomatically=Oui, automatiquement # Share Vault shareVault.title=Partager le coffre shareVault.message=Vous aimeriez partager votre coffre avec d'autres personnes ? +shareVault.description=Soyez toujours prudent lorsque vous partagez votre coffre avec d'autres personnes. En bref, suivez ces étapes : +shareVault.instruction.1=1. Partagez l'accès du dossier de coffre chiffré via le stockage cloud. +shareVault.instruction.2=2. Partagez le mot de passe du coffre de manière sécurisée. +shareVault.remarkBestPractices=Pour plus d'informations, consultez les suggestions des meilleures pratiques de notre documentation. +shareVault.docsTooltip=Ouvrez la documentation pour en savoir plus sur le partage des coffres. +shareVault.hubAd.description=La façon sécurisée de travailler en équipe +shareVault.hubAd.keyManagement=• Gestion des clés sans connaissance +shareVault.hubAd.authentication=• Authentification forte shareVault.hubAd.encryption=Chiffrement de bout en bout shareVault.visitHub=Visiter le Hub Cryptomator -shareVault.hub.openHub=Visiter le Hub Cryptomator \ No newline at end of file +shareVault.hub.message=Comment partager un coffre central +shareVault.hub.description=Afin de partager le contenu du coffre avec un autre membre de l'équipe, vous devez effectuer deux étapes : +shareVault.hub.instruction.1=1. Partagez l'accès du dossier de coffre chiffré via le stockage cloud. +shareVault.hub.instruction.2=2. Accorder l'accès au membre de l'équipe dans Cryptomator Hub. +shareVault.hub.openHub=Ouvrir le Hub Cryptomator \ No newline at end of file diff --git a/src/main/resources/i18n/strings_ja.properties b/src/main/resources/i18n/strings_ja.properties index 0eff44d23..7b74a5a74 100644 --- a/src/main/resources/i18n/strings_ja.properties +++ b/src/main/resources/i18n/strings_ja.properties @@ -141,6 +141,8 @@ 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.restartRequired.description=金庫のオプションからボリュームタイプを変更するか、Cryptomatorを再起動してください。 ## Hub hub.noKeychain.message=デバイス キーにアクセスできません hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。 @@ -154,12 +156,21 @@ hub.receive.message=応答を処理中… hub.receive.description=Cryptomator が Hub からの応答を受信、処理中です。しばらくお待ちください。 ### Register Device hub.register.message=新しいデバイス +hub.register.description=このデバイスからの最初のハブアクセスです。アカウントキーを使用して登録してください。 hub.register.nameLabel=デバイス名 hub.register.registerBtn=登録 ### Register Device Legacy +hub.register.legacy.occupiedMsg=この名前は既に使われています +hub.register.legacy.description=このデバイスからの最初のハブへのアクセスです。登録してください。 ### Registration Success +hub.registerSuccess.message=デバイスが登録されました +hub.registerSuccess.description=デバイスの登録が完了しました。続いて金庫のロックを解除することができます。 hub.registerSuccess.unlockBtn=解錠 +hub.registerSuccess.legacy.description=金庫にアクセスするためには金庫のオーナーが端末を認証する必要があります。 ### Registration Failed +hub.registerFailed.message=デバイスの登録に失敗しました +hub.registerFailed.description.generic=登録中にエラーが発生しました。エラーの詳細についてはアプリケーションログを参照してください。 +hub.registerFailed.description.deviceAlreadyExists=このデバイスは既に別のユーザーに登録されています。ユーザーアカウントを変更するか、別のデバイスを使用してください。 ### Unauthorized hub.unauthorized.message=アクセスが拒否されました hub.unauthorized.description=お使いのデバイスはまだこの金庫にアクセスする権限がありません。金庫のオーナーに権限を与えてもらってください。 diff --git a/src/main/resources/i18n/strings_nl.properties b/src/main/resources/i18n/strings_nl.properties index c9fcbfc8b..bc4faba4c 100644 --- a/src/main/resources/i18n/strings_nl.properties +++ b/src/main/resources/i18n/strings_nl.properties @@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Kies een naam voor de kluis addvaultwizard.new.namePrompt=Kluisnaam ### Location addvaultwizard.new.locationInstruction=Waar moet Cryptomator de versleutelde bestanden van je kluis opslaan? +addvaultwizard.new.locationLoading=Lokaal bestandssysteem controleren op standaard cloud opslag mappen… addvaultwizard.new.locationLabel=Opslaglocatie addvaultwizard.new.locationPrompt=… addvaultwizard.new.directoryPickerLabel=Andere locatie @@ -141,6 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Het tijdelijk verborgen besta unlock.error.customPath.description.couldNotBeCleaned=Uw kluis kon niet worden gekoppeld aan het pad "%s". Probeer het opnieuw of kies een ander pad. unlock.error.customPath.description.notEmptyDir=Het aangepaste pad "%s" is geen lege map. Kies een lege map en probeer het opnieuw. unlock.error.customPath.description.generic=Je hebt een aangepast koppelpad voor deze kluis geselecteerd, maar gebruik ervan is mislukt met het bericht: %2$s +unlock.error.restartRequired.message=Kan kluis niet ontgrendelen +unlock.error.restartRequired.description=Wijzig het type volume in de opties voor de kluis of herstart Cryptomator. unlock.error.title=Ontgrendelen "%s" mislukt ## Hub hub.noKeychain.message=Geen toegang tot de apparaatsleutel @@ -155,13 +158,22 @@ hub.receive.message=Antwoord verwerken… hub.receive.description=Cryptomator ontvangt en verwerkt de reactie van Hub. Een ogenblik geduld. ### Register Device hub.register.message=Nieuw apparaat +hub.register.description=Dit is de eerste Hub toegang vanaf dit apparaat. Bevestig deze toegang met behulp van uw Account Key. hub.register.nameLabel=Apparaatnaam hub.register.invalidAccountKeyLabel=Ongeldige Account Key hub.register.registerBtn=Registreren ### Register Device Legacy +hub.register.legacy.occupiedMsg=Naam al in gebruik +hub.register.legacy.description=Dit is de eerste keer dat dit apparaat toegang heeft tot de Hub. Registreer dit aub. ### Registration Success -hub.registerSuccess.unlockBtn=Ontgrendel +hub.registerSuccess.message=Apparaat geregistreerd +hub.registerSuccess.description=Uw apparaat is met succes geregistreerd. Y kunt nu doorgaan met het ontgrendelen van de kluis. +hub.registerSuccess.unlockBtn=Ontgrendelen +hub.registerSuccess.legacy.description=Om toegang te krijgen tot de kluis, moet je toestel bovendien worden gemachtigd door de eigenaar van de kluis. ### Registration Failed +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. ### Unauthorized hub.unauthorized.message=Toegang geweigerd hub.unauthorized.description=Uw apparaat is nog niet gemachtigd om toegang te krijgen tot deze kluis. Vraag de eigenaar van de kluis om toestemming te geven. @@ -380,6 +392,7 @@ main.vaultDetail.unlockBtn=Ontgrendelen… main.vaultDetail.unlockNowBtn=Nu Ontgrendelen main.vaultDetail.optionsBtn=Kluis-instellingen main.vaultDetail.passwordSavedInKeychain=Wachtwoord opgeslagen +main.vaultDetail.share=Delen... ### Unlocked main.vaultDetail.unlockedStatus=ONTGRENDELD main.vaultDetail.accessLocation=De inhoud van uw kluis is hier toegankelijk: @@ -445,6 +458,7 @@ vaultOptions.mount.mountPoint.custom=Gebruik gekozen map vaultOptions.mount.mountPoint.directoryPickerButton=Kies… vaultOptions.mount.mountPoint.directoryPickerTitle=Selecteer een map vaultOptions.mount.volumeType.default=Standaard (%s) +vaultOptions.mount.volumeType.restartRequired=Om dit type volume te kunnen gebruiken, moet Cryptomator opnieuw worden opgestart. vaultOptions.mount.volume.tcp.port=TCP-poort vaultOptions.mount.volume.type=Volumetype ## Master Key @@ -519,3 +533,21 @@ updateReminder.yesOnce=Ja, Eenmaal updateReminder.yesAutomatically=Ja, automatisch # Share Vault +shareVault.title=Kluis delen +shareVault.message=Wilt u uw kluis met anderen delen? +shareVault.description=Wees altijd voorzichtig bij het delen van je kluis met andere mensen. Kortom, volg deze stappen: +shareVault.instruction.1=1. Deel toegang van de versleutelde kluis map via de cloud opslag. +shareVault.instruction.2=2. Deel het wachtwoord van de kluis op een veilige manier. +shareVault.remarkBestPractices=Kijk voor meer informatie naar de suggesties voor beste praktijken in onze documenten. +shareVault.docsTooltip=Open de documentatie om meer te leren over het delen van kluizen. +shareVault.hubAd.description=De veilige manier om in teams te werken +shareVault.hubAd.keyManagement=• Zero-knowledge sleutelbeheer +shareVault.hubAd.authentication=• Sterke authenticatie +shareVault.hubAd.encryption=• End-to-end versleuteling +shareVault.visitHub=Bezoek Cryptomator Hub + +shareVault.hub.message=Hoe een Hub kluis delen +shareVault.hub.description=Om de inhoud van de kluis te delen met een ander teamlid, moet u twee stappen uitvoeren: +shareVault.hub.instruction.1=1. Deel toegang van de versleutelde kluismap via de cloud opslag. +shareVault.hub.instruction.2=2. Geef teamlid toegang in Cryptomator Hub. +shareVault.hub.openHub=Open Cryptomator Hub \ No newline at end of file diff --git a/src/main/resources/i18n/strings_pt.properties b/src/main/resources/i18n/strings_pt.properties index eaa5921e1..c1ece11dd 100644 --- a/src/main/resources/i18n/strings_pt.properties +++ b/src/main/resources/i18n/strings_pt.properties @@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Escolha um nome para o cofre addvaultwizard.new.namePrompt=Nome do Cofre ### Location addvaultwizard.new.locationInstruction=Onde deve o Cryptomator armazenar os arquivos criptografados do cofre? +addvaultwizard.new.locationLoading=Verificando o sistema de arquivos por diretórios padrão de armazenamento na nuvem… addvaultwizard.new.locationLabel=Local de armazenamento addvaultwizard.new.locationPrompt=… addvaultwizard.new.directoryPickerLabel=Outro Local @@ -141,6 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=O arquivo oculto temporário unlock.error.customPath.description.couldNotBeCleaned=Não foi possível montar o seu cofre no caminho "%s". Tente novamente ou escolha um caminho diferente. unlock.error.customPath.description.notEmptyDir=O caminho de montagem personalizado "%s" não é uma pasta vazia. Escolha uma pasta vazia e tente novamente. unlock.error.customPath.description.generic=Selecionou um caminho de montagem personalizado para este cofre, mas o seu uso falhou com a mensagem: %2$s +unlock.error.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=Desbloqueio "%s" falhou ## Hub hub.noKeychain.message=Não foi possível aceder à chave do dispositivo @@ -155,13 +158,22 @@ hub.receive.message=A processar a resposta… hub.receive.description=Cryptomator está a receber e a processar a resposta do Hub. Por favor aguarde. ### Register Device hub.register.message=Novo dispositivo +hub.register.description=Este é o primeiro acesso do Hub a partir deste dispositivo. Por favor, autorize-o usando a sua chave de conta. hub.register.nameLabel=Nome do dispositivo hub.register.invalidAccountKeyLabel=Chave da conta inválida hub.register.registerBtn=Registo ### Register Device Legacy +hub.register.legacy.occupiedMsg=Nome já em utilização +hub.register.legacy.description=Este é o primeiro acesso ao Hub a partir deste dispositivo. Por favor, registe-o. ### Registration Success +hub.registerSuccess.message=Dispositivo registado +hub.registerSuccess.description=O seu dispositivo foi registado com sucesso. Pode continuar e desbloquear o cofre. hub.registerSuccess.unlockBtn=Desbloquear +hub.registerSuccess.legacy.description=Para aceder ao cofre, o seu dispositivo precisa de ser autorizado pelo proprietário do cofre. ### Registration Failed +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. ### Unauthorized hub.unauthorized.message=Acesso negado hub.unauthorized.description=O seu dispositivo ainda não foi autorizado a aceder a este cofre. Peça ao proprietário do cofre para o autorizar. @@ -380,6 +392,7 @@ main.vaultDetail.unlockBtn=Desbloquear… main.vaultDetail.unlockNowBtn=Desbloquear agora main.vaultDetail.optionsBtn=Opções do Cofre main.vaultDetail.passwordSavedInKeychain=Palavra-passe guardada +main.vaultDetail.share=Partilhar… ### Unlocked main.vaultDetail.unlockedStatus=DESBLOQUEADO main.vaultDetail.accessLocation=O conteúdo do seu cofre está acessível aqui: @@ -445,6 +458,7 @@ vaultOptions.mount.mountPoint.custom=Usar diretório escolhido vaultOptions.mount.mountPoint.directoryPickerButton=Escolher… vaultOptions.mount.mountPoint.directoryPickerTitle=Escolher um diretório vaultOptions.mount.volumeType.default=Predefinição (%1$s) +vaultOptions.mount.volumeType.restartRequired=Para usar este tipo de volume, o Cryptomator precisa de ser reiniciado. vaultOptions.mount.volume.tcp.port=Porta TCP vaultOptions.mount.volume.type=Tipo de Volume ## Master Key @@ -519,3 +533,21 @@ updateReminder.yesOnce=Sim, Uma Vez updateReminder.yesAutomatically=Sim, Automaticamente # Share Vault +shareVault.title=Partilhar cofre +shareVault.message=Quer partilhar o seu cofre com outros? +shareVault.description=Tenha sempre cuidado ao partilhar o seu cofre com outras pessoas. Resumindo, siga esses passos: +shareVault.instruction.1=1. Partilhe o acesso à pasta encriptada do cofre via armazenamento na nuvem. +shareVault.instruction.2=2. Partilhe a palavra-passe do cofre de forma segura. +shareVault.remarkBestPractices=Para mais informações, verifique as sugestões de melhores práticas, nos nossos documentos. +shareVault.docsTooltip=Abra a documentação para saber mais sobre partilha de cofres. +shareVault.hubAd.description=A maneira segura de trabalhar em equipa +shareVault.hubAd.keyManagement=• Gestão de chaves de conhecimento-zero +shareVault.hubAd.authentication=• Autenticação forte +shareVault.hubAd.encryption=• Encriptação ponta-a-ponta +shareVault.visitHub=Visitar o Hub Cryptomator + +shareVault.hub.message=Como partilhar um cofre do Hub +shareVault.hub.description=Para partilhar o conteúdo do cofre com outro membro da equipa, precisa executar duas etapas: +shareVault.hub.instruction.1=1. Partilhe o acesso à pasta encriptada do cofre via armazenamento na nuvem. +shareVault.hub.instruction.2=2. Conceder acesso ao membro da equipe no Hub Cryptomator. +shareVault.hub.openHub=Abrir Hub do Cryptomator \ No newline at end of file diff --git a/src/main/resources/i18n/strings_ru.properties b/src/main/resources/i18n/strings_ru.properties index db01375cd..d5afe47e2 100644 --- a/src/main/resources/i18n/strings_ru.properties +++ b/src/main/resources/i18n/strings_ru.properties @@ -544,5 +544,10 @@ shareVault.hubAd.description=Безопасный способ работы в shareVault.hubAd.keyManagement=• Управление ключами без разглашения shareVault.hubAd.authentication=• Надёжная аутентификация shareVault.hubAd.encryption=• Сквозное шифрование +shareVault.visitHub=Посетить хаб Cryptomator -shareVault.hub.instruction.1=1. Делитесь доступом к зашифрованной папке хранилища через облако. \ No newline at end of file +shareVault.hub.message=Как поделиться хранилищем в хабе +shareVault.hub.description=Чтобы поделиться содержимым хранилища с другим членом команды: +shareVault.hub.instruction.1=1. Делитесь доступом к зашифрованной папке хранилища через облако. +shareVault.hub.instruction.2=2. Предоставьте доступ члену команды в хабе Cryptomator. +shareVault.hub.openHub=Открыть хаб Cryptomator \ No newline at end of file diff --git a/src/main/resources/i18n/strings_sk.properties b/src/main/resources/i18n/strings_sk.properties index c2acc6618..81d169727 100644 --- a/src/main/resources/i18n/strings_sk.properties +++ b/src/main/resources/i18n/strings_sk.properties @@ -141,6 +141,7 @@ unlock.error.customPath.description.hideawayNotDir=Dočasne, skrytý súbor "%3$ unlock.error.customPath.description.couldNotBeCleaned=Váš trezor sa nepodarilo pripojiť na cestu "%s". Skúste to prosím znova alebo vyberte inú cestu. unlock.error.customPath.description.notEmptyDir=Vlastná cesta pripojenia "%s" nie je prázdny priečinok. Vyberte prázdny priečinok a skúste to znova. unlock.error.customPath.description.generic=Pre tento trezor ste vybrali vlastnú cestu pripojenia, ale jej použitie zlyhalo so správou: %2$s +unlock.error.restartRequired.message=Nie je možné odomknúť trezor unlock.error.title=Odomknutie "%s" zlyhalo ## Hub hub.noKeychain.message=Nemôžem pristúpiť ku kľúču zariadenia @@ -159,9 +160,12 @@ hub.register.nameLabel=Názov zariadenia hub.register.invalidAccountKeyLabel=Neplatný kľúč účtu hub.register.registerBtn=Registrovať ### Register Device Legacy +hub.register.legacy.occupiedMsg=Názov sa už používa ### Registration Success +hub.registerSuccess.message=Zariadenie registrované hub.registerSuccess.unlockBtn=Odomknúť ### Registration Failed +hub.registerFailed.message=Registrácia zariadenia zlyhala ### Unauthorized hub.unauthorized.message=Prístup zamietnutý hub.unauthorized.description=Vaše zaradenie zatiaľ ešte nebolo autorizované pre pristúp tohto trezora. Požiadajte majiteľa trezora o autorizovanie. @@ -380,6 +384,7 @@ main.vaultDetail.unlockBtn=Odomknúť… main.vaultDetail.unlockNowBtn=Odomknúť teraz main.vaultDetail.optionsBtn=Nastavenia trezora main.vaultDetail.passwordSavedInKeychain=Heslo uložené +main.vaultDetail.share=Zdieľať… ### Unlocked main.vaultDetail.unlockedStatus=Odomknutý main.vaultDetail.accessLocation=Obsah Vášho trezora je dostupný tu: @@ -519,3 +524,6 @@ updateReminder.yesOnce=Áno, raz updateReminder.yesAutomatically=Áno, automaticky # Share Vault +shareVault.title=Zdielať trezor +shareVault.hubAd.authentication=* Silná autentifikácia +shareVault.hubAd.encryption=* Šifrovanie end-to-end diff --git a/src/main/resources/i18n/strings_sv.properties b/src/main/resources/i18n/strings_sv.properties index 962c21c96..d81406d02 100644 --- a/src/main/resources/i18n/strings_sv.properties +++ b/src/main/resources/i18n/strings_sv.properties @@ -158,13 +158,22 @@ hub.receive.message=Bearbetar svar… hub.receive.description=Cryptomator tar emot och bearbetar svaret från Hub. Vänligen vänta. ### Register Device hub.register.message=Ny enhet +hub.register.description=Detta är den första navåtkomsten från den här enheten. Vänligen registrera enheten med hjälp av din kontonyckel. hub.register.nameLabel=Enhetsnamn hub.register.invalidAccountKeyLabel=Ogiltig kontonyckel hub.register.registerBtn=Skapa konto ### Register Device Legacy +hub.register.legacy.occupiedMsg=Namnet används redan +hub.register.legacy.description=Detta är första navåtkomsten från den här enheten. Vänligen registrera den. ### Registration Success +hub.registerSuccess.message=Enhet registrerad +hub.registerSuccess.description=Din enhet är registrerad. Du kan nu fortsätta att låsa upp valvet. hub.registerSuccess.unlockBtn=Lås upp +hub.registerSuccess.legacy.description=För att komma åt valvet måste din enhet godkännas av valvägaren. ### Registration Failed +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. ### Unauthorized hub.unauthorized.message=Åtkomst nekad hub.unauthorized.description=Din enhet har ännu inte behörighet att komma åt detta valv. Be valvägaren att godkänna det. @@ -383,6 +392,7 @@ main.vaultDetail.unlockBtn=Lås upp… main.vaultDetail.unlockNowBtn=Lås upp nu main.vaultDetail.optionsBtn=Valv-inställningar main.vaultDetail.passwordSavedInKeychain=Lösenord sparat +main.vaultDetail.share=Dela… ### Unlocked main.vaultDetail.unlockedStatus=UPPLÅST main.vaultDetail.accessLocation=Valvets innehåll kan nås härifrån: @@ -448,6 +458,7 @@ vaultOptions.mount.mountPoint.custom=Använd vald mapp vaultOptions.mount.mountPoint.directoryPickerButton=Välj… vaultOptions.mount.mountPoint.directoryPickerTitle=Välj mapp vaultOptions.mount.volumeType.default=Standard (%s) +vaultOptions.mount.volumeType.restartRequired=För att använda denna volymtyp måste Cryptomator startas om. vaultOptions.mount.volume.tcp.port=TCP-port vaultOptions.mount.volume.type=Volymtyp ## Master Key @@ -522,3 +533,21 @@ updateReminder.yesOnce=Ja, en gång updateReminder.yesAutomatically=Ja, automatiskt # Share Vault +shareVault.title=Dela valv +shareVault.message=Vill du dela ditt valv med andra? +shareVault.description=Var alltid försiktig när du delar ditt valv med andra människor. Kort sagt, följ dessa steg: +shareVault.instruction.1=1. Dela åtkomst till den krypterade valvmappen via molnlagring. +shareVault.instruction.2=2. Dela valvlösenordet på ett säkert sätt. +shareVault.remarkBestPractices=För mer information, kolla in förslag för god sed i våra dokument. +shareVault.docsTooltip=Öppna dokumentationen för att lära dig mer om att dela valv. +shareVault.hubAd.description=Det säkra sättet att arbeta i grupper +shareVault.hubAd.keyManagement=• Nyckelhantering med noll-kunskap +shareVault.hubAd.authentication=• Stark autentisering +shareVault.hubAd.encryption=• Slutpunktskryptering +shareVault.visitHub=Besök Cryptomatornavet + +shareVault.hub.message=Hur man delar ett navvalv +shareVault.hub.description=För att kunna dela valvinnehållet med en annan gruppmedlem måste du utföra två steg: +shareVault.hub.instruction.1=1. Dela åtkomst till den krypterade valvmappen via molnlagring. +shareVault.hub.instruction.2=2. Ge åtkomst till gruppmedlemmen i Cryptomatornavet. +shareVault.hub.openHub=Öppna kryptomatornav \ No newline at end of file diff --git a/src/main/resources/i18n/strings_zh.properties b/src/main/resources/i18n/strings_zh.properties index 0dd0466df..28aca05e1 100644 --- a/src/main/resources/i18n/strings_zh.properties +++ b/src/main/resources/i18n/strings_zh.properties @@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=为保险库创建一个名称 addvaultwizard.new.namePrompt=保险库名称 ### Location addvaultwizard.new.locationInstruction=Cryptomator 应该在哪里存储您保险库的加密文件? +addvaultwizard.new.locationLoading=正在检查本地文件系统默认云存储目录… addvaultwizard.new.locationLabel=存储位置 addvaultwizard.new.locationPrompt=… addvaultwizard.new.directoryPickerLabel=自定义位置 @@ -141,6 +142,8 @@ 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.restartRequired.description=请在保险库选项内更改卷类型或重启 Cryptomator unlock.error.title=解锁“%s”失败 ## Hub hub.noKeychain.message=无法访问设备密钥 @@ -155,13 +158,22 @@ hub.receive.message=正在处理响应… hub.receive.description=Cryptomator 正在接收和处理来自 Hub 的响应,请稍等 ### Register Device hub.register.message=新设备 +hub.register.description=这是此设备首次访问 Hub。请使用您的账户密钥进行注册。 hub.register.nameLabel=设备名称 hub.register.invalidAccountKeyLabel=无效的账户密钥 hub.register.registerBtn=注册 ### Register Device Legacy +hub.register.legacy.occupiedMsg=名称已被使用 +hub.register.legacy.description=这是此设备首次访问 Hub。请进行注册。 ### Registration Success +hub.registerSuccess.message=设备已注册 +hub.registerSuccess.description=您的设备已成功注册。现在您可以继续解锁保险库。 hub.registerSuccess.unlockBtn=解锁 +hub.registerSuccess.legacy.description=若要访问保险库,设备保险库所有者额外的授权。 ### Registration Failed +hub.registerFailed.message=设备注册失败 +hub.registerFailed.description.generic=注册过程中出现错误。详情请查看应用程序日志。 +hub.registerFailed.description.deviceAlreadyExists=此设备已被注册给另一位用户。请尝试更改用户帐户或使用别的设备。 ### Unauthorized hub.unauthorized.message=拒绝访问 hub.unauthorized.description=您的设备尚未授权访问此保险库,请联系保险库所有者, @@ -380,6 +392,7 @@ main.vaultDetail.unlockBtn=解锁… main.vaultDetail.unlockNowBtn=立即解锁 main.vaultDetail.optionsBtn=保险库选项 main.vaultDetail.passwordSavedInKeychain=密码已保存 +main.vaultDetail.share=共享… ### Unlocked main.vaultDetail.unlockedStatus=已解锁 main.vaultDetail.accessLocation=您的保险库内容在此处访问: @@ -445,6 +458,7 @@ vaultOptions.mount.mountPoint.custom=使用选定的目录 vaultOptions.mount.mountPoint.directoryPickerButton=选择... vaultOptions.mount.mountPoint.directoryPickerTitle=选择目录 vaultOptions.mount.volumeType.default=默认 (%s) +vaultOptions.mount.volumeType.restartRequired=若要使用此类型的卷,Cryptomator 需要重新启动。 vaultOptions.mount.volume.tcp.port=TCP 端口 vaultOptions.mount.volume.type=卷类型 ## Master Key @@ -519,3 +533,21 @@ updateReminder.yesOnce=是的,仅此次 updateReminder.yesAutomatically=是的,自动 # Share Vault +shareVault.title=共享保险库 +shareVault.message=是否要与他人共享你的保险库? +shareVault.description=与他人共享保险库时请务必小心。简而言之,请遵循以下步骤: +shareVault.instruction.1=1:通过云存储共享加密保险库文件夹的访问权限。 +shareVault.instruction.2=2:通过安全的方式共享保险库密码。 +shareVault.remarkBestPractices=有关更多信息,请查看我们文档中的最佳实践建议。 +shareVault.docsTooltip=打开文档以了解有关共享保险库的更多信息。 +shareVault.hubAd.description=安全的团队合作方式 +shareVault.hubAd.keyManagement=• 零知识密钥管理 +shareVault.hubAd.authentication=• 强认证 +shareVault.hubAd.encryption=• 端到端加密 +shareVault.visitHub=访问 Cryptomator Hub + +shareVault.hub.message=如何共享 Hub 保险库 +shareVault.hub.description=为了与其他团队成员共享保险库内容,您必须执行以下两步: +shareVault.hub.instruction.1=1:通过云存储共享加密保险库文件夹的访问权限。 +shareVault.hub.instruction.2=2:在 Cryptomator Hub 内授予团队成员访问权限。 +shareVault.hub.openHub=打开 Cryptomator Hub \ No newline at end of file