mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-09-21 23:44:42 +00:00
Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0da557068b | ||
|
|
50fb1c3042 | ||
|
|
f2525791f8 | ||
|
|
01d9fe32b5 | ||
|
|
68e0da37f5 |
@@ -129,6 +129,16 @@ jobs:
|
||||
- name: Change win-console flag if debug is active
|
||||
if: ${{ inputs.isDebug }}
|
||||
run: echo "WIN_CONSOLE_FLAG=--win-console" >> $GITHUB_ENV
|
||||
- name: Setup patched JDK if necessary
|
||||
id: setup-patched-jdk
|
||||
run: |
|
||||
if [ "${{ matrix.arch }}" == "arm64" ]; then
|
||||
curl --output patched-jdk.zip -L "https://static.cryptomator.org/desktop/patched-win-jdk-2.zip"
|
||||
unzip patched-jdk.zip -d patched-jdk
|
||||
echo "JAVA_HOME=${{ github.workspace }}/patched-jdk/jdk" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "JAVA_HOME=${JAVA_HOME}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
- name: Run jpackage
|
||||
run: >
|
||||
${JAVA_HOME}/bin/jpackage
|
||||
@@ -167,6 +177,8 @@ jobs:
|
||||
--resource-dir dist/win/resources
|
||||
--icon dist/win/resources/Cryptomator.ico
|
||||
${WIN_CONSOLE_FLAG}
|
||||
env:
|
||||
JAVA_HOME: ${{ steps.setup-patched-jdk.outputs.JAVA_HOME }}
|
||||
- name: Patch Application Directory
|
||||
run: |
|
||||
cp dist/win/contrib/* appdir/Cryptomator
|
||||
@@ -262,6 +274,7 @@ jobs:
|
||||
--license-file dist/win/resources/license.rtf
|
||||
--file-associations dist/win/resources/FAvaultFile.properties
|
||||
env:
|
||||
JAVA_HOME: ${{ steps.setup-patched-jdk.outputs.JAVA_HOME }}
|
||||
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs
|
||||
JP_WIXHELPER_DIR: ${{ github.workspace }}\appdir
|
||||
- name: Codesign MSI
|
||||
@@ -361,6 +374,7 @@ jobs:
|
||||
working-directory: dist/win
|
||||
run: >
|
||||
wix build
|
||||
-arch ${{ matrix.arch }}
|
||||
-define BundleName="Cryptomator"
|
||||
-define BundleVersion="${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum}}"
|
||||
-define BundleVendor="Skymatic GmbH"
|
||||
|
||||
@@ -83,9 +83,6 @@
|
||||
</content_rating>
|
||||
|
||||
<releases>
|
||||
<release date="2025-07-08" version="1.17.1">
|
||||
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.17.1</url>
|
||||
</release>
|
||||
<release date="2025-06-24" version="1.17.0">
|
||||
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.17.0</url>
|
||||
</release>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.cryptomator</groupId>
|
||||
<artifactId>cryptomator</artifactId>
|
||||
<version>1.17.1</version>
|
||||
<version>1.18.0-SNAPSHOT</version>
|
||||
<name>Cryptomator Desktop App</name>
|
||||
|
||||
<organization>
|
||||
|
||||
@@ -25,8 +25,6 @@ import javafx.beans.property.StringProperty;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.geometry.NodeOrientation;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.time.Instant;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -77,7 +75,6 @@ public class Settings {
|
||||
public final BooleanProperty checkForUpdates;
|
||||
public final ObjectProperty<Instant> lastUpdateCheckReminder;
|
||||
public final ObjectProperty<Instant> lastSuccessfulUpdateCheck;
|
||||
public final ObjectProperty<Path> previouslyUsedVaultDirectory;
|
||||
|
||||
private Consumer<Settings> saveCmd;
|
||||
|
||||
@@ -117,7 +114,6 @@ public class Settings {
|
||||
this.checkForUpdates = new SimpleBooleanProperty(this, "checkForUpdates", json.checkForUpdatesEnabled);
|
||||
this.lastUpdateCheckReminder = new SimpleObjectProperty<>(this, "lastUpdateCheckReminder", json.lastReminderForUpdateCheck);
|
||||
this.lastSuccessfulUpdateCheck = new SimpleObjectProperty<>(this, "lastSuccessfulUpdateCheck", json.lastSuccessfulUpdateCheck);
|
||||
this.previouslyUsedVaultDirectory = new SimpleObjectProperty<>(this, "previouslyUsedVaultDirectory", json.previouslyUsedVaultDirectory);
|
||||
|
||||
this.directories.addAll(json.directories.stream().map(VaultSettings::new).toList());
|
||||
|
||||
@@ -147,7 +143,6 @@ public class Settings {
|
||||
checkForUpdates.addListener(this::somethingChanged);
|
||||
lastUpdateCheckReminder.addListener(this::somethingChanged);
|
||||
lastSuccessfulUpdateCheck.addListener(this::somethingChanged);
|
||||
previouslyUsedVaultDirectory.addListener(this::somethingChanged);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@@ -209,7 +204,6 @@ public class Settings {
|
||||
json.checkForUpdatesEnabled = checkForUpdates.get();
|
||||
json.lastReminderForUpdateCheck = lastUpdateCheckReminder.get();
|
||||
json.lastSuccessfulUpdateCheck = lastSuccessfulUpdateCheck.get();
|
||||
json.previouslyUsedVaultDirectory = previouslyUsedVaultDirectory.get();
|
||||
return json;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
|
||||
@@ -93,7 +92,4 @@ class SettingsJson {
|
||||
|
||||
@JsonProperty("quickAccessService")
|
||||
String quickAccessService = Settings.DEFAULT_QUICKACCESS_SERVICE;
|
||||
|
||||
@JsonProperty("previouslyUsedVaultDirectory")
|
||||
Path previouslyUsedVaultDirectory;
|
||||
}
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
package org.cryptomator.common.vaults;
|
||||
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.cryptomator.common.Constants;
|
||||
import org.cryptomator.common.settings.Settings;
|
||||
import org.cryptomator.common.settings.VaultSettings;
|
||||
import org.cryptomator.cryptofs.CryptoFileSystemProvider;
|
||||
import org.cryptomator.cryptofs.DirStructure;
|
||||
import org.cryptomator.cryptofs.migration.Migrators;
|
||||
import org.cryptomator.integrations.mount.MountService;
|
||||
import org.cryptomator.ui.keyloading.masterkeyfile.MasterkeyFileLoadingStrategy;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -125,7 +125,7 @@ public class VaultListManager {
|
||||
vaultSettings.lastKnownKeyLoader.set(keyIdScheme);
|
||||
}
|
||||
} else if (vaultState == NEEDS_MIGRATION) {
|
||||
vaultSettings.lastKnownKeyLoader.set(MasterkeyFileLoadingStrategy.SCHEME);
|
||||
vaultSettings.lastKnownKeyLoader.set(Constants.DEFAULT_KEY_ID.toString());
|
||||
}
|
||||
return vaultComponentFactory.create(vaultSettings, wrapper, vaultState, null).vault();
|
||||
} catch (IOException e) {
|
||||
|
||||
+1
-1
@@ -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/vault/#name-shortening";
|
||||
private static final String DOCS_NAME_SHORTENING_URL = "https://docs.cryptomator.org/security/architecture/#name-shortening";
|
||||
|
||||
private final Stage window;
|
||||
private final Lazy<Application> application;
|
||||
|
||||
@@ -4,7 +4,6 @@ import dagger.Lazy;
|
||||
import org.cryptomator.common.ObservableUtil;
|
||||
import org.cryptomator.common.locationpresets.LocationPreset;
|
||||
import org.cryptomator.common.locationpresets.LocationPresetsProvider;
|
||||
import org.cryptomator.common.settings.Settings;
|
||||
import org.cryptomator.ui.common.FxController;
|
||||
import org.cryptomator.ui.common.FxmlFile;
|
||||
import org.cryptomator.ui.common.FxmlScene;
|
||||
@@ -39,7 +38,6 @@ import javafx.stage.WindowEvent;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.InvalidPathException;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Optional;
|
||||
@@ -66,7 +64,6 @@ public class CreateNewVaultLocationController implements FxController {
|
||||
private final BooleanProperty loadingPresetLocations = new SimpleBooleanProperty(false);
|
||||
private final ObservableList<Node> radioButtons;
|
||||
private final ObservableList<Node> sortedRadioButtons;
|
||||
private final Settings settings;
|
||||
|
||||
private Path customVaultPath = DEFAULT_CUSTOM_VAULT_PATH;
|
||||
|
||||
@@ -85,7 +82,6 @@ public class CreateNewVaultLocationController implements FxController {
|
||||
@FxmlScene(FxmlFile.ADDVAULT_NEW_EXPERT_SETTINGS) Lazy<Scene> chooseExpertSettingsScene, //
|
||||
ObjectProperty<Path> vaultPath, //
|
||||
@Named("vaultName") StringProperty vaultName, //
|
||||
Settings settings, //
|
||||
ExecutorService backgroundExecutor, ResourceBundle resourceBundle) {
|
||||
this.window = window;
|
||||
this.chooseNameScene = chooseNameScene;
|
||||
@@ -100,18 +96,6 @@ public class CreateNewVaultLocationController implements FxController {
|
||||
this.usePresetPath = new SimpleBooleanProperty();
|
||||
this.radioButtons = FXCollections.observableArrayList();
|
||||
this.sortedRadioButtons = radioButtons.sorted(this::compareLocationPresets);
|
||||
this.settings = settings;
|
||||
|
||||
Path previouslyUsedDirectory = settings.previouslyUsedVaultDirectory.get();
|
||||
if (previouslyUsedDirectory != null) {
|
||||
try {
|
||||
if (Files.exists(previouslyUsedDirectory) && Files.isDirectory(previouslyUsedDirectory) && isActuallyWritable(previouslyUsedDirectory)) {
|
||||
this.customVaultPath = previouslyUsedDirectory;
|
||||
}
|
||||
} catch (InvalidPathException | NullPointerException e) {
|
||||
LOG.warn("Invalid previously used vault directory path: {}", previouslyUsedDirectory, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private VaultPathStatus validatePath(Path p) throws NullPointerException {
|
||||
@@ -212,12 +196,6 @@ public class CreateNewVaultLocationController implements FxController {
|
||||
@FXML
|
||||
public void next() {
|
||||
if (validVaultPath.getValue()) {
|
||||
if (this.getVaultPath() != null) {
|
||||
Path parentPath = this.getVaultPath().getParent();
|
||||
if (parentPath != null) {
|
||||
this.settings.previouslyUsedVaultDirectory.setValue(parentPath);
|
||||
}
|
||||
}
|
||||
window.setScene(chooseExpertSettingsScene.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,16 +46,15 @@ public interface KeyLoadingStrategy extends MasterkeyLoader {
|
||||
/**
|
||||
* Determines whether the provided key loader scheme corresponds to a Masterkey File Vault.
|
||||
* <p>
|
||||
* This method checks if the {@code keyLoader} parameter starts with the known Masterkey File Vault scheme
|
||||
* This method checks if the {@code keyLoader} parameter matches the known Masterkey File Vault scheme
|
||||
* {@link MasterkeyFileLoadingStrategy#SCHEME}.
|
||||
* This allows identifying not only exact matches but also variants or extended schemes based on the Masterkey scheme.
|
||||
* </p>
|
||||
*
|
||||
* @param keyLoader A string representing the key loader scheme to be checked.
|
||||
* @return {@code true} if the given key loader scheme starts with the Masterkey File Vault scheme; {@code false} otherwise.
|
||||
* @return {@code true} if the given key loader scheme represents a Masterkey File Vault; {@code false} otherwise.
|
||||
*/
|
||||
static boolean isMasterkeyFileVault(String keyLoader) {
|
||||
return keyLoader.startsWith(MasterkeyFileLoadingStrategy.SCHEME);
|
||||
return MasterkeyFileLoadingStrategy.SCHEME.equals(keyLoader);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,7 +19,7 @@ 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/security/best-practices/#sharing-of-vaults";
|
||||
private static final String BEST_PRACTICES_URL = "https://docs.cryptomator.org/en/latest/security/best-practices/#sharing-of-vaults";
|
||||
|
||||
private final Stage window;
|
||||
private final Lazy<Application> application;
|
||||
|
||||
@@ -62,9 +62,9 @@ addvaultwizard.new.locationIsOk=الموقع المناسب للمخزن الخ
|
||||
addvaultwizard.new.invalidName=اسم المخزن غير صالح
|
||||
addvaultwizard.new.validName=اسم المخزن صالح
|
||||
addvaultwizard.new.validCharacters.message=قد يحتوي اسم المخزن على الأحرف التالية:
|
||||
addvaultwizard.new.validCharacters.chars=أحرف لكن دون علامات (#, $, !, @...)
|
||||
addvaultwizard.new.validCharacters.numbers=الأرقام
|
||||
addvaultwizard.new.validCharacters.dashes=ناقص (%s) أو شِرْطَةٌ سفلية (%s)
|
||||
addvaultwizard.new.validCharacters.chars=أحرف الكلمات (أمثلة: a, ж, 수)
|
||||
addvaultwizard.new.validCharacters.numbers=الأعداد
|
||||
addvaultwizard.new.validCharacters.dashes=الشرطة (%s) أو الشرطة السفلية (%s)
|
||||
### Expert Settings
|
||||
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=تمكين إعدادات الخبراء
|
||||
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=أدخل قيمة بين 36 و 220 (الافتراضي 220)
|
||||
@@ -319,7 +319,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
|
||||
@@ -395,7 +395,6 @@ main.vaultlist.contextMenu.vaultoptions=إظهار خيارات المخزن
|
||||
main.vaultlist.contextMenu.reveal=اظهار القرص
|
||||
main.vaultlist.addVaultBtn.menuItemNew=إنشاء مخزن جديد...
|
||||
main.vaultlist.addVaultBtn.menuItemExisting=افتح مخزن موجود...
|
||||
main.vaultlist.showEventsButton.tooltip=عرض الإشعارات
|
||||
##Notificaition
|
||||
main.notification.updateAvailable=هناك تحديث متاح.
|
||||
main.notification.support=دعم Cryptomator.
|
||||
@@ -424,9 +423,7 @@ main.vaultDetail.stats=إحصائيات الخزنة
|
||||
main.vaultDetail.locateEncryptedFileBtn=تحديد موقع الملف المشفر
|
||||
main.vaultDetail.locateEncryptedFileBtn.tooltip=اختر ملف من خزانتك لتحديد مكان نظيره المشفر
|
||||
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=إعادة الفحص
|
||||
@@ -476,7 +473,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.volumeType.restartRequired=لاستخدام هذا النوع من وحدة التخزين يحتاج Cryptomator إلى إعادة تشغيله.
|
||||
vaultOptions.mount.volume.tcp.port=منفذ TCP
|
||||
vaultOptions.mount.volume.type=نوع وحدة التخزين
|
||||
## Master Key
|
||||
@@ -583,40 +580,7 @@ shareVault.hub.instruction.2=2. امنح الوصول لعضو الفريق في
|
||||
shareVault.hub.openHub=زيارة Cryptomator Hub
|
||||
|
||||
# Decrypt File Names
|
||||
decryptNames.title=فك تشفير اسم الملَف
|
||||
decryptNames.filePicker.title=اختر ملَف مشفر
|
||||
decryptNames.filePicker.extensionDescription=ملف مشفر
|
||||
decryptNames.copyTable.tooltip=نسخ الجدول
|
||||
decryptNames.clearTable.tooltip=مسح الجدول
|
||||
decryptNames.copyHint=نسخ محتوى الخلية مع %s
|
||||
decryptNames.dropZone.message=إسقاط الملفات أو انقر لتحديد
|
||||
decryptNames.dropZone.error.vaultInternalFiles=مخزن الملفات الداخلية مع عدم تحديد اسم قابل للتشفير
|
||||
decryptNames.dropZone.error.foreignFiles=الملفات لا تنتمي إلى مخزن "%s"
|
||||
decryptNames.dropZone.error.noDirIdBackup=مسار الملفات المحددة لا يحتوي على ملَف dirId.c9r
|
||||
decryptNames.dropZone.error.generic=فشل فك تشفير أسماء الملفات
|
||||
|
||||
|
||||
# Event View
|
||||
eventView.title=أحداث
|
||||
eventView.filter.allVaults=الكل
|
||||
eventView.clearListButton.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=نسخ المسار غير المشفر
|
||||
|
||||
@@ -424,9 +424,9 @@ main.vaultDetail.stats=Estatísticas do Cofre
|
||||
main.vaultDetail.locateEncryptedFileBtn=Localizar Ficheiro Encriptado
|
||||
main.vaultDetail.locateEncryptedFileBtn.tooltip=Escolha um ficheiro do seu cofre para localizar a sua contraparte encriptada
|
||||
main.vaultDetail.encryptedPathsCopied=Caminhos copiados para a área de transferência!
|
||||
main.vaultDetail.locateEncrypted.filePickerTitle=Selecione o ficheiro no cofre
|
||||
main.vaultDetail.decryptName.buttonLabel=Descriptografar o nome do ficheiro
|
||||
main.vaultDetail.decryptName.tooltip=Escolha um ficheiro encriptado do cofre para desencriptar o seu nome
|
||||
main.vaultDetail.locateEncrypted.filePickerTitle=Selecionar ficheiro dentro do cofre
|
||||
main.vaultDetail.decryptName.buttonLabel=Desencriptar nome do ficheiro
|
||||
main.vaultDetail.decryptName.tooltip=Escolha um ficheiro de cofre encriptado para desencriptar o seu nome
|
||||
### Missing
|
||||
main.vaultDetail.missing.info=O Cryptomator não conseguiu encontrar um cofre neste diretório.
|
||||
main.vaultDetail.missing.recheck=Verificar novamente
|
||||
@@ -583,17 +583,17 @@ shareVault.hub.instruction.2=2. Conceder acesso ao membro da equipe no Hub Crypt
|
||||
shareVault.hub.openHub=Abrir Hub do Cryptomator
|
||||
|
||||
# Decrypt File Names
|
||||
decryptNames.title=Desencriptar os nomes dos ficheiros
|
||||
decryptNames.title=Desencriptar nomes de ficheiros
|
||||
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.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
|
||||
decryptNames.dropZone.error.foreignFiles=Os ficheiros não pertencem ao cofre "%s"
|
||||
decryptNames.filePicker.extensionDescription=Ficheiro encriptado do Cryptomator
|
||||
decryptNames.copyTable.tooltip=Copiar tabela
|
||||
decryptNames.clearTable.tooltip=Limpar tabela
|
||||
decryptNames.copyHint=Copiar conteúdo da célula com %s
|
||||
decryptNames.dropZone.message=Solte os ficheiros ou clique para selecionar
|
||||
decryptNames.dropZone.error.vaultInternalFiles=Ficheiros internos do cofre sem nome decifrável selecionado
|
||||
decryptNames.dropZone.error.foreignFiles=Ficheiros não pertencem ao cofre "%s"
|
||||
decryptNames.dropZone.error.noDirIdBackup=O diretório dos ficheiros selecionados não contém o ficheiro dirId.c9r
|
||||
decryptNames.dropZone.error.generic=Falha ao desencriptar os nomes dos ficheiros
|
||||
decryptNames.dropZone.error.generic=Falha ao desencriptar nomes de ficheiros
|
||||
|
||||
|
||||
# Event View
|
||||
@@ -603,20 +603,20 @@ eventView.clearListButton.tooltip=Limpar lista
|
||||
## 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.conflictResolved.showDecrypted=Mostrar ficheiro desencriptado
|
||||
eventView.entry.conflictResolved.copyDecrypted=Copiar caminho desencriptado
|
||||
eventView.entry.conflict.message=Resolução de conflito falhou
|
||||
eventView.entry.conflict.showDecrypted=Mostrar ficheiro original desencriptado
|
||||
eventView.entry.conflict.copyDecrypted=Copie caminho original desencriptado
|
||||
eventView.entry.conflict.showEncrypted=Mostrar ficheiro encriptado conflitante
|
||||
eventView.entry.conflict.copyEncrypted=Copiar caminho encriptado conflituante
|
||||
eventView.entry.decryptionFailed.message=Falha na desencriptação
|
||||
eventView.entry.decryptionFailed.showEncrypted=Mostrar ficheiro encriptado
|
||||
eventView.entry.decryptionFailed.copyEncrypted=Copiar o caminho encriptado
|
||||
eventView.entry.decryptionFailed.copyEncrypted=Copiar caminho de encriptação
|
||||
eventView.entry.brokenDirFile.message=Link de diretório quebrado
|
||||
eventView.entry.brokenDirFile.showEncrypted=Mostrar o link quebrado e encriptado
|
||||
eventView.entry.brokenDirFile.showEncrypted=Mostrar 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.showEncrypted=Mostrar nó encriptado quebrado
|
||||
eventView.entry.brokenFileNode.copyEncrypted=Copiar o caminho do nó encriptado e danificado
|
||||
eventView.entry.brokenFileNode.copyDecrypted=Copiar o caminho desencriptado
|
||||
eventView.entry.brokenFileNode.copyDecrypted=Copiar caminho desencriptado
|
||||
|
||||
Reference in New Issue
Block a user