mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-05-15 09:11:29 +00:00
Compare commits
2 Commits
1.15.2
...
feature/hy
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d521c3f78 | ||
|
|
737d7e6317 |
5
.github/workflows/release-check.yml
vendored
5
.github/workflows/release-check.yml
vendored
@@ -57,6 +57,11 @@ jobs:
|
||||
dependency-check
|
||||
env:
|
||||
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5
|
||||
- name: Validate urls used in app
|
||||
uses: urlstechie/urlchecker-action@0.0.34
|
||||
with:
|
||||
file_types: .md,.json
|
||||
include_files: README.md,src/main/resources/hyperlinks.json
|
||||
- name: Run org.owasp:dependency-check plugin
|
||||
id: dependency-check
|
||||
continue-on-error: true
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright 2018 Armin Schrenk <armin.schrenk@zoho.eu> -->
|
||||
<component type="desktop-application">
|
||||
<id>org.cryptomator.Cryptomator</id>
|
||||
<metadata_license>FSFAP</metadata_license>
|
||||
<project_license>GPL-3.0-or-later</project_license>
|
||||
<name>Cryptomator</name>
|
||||
<summary>Encryption for your cloud made easy</summary>
|
||||
<summary>Encryption made easy and optimized for the cloud</summary>
|
||||
|
||||
<description>
|
||||
<p>
|
||||
@@ -43,16 +44,12 @@
|
||||
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<caption>Encrypt your data, protect your privacy</caption>
|
||||
<image>https://static.cryptomator.org/desktop/flathubScreenshots/MainWindowUnlocked_light.png</image>
|
||||
<caption>Light theme</caption>
|
||||
<image>https://user-images.githubusercontent.com/11858409/156986109-6e58f59c-8b8c-4501-b33b-bb1e33007cea.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<caption>Dark theme available</caption>
|
||||
<image>https://static.cryptomator.org/desktop/flathubScreenshots/MainWindowUnlock_dark.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<caption>Uses AES-GCM 256 - an industry standardized, quantum resistant encryption</caption>
|
||||
<image>https://static.cryptomator.org/desktop/flathubScreenshots/MainWindowUnlockDialog_light.png</image>
|
||||
<caption>Dark theme</caption>
|
||||
<image>https://user-images.githubusercontent.com/11858409/156986113-6c5d7801-86e0-4643-bc2f-aff9d95d3ce0.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
||||
@@ -77,12 +74,6 @@
|
||||
</content_rating>
|
||||
|
||||
<releases>
|
||||
<release date="2025-04-04" version="1.15.2">
|
||||
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.15.2</url>
|
||||
</release>
|
||||
<release date="2025-02-05" version="1.15.1">
|
||||
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.15.1</url>
|
||||
</release>
|
||||
<release date="2025-02-03" version="1.15.0">
|
||||
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.15.0</url>
|
||||
</release>
|
||||
|
||||
15
pom.xml
15
pom.xml
@@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.cryptomator</groupId>
|
||||
<artifactId>cryptomator</artifactId>
|
||||
<version>1.15.2</version>
|
||||
<version>1.16.0-SNAPSHOT</version>
|
||||
<name>Cryptomator Desktop App</name>
|
||||
|
||||
<organization>
|
||||
@@ -39,7 +39,7 @@
|
||||
<cryptomator.integrations.mac.version>1.2.4</cryptomator.integrations.mac.version>
|
||||
<cryptomator.integrations.linux.version>1.5.2</cryptomator.integrations.linux.version>
|
||||
<cryptomator.fuse.version>5.0.2</cryptomator.fuse.version>
|
||||
<cryptomator.webdav.version>2.0.10</cryptomator.webdav.version>
|
||||
<cryptomator.webdav.version>2.0.7</cryptomator.webdav.version>
|
||||
|
||||
<!-- 3rd party dependencies -->
|
||||
<commons-lang3.version>3.17.0</commons-lang3.version>
|
||||
@@ -75,17 +75,6 @@
|
||||
<surefire.jacoco.args></surefire.jacoco.args>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<!-- TODO: remove once fuse-nio-adapter is updated -->
|
||||
<dependency>
|
||||
<groupId>org.cryptomator</groupId>
|
||||
<artifactId>jfuse</artifactId>
|
||||
<version>0.7.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<dependencies>
|
||||
<!-- Cryptomator Libs -->
|
||||
<dependency>
|
||||
|
||||
31
src/main/java/org/cryptomator/common/Hyperlinks.java
Normal file
31
src/main/java/org/cryptomator/common/Hyperlinks.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package org.cryptomator.common;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public record Hyperlinks(String docsVolumeType, String docsGettingStarted, String homepageHub) {
|
||||
|
||||
private static final ObjectMapper JSON_DESERIALIZER = new ObjectMapper();
|
||||
/*
|
||||
String docsAccessingVaults;
|
||||
String docsExpertSettings;
|
||||
String docsManualMigration;
|
||||
String homepageDownload;
|
||||
String homepageHub;
|
||||
String homepageDonate;
|
||||
String homepageSponsors;
|
||||
String storeDesktop;
|
||||
*/
|
||||
|
||||
|
||||
public static Hyperlinks load() {
|
||||
try {
|
||||
return JSON_DESERIALIZER.readValue(Hyperlinks.class.getResource("/hyperlinks.json"), Hyperlinks.class);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package org.cryptomator.launcher;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import org.cryptomator.common.Hyperlinks;
|
||||
import org.cryptomator.integrations.autostart.AutoStartProvider;
|
||||
import org.cryptomator.integrations.tray.TrayIntegrationProvider;
|
||||
import org.cryptomator.integrations.uiappearance.UiAppearanceProvider;
|
||||
@@ -23,6 +24,12 @@ class CryptomatorModule {
|
||||
return ResourceBundle.getBundle("i18n.strings");
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
static Hyperlinks provideHyperlinks() {
|
||||
return Hyperlinks.load();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
@Named("launchEventQueue")
|
||||
|
||||
@@ -26,7 +26,7 @@ public class CreateNewVaultExpertSettingsController implements FxController {
|
||||
|
||||
public static final int MAX_SHORTENING_THRESHOLD = 220;
|
||||
public static final int MIN_SHORTENING_THRESHOLD = 36;
|
||||
private static final String DOCS_NAME_SHORTENING_URL = "https://docs.cryptomator.org/security/architecture/#name-shortening";
|
||||
private static final String DOCS_NAME_SHORTENING_URL = "https://docs.cryptomator.org/en/1.7/security/architecture/#name-shortening";
|
||||
|
||||
private final Stage window;
|
||||
private final Lazy<Application> application;
|
||||
|
||||
@@ -36,7 +36,6 @@ import javafx.stage.Stage;
|
||||
import javafx.stage.WindowEvent;
|
||||
import javafx.util.Duration;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
@PassphraseEntryScoped
|
||||
public class PassphraseEntryController implements FxController {
|
||||
@@ -50,7 +49,6 @@ public class PassphraseEntryController implements FxController {
|
||||
private final ForgetPasswordComponent.Builder forgetPassword;
|
||||
private final KeychainManager keychain;
|
||||
private final StringBinding vaultName;
|
||||
private final ExecutorService backgroundExecutorService;
|
||||
private final BooleanProperty unlockInProgress = new SimpleBooleanProperty();
|
||||
private final ObjectBinding<ContentDisplay> unlockButtonContentDisplay = Bindings.when(unlockInProgress).then(ContentDisplay.LEFT).otherwise(ContentDisplay.TEXT_ONLY);
|
||||
private final BooleanProperty unlockButtonDisabled = new SimpleBooleanProperty();
|
||||
@@ -66,7 +64,7 @@ public class PassphraseEntryController implements FxController {
|
||||
public Animation unlockAnimation;
|
||||
|
||||
@Inject
|
||||
public PassphraseEntryController(@KeyLoading Stage window, @KeyLoading Vault vault, CompletableFuture<PassphraseEntryResult> result, @Nullable @Named("savedPassword") Passphrase savedPassword, ForgetPasswordComponent.Builder forgetPassword, KeychainManager keychain, ExecutorService backgroundExecutorService) {
|
||||
public PassphraseEntryController(@KeyLoading Stage window, @KeyLoading Vault vault, CompletableFuture<PassphraseEntryResult> result, @Nullable @Named("savedPassword") Passphrase savedPassword, ForgetPasswordComponent.Builder forgetPassword, KeychainManager keychain) {
|
||||
this.window = window;
|
||||
this.vault = vault;
|
||||
this.result = result;
|
||||
@@ -74,8 +72,8 @@ public class PassphraseEntryController implements FxController {
|
||||
this.forgetPassword = forgetPassword;
|
||||
this.keychain = keychain;
|
||||
this.vaultName = WeakBindings.bindString(vault.displayNameProperty());
|
||||
this.backgroundExecutorService = backgroundExecutorService;
|
||||
window.setOnHiding(this::windowClosed);
|
||||
result.whenCompleteAsync((r, t) -> unlockInProgress.set(false), Platform::runLater);
|
||||
}
|
||||
|
||||
@FXML
|
||||
@@ -121,6 +119,8 @@ public class PassphraseEntryController implements FxController {
|
||||
new KeyFrame(Duration.millis(800), legsExtendedY, legsExtendedX, faceHidden), //
|
||||
new KeyFrame(Duration.millis(1000), faceVisible) //
|
||||
);
|
||||
|
||||
result.whenCompleteAsync((r, t) -> stopUnlockAnimation());
|
||||
}
|
||||
|
||||
@FXML
|
||||
@@ -133,9 +133,6 @@ public class PassphraseEntryController implements FxController {
|
||||
result.cancel(true);
|
||||
LOG.debug("Unlock canceled by user.");
|
||||
}
|
||||
if( passwordField != null) {
|
||||
passwordField.getCharacters().destroy();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -145,7 +142,7 @@ public class PassphraseEntryController implements FxController {
|
||||
unlockInProgress.set(true);
|
||||
CharSequence pwFieldContents = passwordField.getCharacters();
|
||||
Passphrase pw = Passphrase.copyOf(pwFieldContents);
|
||||
result.completeAsync(() -> new PassphraseEntryResult(pw, savePasswordCheckbox.isSelected()), backgroundExecutorService);
|
||||
result.complete(new PassphraseEntryResult(pw, savePasswordCheckbox.isSelected()));
|
||||
startUnlockAnimation();
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import javafx.fxml.FXML;
|
||||
public class WelcomeController implements FxController {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(WelcomeController.class);
|
||||
private static final String GETTING_STARTED_URI = "https://docs.cryptomator.org/desktop/getting-started/";
|
||||
private static final String GETTING_STARTED_URI = "https://docs.cryptomator.org/en/1.7/desktop/getting-started/";
|
||||
|
||||
private final Application application;
|
||||
private final BooleanBinding noVaultPresent;
|
||||
|
||||
@@ -10,7 +10,7 @@ import javafx.stage.Stage;
|
||||
|
||||
public class MigrationImpossibleController implements FxController {
|
||||
|
||||
private static final String HELP_URI = "https://docs.cryptomator.org/help/manual-migration/";
|
||||
private static final String HELP_URI = "https://docs.cryptomator.org/en/1.7/help/manual-migration/";
|
||||
|
||||
private final Application application;
|
||||
private final Stage window;
|
||||
|
||||
@@ -22,7 +22,7 @@ import java.util.ResourceBundle;
|
||||
@PreferencesScoped
|
||||
public class VolumePreferencesController implements FxController {
|
||||
|
||||
public static final String DOCS_MOUNTING_URL = "https://docs.cryptomator.org/desktop/volume-type/";
|
||||
public static final String DOCS_MOUNTING_URL = "https://docs.cryptomator.org/en/1.7/desktop/volume-type/";
|
||||
public static final int MIN_PORT = 1024;
|
||||
public static final int MAX_PORT = 65535;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.cryptomator.ui.sharevault;
|
||||
|
||||
import dagger.Lazy;
|
||||
import org.cryptomator.common.Hyperlinks;
|
||||
import org.cryptomator.common.vaults.Vault;
|
||||
import org.cryptomator.ui.common.FxController;
|
||||
import org.cryptomator.ui.keyloading.hub.HubKeyLoadingStrategy;
|
||||
@@ -18,9 +19,9 @@ import java.net.URISyntaxException;
|
||||
public class ShareVaultController implements FxController {
|
||||
|
||||
private static final String SCHEME_PREFIX = "hub+";
|
||||
private static final String VISIT_HUB_URL = "https://cryptomator.org/hub/";
|
||||
private static final String BEST_PRACTICES_URL = "https://docs.cryptomator.org/en/latest/security/best-practices/#sharing-of-vaults";
|
||||
|
||||
private final String VISIT_HUB_URL;
|
||||
private final Stage window;
|
||||
private final Lazy<Application> application;
|
||||
private final Vault vault;
|
||||
@@ -29,10 +30,12 @@ public class ShareVaultController implements FxController {
|
||||
@Inject
|
||||
ShareVaultController(@ShareVaultWindow Stage window, //
|
||||
Lazy<Application> application, //
|
||||
Hyperlinks links, //
|
||||
@ShareVaultWindow Vault vault) {
|
||||
this.window = window;
|
||||
this.application = application;
|
||||
this.vault = vault;
|
||||
this.VISIT_HUB_URL =links.homepageHub();
|
||||
var vaultScheme = vault.getVaultConfigCache().getUnchecked().getKeyId().getScheme();
|
||||
this.hubVault = (vaultScheme.equals(HubKeyLoadingStrategy.SCHEME_HUB_HTTP) || vaultScheme.equals(HubKeyLoadingStrategy.SCHEME_HUB_HTTPS));
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import java.io.UncheckedIOException;
|
||||
@WrongFileAlertScoped
|
||||
public class WrongFileAlertController implements FxController {
|
||||
|
||||
private static final String DOCUMENTATION_URI = "https://docs.cryptomator.org/desktop/accessing-vaults/";
|
||||
private static final String DOCUMENTATION_URI = "https://docs.cryptomator.org/en/1.7/desktop/accessing-vaults/";
|
||||
|
||||
private final Application app;
|
||||
private final Stage window;
|
||||
|
||||
4
src/main/resources/hyperlinks.json
Normal file
4
src/main/resources/hyperlinks.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"docsGettingStarted": "https://docs.cryptomator.org/desktop/getting-started/",
|
||||
"homepageHub": "https://cryptomator.org/hub"
|
||||
}
|
||||
@@ -107,7 +107,6 @@ addvaultwizard.success.unlockNow=Unlock Now
|
||||
removeVault.title=Remove "%s"
|
||||
removeVault.message=Remove vault?
|
||||
removeVault.description=This will only make Cryptomator forget about this vault. You can add it again. No encrypted files will be deleted from your hard drive.
|
||||
removeVault.confirmBtn=Remove Vault
|
||||
|
||||
# Change Password
|
||||
changepassword.title=Change Password
|
||||
|
||||
198
src/main/resources/i18n/strings_en.properties
Normal file
198
src/main/resources/i18n/strings_en.properties
Normal file
@@ -0,0 +1,198 @@
|
||||
# Locale Specific CSS files such as CJK, RTL,...
|
||||
|
||||
# Generics
|
||||
## Button
|
||||
generic.button.apply=Apply
|
||||
generic.button.back=Back
|
||||
generic.button.cancel=Cancel
|
||||
generic.button.change=Change
|
||||
generic.button.choose=Choose…
|
||||
generic.button.close=Close
|
||||
generic.button.done=Done
|
||||
generic.button.next=Next
|
||||
|
||||
# Error
|
||||
|
||||
# Defaults
|
||||
|
||||
# Tray Menu
|
||||
traymenu.showMainWindow=Show
|
||||
traymenu.showPreferencesWindow=Preferences
|
||||
traymenu.quitApplication=Quit
|
||||
traymenu.vault.unlock=Unlock
|
||||
traymenu.vault.lock=Lock
|
||||
traymenu.vault.reveal=Reveal
|
||||
|
||||
# Add Vault Wizard
|
||||
addvaultwizard.title=Add Vault
|
||||
## New
|
||||
### Name
|
||||
addvaultwizard.new.nameInstruction=Choose a name for the vault
|
||||
addvaultwizard.new.namePrompt=Vault Name
|
||||
### Location
|
||||
addvaultwizard.new.locationInstruction=Where should Cryptomator store the encrypted files of your vault?
|
||||
addvaultwizard.new.locationLabel=Storage location
|
||||
addvaultwizard.new.locationPrompt=…
|
||||
addvaultwizard.new.directoryPickerButton=Choose…
|
||||
addvaultwizard.new.directoryPickerTitle=Select Directory
|
||||
### Expert Settings
|
||||
### Password
|
||||
addvaultwizard.new.createVaultBtn=Create Vault
|
||||
### Information
|
||||
## Existing
|
||||
addvaultwizard.existing.chooseBtn=Choose…
|
||||
## Success
|
||||
addvaultwizard.success.nextStepsInstructions=Added vault "%s".\nYou need to unlock this vault to access or add contents. Alternatively you can unlock it at any later point in time.
|
||||
addvaultwizard.success.unlockNow=Unlock Now
|
||||
|
||||
# Remove Vault
|
||||
removeVault.confirmBtn=Remove Vault
|
||||
|
||||
# Change Password
|
||||
changepassword.title=Change Password
|
||||
changepassword.enterOldPassword=Enter the current password for "%s"
|
||||
|
||||
# Forget Password
|
||||
forgetPassword.title=Forget Password
|
||||
forgetPassword.confirmBtn=Forget Password
|
||||
|
||||
# Unlock
|
||||
unlock.passwordPrompt=Enter password for "%s":
|
||||
unlock.unlockBtn=Unlock
|
||||
## Select
|
||||
unlock.chooseMasterkey.filePickerTitle=Select Masterkey File
|
||||
## Success
|
||||
unlock.success.revealBtn=Reveal Drive
|
||||
## Failure
|
||||
## Hub
|
||||
### Waiting
|
||||
### Receive Key
|
||||
### Register Device
|
||||
### Register Device Legacy
|
||||
### Registration Success
|
||||
hub.registerSuccess.unlockBtn=Unlock
|
||||
### Registration Failed
|
||||
### Unauthorized
|
||||
### Requires Account Initialization
|
||||
### License Exceeded
|
||||
|
||||
# Lock
|
||||
## Force
|
||||
## Failure
|
||||
|
||||
# Migration
|
||||
migration.title=Upgrade Vault
|
||||
## Start
|
||||
migration.start.header=Upgrade Vault
|
||||
## Run
|
||||
migration.run.enterPassword=Enter the password for "%s"
|
||||
migration.run.startMigrationBtn=Migrate Vault
|
||||
## Success
|
||||
migration.success.nextStepsInstructions=Migrated "%s" successfully.\nYou can now unlock your vault.
|
||||
migration.success.unlockNow=Unlock Now
|
||||
## Missing file system capabilities
|
||||
## Impossible
|
||||
|
||||
# Health Check
|
||||
## Start
|
||||
## Start Failure
|
||||
## Check Selection
|
||||
## Detail view
|
||||
## Result view
|
||||
## Fix Application
|
||||
|
||||
# Preferences
|
||||
preferences.title=Preferences
|
||||
## General
|
||||
preferences.general=General
|
||||
preferences.general.startHidden=Hide window when starting Cryptomator
|
||||
preferences.general.debugLogging=Enable debug logging
|
||||
## Interface
|
||||
## Volume
|
||||
preferences.volume=Virtual Drive
|
||||
## Updates
|
||||
preferences.updates=Updates
|
||||
preferences.updates.currentVersion=Current Version: %s
|
||||
preferences.updates.autoUpdateCheck=Check for updates automatically
|
||||
preferences.updates.checkNowBtn=Check Now
|
||||
preferences.updates.updateAvailable=Update to version %s available.
|
||||
|
||||
## Contribution
|
||||
|
||||
### Remove License Key Dialog
|
||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||
|
||||
## About
|
||||
|
||||
# Vault Statistics
|
||||
## Read
|
||||
## Write
|
||||
|
||||
## Accesses
|
||||
|
||||
|
||||
# Main Window
|
||||
## Vault List
|
||||
main.vaultlist.emptyList.onboardingInstruction=Click here to add a vault
|
||||
main.vaultlist.contextMenu.lock=Lock
|
||||
main.vaultlist.contextMenu.unlockNow=Unlock Now
|
||||
main.vaultlist.contextMenu.reveal=Reveal Drive
|
||||
##Notificaition
|
||||
## Vault Detail
|
||||
### Welcome
|
||||
### Locked
|
||||
main.vaultDetail.lockedStatus=LOCKED
|
||||
main.vaultDetail.unlockNowBtn=Unlock Now
|
||||
main.vaultDetail.optionsBtn=Vault Options
|
||||
### Unlocked
|
||||
main.vaultDetail.unlockedStatus=UNLOCKED
|
||||
main.vaultDetail.accessLocation=Your vault's contents are accessible here:
|
||||
main.vaultDetail.revealBtn=Reveal Drive
|
||||
main.vaultDetail.lockBtn=Lock
|
||||
main.vaultDetail.throughput.idle=idle
|
||||
main.vaultDetail.throughput.mbps=%.1f MiB/s
|
||||
### Missing
|
||||
### Needs Migration
|
||||
main.vaultDetail.migrateButton=Upgrade Vault
|
||||
### Error
|
||||
|
||||
# Wrong File Alert
|
||||
|
||||
# Vault Options
|
||||
## General
|
||||
vaultOptions.general=General
|
||||
vaultOptions.general.vaultName=Vault Name
|
||||
vaultOptions.general.actionAfterUnlock.reveal=Reveal Drive
|
||||
|
||||
## Mount
|
||||
vaultOptions.mount=Mounting
|
||||
vaultOptions.mount.mountPoint.directoryPickerButton=Choose…
|
||||
## Master Key
|
||||
vaultOptions.masterkey.changePasswordBtn=Change Password
|
||||
## Hub
|
||||
|
||||
# Recovery Key
|
||||
## Display Recovery Key
|
||||
## Reset Password
|
||||
### Enter Recovery Key
|
||||
### Reset Password
|
||||
### Recovery Key Password Reset Success
|
||||
|
||||
# Convert Vault
|
||||
|
||||
# New Password
|
||||
passwordStrength.messageLabel.0=Very weak
|
||||
passwordStrength.messageLabel.1=Weak
|
||||
passwordStrength.messageLabel.2=Fair
|
||||
passwordStrength.messageLabel.3=Strong
|
||||
passwordStrength.messageLabel.4=Very strong
|
||||
|
||||
# Quit
|
||||
|
||||
# Forced Quit
|
||||
|
||||
# Update Reminder
|
||||
|
||||
#Dokany Support End
|
||||
|
||||
# Share Vault
|
||||
@@ -6,7 +6,7 @@ generic.button.apply=적용
|
||||
generic.button.back=이전
|
||||
generic.button.cancel=취소
|
||||
generic.button.change=변경
|
||||
generic.button.choose=선택…
|
||||
generic.button.choose=선택
|
||||
generic.button.close=닫기
|
||||
generic.button.copy=복사
|
||||
generic.button.copied=복사됨!
|
||||
@@ -16,16 +16,16 @@ generic.button.print=인쇄
|
||||
generic.button.remove=제거
|
||||
|
||||
# Error
|
||||
error.message=오류 발생
|
||||
error.description=예상치 못한 에러가 발생했습니다. 해결법을 검색하십시오. 만약 보고된 적이 없는 에러일 경우, 새로 신고해도 좋습니다.
|
||||
error.message=오류가 발생했습니다
|
||||
error.description=예상치 못한 에러가 발생했습니다. 온라인에 에러를 검색해서 해결하십시오. 만약 신고된 적이 없는 에러일 경우, 새로 신고해도 좋습니다.
|
||||
error.hyperlink.lookup=에러 검색하기
|
||||
error.hyperlink.report=에러 보고하기
|
||||
error.technicalDetails=상세 정보:
|
||||
error.existingSolutionDescription=Cryptomator에 알 수 없는 문제가 발생했습니다. 하지만 이 오류에 대한 기존 해결법이 있습니다. 다음 링크를 살펴보십시오.
|
||||
error.hyperlink.solution=해결법 찾기
|
||||
error.existingSolutionDescription=Cryptomator에 알수 없는 문제가 발생했습니다. 하지만 이 오류에 대한 기존 해결책이 있습니다. 다음 링크를 살펴보시기 바랍니다.
|
||||
error.hyperlink.solution=솔루션 찾기
|
||||
error.lookupPermissionMessage=Cryptomator는 온라인에서 이 문제에 대한 해결책을 찾아볼 수 있습니다. 그러면 귀하의 IP 주소가 문제 데이터베이스로 전송됩니다.
|
||||
error.dismiss=무시
|
||||
error.lookUpSolution=해결법 찾기
|
||||
error.lookUpSolution=솔루션 찾기
|
||||
|
||||
# Defaults
|
||||
defaults.vault.vaultName=Vault
|
||||
@@ -42,7 +42,7 @@ traymenu.vault.reveal=표시
|
||||
# Add Vault Wizard
|
||||
addvaultwizard.title=Vault 추가
|
||||
## New
|
||||
addvaultwizard.new.title=새로운 Vault 추가
|
||||
addvaultwizard.new.title=새로운 금고 추가
|
||||
### Name
|
||||
addvaultwizard.new.nameInstruction=새 Vault의 이름을 입력하십시오
|
||||
addvaultwizard.new.namePrompt=Vault 이름
|
||||
@@ -52,7 +52,7 @@ addvaultwizard.new.locationLoading=기본 클라우드 저장소 디렉터리에
|
||||
addvaultwizard.new.locationLabel=저장 위치
|
||||
addvaultwizard.new.locationPrompt=…
|
||||
addvaultwizard.new.directoryPickerLabel=사용자 지정 위치
|
||||
addvaultwizard.new.directoryPickerButton=선택…
|
||||
addvaultwizard.new.directoryPickerButton=선택
|
||||
addvaultwizard.new.directoryPickerTitle=디렉터리 선택
|
||||
addvaultwizard.new.fileAlreadyExists=Vault 내에 이미 존재하는 파일 또는 디렉터리 이름입니다.
|
||||
addvaultwizard.new.locationDoesNotExist=지정된 디렉터리가 존재하지 않거나 접근 할 수 없습니다.
|
||||
@@ -65,7 +65,7 @@ addvaultwizard.new.validCharacters.chars=문자 (예시: a, ж or 수)
|
||||
addvaultwizard.new.validCharacters.numbers=숫자
|
||||
addvaultwizard.new.validCharacters.dashes=대시 (%s) 또는 언더바 (%s)
|
||||
### Expert Settings
|
||||
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=전문가 설정 활성화
|
||||
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=전문가용 설정 활성화
|
||||
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=36과 220 사이 숫자를 입력해주세요 (기본값: 220)
|
||||
addvaultwizard.new.expertSettings.shorteningThreshold.tooltip=더 자세한 정보는 관련 문서에서 볼 수 있습니다.
|
||||
addvaultwizard.new.expertSettings.shorteningThreshold.title=암호화된 파일명의 최대 길이
|
||||
@@ -73,29 +73,29 @@ addvaultwizard.new.expertSettings.shorteningThreshold.valid=유효
|
||||
### Password
|
||||
addvaultwizard.new.createVaultBtn=Vault 생성
|
||||
addvaultwizard.new.generateRecoveryKeyChoice=비밀번호가 없으면 데이터에 접근할 수 없습니다. 비밀번호를 잊었을 때를 대비한 복구 키를 원하십니까?
|
||||
addvaultwizard.new.generateRecoveryKeyChoice.yes=네, 보안보다 비밀번호를 잊어버리는 것이 더 걱정됩니다.
|
||||
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.3=금지 사항
|
||||
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.5=• 암호화를 위한 파일을 이 디렉터리에 붙여넣지 마십시요.
|
||||
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.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.3=이 볼륨에 추가된 모든 파일은 Cryptomator로 암호화됩니다. 다른 드라이브/폴더처럼 작업할 수 있습니다. 볼륨의 내용은 복호화 된 것 처럼 보여지지만, 모든 파일은 항상 암호화되어 하드디스크에 저장됩니다.
|
||||
addvault.new.readme.accessLocation.4=이 파일은 지우셔도 무방합니다.
|
||||
## Existing
|
||||
addvaultwizard.existing.title=기존 금고 추가
|
||||
addvaultwizard.existing.instruction=이미 존재하는 vault 폴더 내에서 "vault.cryptomator" 파일을 선택하세요. 만약 "masterkey.cryptomator"만 있다면 그걸 대신 선택하세요.
|
||||
addvaultwizard.existing.chooseBtn=선택…
|
||||
addvaultwizard.existing.chooseBtn=선택
|
||||
addvaultwizard.existing.filePickerTitle=Vault 파일 선택
|
||||
addvaultwizard.existing.filePickerMimeDesc=Cryptomator Vault
|
||||
## Success
|
||||
@@ -105,37 +105,37 @@ addvaultwizard.success.unlockNow=지금 잠금해제
|
||||
# Remove Vault
|
||||
removeVault.title=Vault 제거
|
||||
removeVault.message=Vault를 삭제하시겠습니까?
|
||||
removeVault.description=이 행위는 Cryptomator에서만 이 Vault를 지웁니다. 나중에 다시 추가할 수 있습니다. 암호화된 파일은 하드디스크에서 삭제되지 않습니다.
|
||||
removeVault.description=이 행위는 단지 Cryptomator에서 이 Vault를 잊게합니다. 나중에 다시 추가 할 수 있습니다. 암호화된 파일은 하드디스크에서 삭제되지 않을 것입니다.
|
||||
|
||||
# Change Password
|
||||
changepassword.title=비밀번호 변경
|
||||
changepassword.enterOldPassword="%s"의 비밀번호를 입력하여 주십시요.
|
||||
changepassword.finalConfirmation=비밀번호를 잊어버리면, 데이터에 접근할 수 없다는 것을 이해했습니다.
|
||||
changepassword.finalConfirmation=비밀번호를 잊어버리면, 데이터에 접근할 수 없음을 이해했습니다.
|
||||
|
||||
# Forget Password
|
||||
forgetPassword.title=비밀번호 삭제
|
||||
forgetPassword.title=비밀번호 분실
|
||||
forgetPassword.message=저장된 비밀번호를 삭제할까요?
|
||||
forgetPassword.description=시스템 키체인에서 이 Vault의 저장된 비밀번호가 삭제될 것입니다.
|
||||
forgetPassword.confirmBtn=비밀번호 삭제
|
||||
forgetPassword.confirmBtn=비밀번호 분실
|
||||
|
||||
# Unlock
|
||||
unlock.title="%s" 잠금 해제
|
||||
unlock.passwordPrompt="%s"의 비밀번호를 입력하십시오.
|
||||
unlock.passwordPrompt="%s"의 비밀번호를 입력하십시요.
|
||||
unlock.savePassword=비밀번호 기억
|
||||
unlock.unlockBtn=잠금해제
|
||||
## Select
|
||||
unlock.chooseMasterkey.message=마스터키 파일을 찾을 수 없습니다
|
||||
unlock.chooseMasterkey.description=이 Vault의 Masterkey를 찾지 못했습니다. 마스터 키 위치를 수동으로 선택하여 주십시오.
|
||||
unlock.chooseMasterkey.filePickerTitle=Masterkey 파일 선택
|
||||
unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator Masterkey
|
||||
unlock.chooseMasterkey.description=추정되는 위치에서 이 Vault의 마스터 키를 찾지 못했습니다. 마스터 키 위치를 수동으로 선택하여 주십시요.
|
||||
unlock.chooseMasterkey.filePickerTitle=마스터키 파일 선택
|
||||
unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator 마스터키
|
||||
## Success
|
||||
unlock.success.message=잠금 해제 성공
|
||||
unlock.success.description="%s"이(가) 성공적으로 잠금 해제되었습니다. 이제 이 Vault를 마운트 지점으로 접근할 수 있습니다.
|
||||
unlock.success.rememberChoice=선택 기억하기, 다시 묻지 않음
|
||||
unlock.success.rememberChoice=선택 기억함, 다시 묻지 않음
|
||||
unlock.success.revealBtn=드라이브 표시
|
||||
## Failure
|
||||
unlock.error.customPath.message=Vault를 사용자 정의 경로에 마운트할 수 없습니다.
|
||||
unlock.error.customPath.description.notSupported=사용자 지정 경로를 계속 사용하려면 설정으로 이동하여 이를 지원하는 볼륨 유형을 선택하십시오. 그렇지 않으면 볼트 옵션으로 이동하여 지원되는 마운트 지점을 선택하십시오.
|
||||
unlock.error.customPath.message=Vault을 사용자 정의 경로에 마운트할 수 없습니다.
|
||||
unlock.error.customPath.description.notSupported=사용자 지정 경로를 계속 사용하려면 기본 설정으로 이동하여 이를 지원하는 볼륨 유형을 선택하세요. 그렇지 않으면 볼트 옵션으로 이동하여 지원되는 마운트 지점을 선택하십시오.
|
||||
unlock.error.customPath.description.notExists=사용자 정의 마운트 경로가 존재하지 않습니다. 로컬 파일 시스템에서 생성하거나 볼트 옵션에서 변경하세요.
|
||||
unlock.error.customPath.description.inUse=드라이브 문자 또는 사용자 정의 마운트 경로 "%s"가 이미 사용 중입니다.
|
||||
unlock.error.customPath.description.hideawayNotDir=잠금 해제에 사용된 임시 숨김 파일 "%3$s"을 제거할 수 없습니다. 파일을 확인한 후 수동으로 삭제해 주세요.
|
||||
@@ -143,11 +143,11 @@ unlock.error.customPath.description.couldNotBeCleaned=Vault를 "%s" 경로에
|
||||
unlock.error.customPath.description.notEmptyDir=사용자 정의 마운트 경로 "%s"은 빈 폴더가 아닙니다. 빈 폴더를 선택하고 다시 시도하세요.
|
||||
unlock.error.customPath.description.generic=이 볼트에 대한 사용자 정의 마운트 경로를 선택했지만 다음 메시지와 함께 해당 경로를 사용하지 못했습니다: %2$s
|
||||
unlock.error.restartRequired.message=Vault을 잠금 해제할 수 없습니다.
|
||||
unlock.error.restartRequired.description=볼트 옵션에서 볼륨 유형을 변경하거나 Cryptomator를 다시 시작하십시오.
|
||||
unlock.error.restartRequired.description=볼트 옵션에서 볼륨 유형을 변경하거나 Cryptomator를 다시 시작하세요.
|
||||
unlock.error.title="%s" 잠금 해제 실패
|
||||
## Hub
|
||||
hub.noKeychain.message=장치 키에 액세스할 수 없습니다
|
||||
hub.noKeychain.description=허브 저장소를 잠금 해제하려면 키체인을 사용하여 보호되는 장치 키가 필요합니다. 계속하려면 "%s"을 활성화하고 기본 설정에서 키체인을 선택하십시오.
|
||||
hub.noKeychain.description=허브 저장소를 잠금 해제하려면 키체인을 사용하여 보호되는 장치 키가 필요합니다. 계속하려면 "%s"을 활성화하고 기본 설정에서 키체인을 선택하세요.
|
||||
hub.noKeychain.openBtn=설정 열기
|
||||
### Waiting
|
||||
hub.auth.message=인증 대기중…
|
||||
@@ -273,7 +273,7 @@ health.result.fixStateFilter.fixing=문제 해결중…
|
||||
health.result.fixStateFilter.fixed=문제 해결됨
|
||||
health.result.fixStateFilter.fixFailed=문제 해결 실패
|
||||
## Fix Application
|
||||
health.fix.fixBtn=문제 해결
|
||||
health.fix.fixBtn=문제해결
|
||||
health.fix.successTip=문제 해결이 성공적으로 완료되었습니다
|
||||
health.fix.failTip=문제 해결 실패, 상세 정보는 로그를 참조하십시요.
|
||||
|
||||
@@ -290,7 +290,7 @@ preferences.general.keychainBackend=다음 경로에 비밀번호 저장
|
||||
preferences.general.quickAccessService=열린 Vault를 빠른 접근 위치에 추가하기
|
||||
## Interface
|
||||
preferences.interface=인터페이스
|
||||
preferences.interface.theme=테마
|
||||
preferences.interface.theme=테마설정
|
||||
preferences.interface.theme.automatic=자동
|
||||
preferences.interface.theme.dark=어둡게
|
||||
preferences.interface.theme.light=밝게
|
||||
@@ -331,7 +331,7 @@ preferences.updates.upToDate=현재 최신 버전의 Cryptomator를 사용하고
|
||||
|
||||
## Contribution
|
||||
preferences.contribute=후원하기
|
||||
preferences.contribute.registeredFor=%s(으)로 후원자 인증 등록됨
|
||||
preferences.contribute.registeredFor=%s (으)로 후원자 인증 등록됨
|
||||
preferences.contribute.noCertificate=Cryptomator를 후원하시고 후원자 인증을 받으십시요. 라이선스 키와 비슷하지만 무료 소프트웨어를 사용하는 멋진 사람들을 위한 것입니다. ;-)
|
||||
preferences.contribute.getCertificate=아직 후원자 인증이 없으신가요? 어떻게 얻는지 배울 수 있습니다.
|
||||
preferences.contribute.promptText=후원자 인증코드를 여기에 붙여넣기
|
||||
@@ -406,7 +406,7 @@ main.vaultDetail.unlockBtn=잠금 해제...
|
||||
main.vaultDetail.unlockNowBtn=지금 잠금 해제
|
||||
main.vaultDetail.optionsBtn=Vault 옵션
|
||||
main.vaultDetail.passwordSavedInKeychain=비밀번호 저장됨
|
||||
main.vaultDetail.share=공유하기…
|
||||
main.vaultDetail.share=공유하기
|
||||
### Unlocked
|
||||
main.vaultDetail.unlockedStatus=잠금 해제됨
|
||||
main.vaultDetail.accessLocation=이 Vault의 내용은 다음의 경로에서 접근할 수 있습니다:
|
||||
@@ -450,7 +450,7 @@ wrongFileAlert.link=더 많은 지원을 위해, 다음을 방문하십시오
|
||||
## General
|
||||
vaultOptions.general=일반
|
||||
vaultOptions.general.vaultName=Vault 이름
|
||||
vaultOptions.general.autoLock.lockAfterTimePart1=다음 시간 동안 유휴상태 시 잠그기
|
||||
vaultOptions.general.autoLock.lockAfterTimePart1=다음 시간동안 유휴상태 시 잠금 :
|
||||
vaultOptions.general.autoLock.lockAfterTimePart2=분
|
||||
vaultOptions.general.unlockAfterStartup=Cryptomator를 시작할 때 Vault 잠금 해제
|
||||
vaultOptions.general.actionAfterUnlock=성공적으로 잠금해제 후
|
||||
@@ -553,15 +553,11 @@ dokanySupportEnd.description=Cryptomator에서 Dokany 볼륨 형식은 더이상
|
||||
dokanySupportEnd.preferencesBtn=설정 열기
|
||||
|
||||
#Retry If Readonly
|
||||
retryIfReadonly.title=Vault 접근 제한됨
|
||||
retryIfReadonly.message=Vault 디렉터리에 쓰기 권한 없음
|
||||
retryIfReadonly.description=Cryptomator가 Vault 디렉터리에 쓸 수 없습니다. Vault를 읽기 전용으로 설정하고 다시 시도할 수 있습니다. 이 옵션은 Vault 옵션에서 바꿀 수 있습니다.
|
||||
retryIfReadonly.retry=바꾸고 다시 시도하기
|
||||
|
||||
# Share Vault
|
||||
shareVault.title=Vault 공유
|
||||
shareVault.message=Vault를 다른 사람과 공유하려 하십니까?
|
||||
shareVault.description=Vault를 타인과 공유할 때에는 항상 주의하십시오. 간단히 이 단계들을 따르십시오.
|
||||
shareVault.description=Vault를 타인과 공유할 때에는 항상 주의하십시오. 간단히 이 단계들을 따르세요.
|
||||
shareVault.instruction.1=1. 암호화된 Vault 폴더를 클라우드 스토리지를 통해 공유하십시오.
|
||||
shareVault.instruction.2=2. Vault의 비밀번호를 안전한 방식으로 전달하십시오.
|
||||
shareVault.remarkBestPractices=문서에 있는 권장사항을 통해 더 많은 정보를 확인하십시오.
|
||||
|
||||
Reference in New Issue
Block a user