Merge branch 'develop' into release/1.7.0

This commit is contained in:
Armin Schrenk 2023-02-06 14:45:56 +01:00
commit fb91c1a461
No known key found for this signature in database
GPG Key ID: 8F2992163CBBA7FC
23 changed files with 184 additions and 57 deletions

View File

@ -47,7 +47,6 @@ jobs:
- name: Patch target dir
run: |
cp LICENSE.txt target
cp dist/linux/launcher.sh target
cp target/cryptomator-*.jar target/mods
- name: Run jlink
run: >

View File

@ -61,7 +61,6 @@ jobs:
- name: Patch target dir
run: |
cp LICENSE.txt target
cp dist/mac/launcher.sh target
cp target/cryptomator-*.jar target/mods
- name: Run jlink
run: >

View File

@ -55,7 +55,6 @@ jobs:
- name: Patch target dir
run: |
cp LICENSE.txt target
cp dist/linux/launcher.sh target
cp target/cryptomator-*.jar target/mods
- name: Run jlink
run: >

View File

@ -1,15 +0,0 @@
#!/bin/sh
cd $(dirname $0)
java \
-p "mods" \
-cp "libs/*" \
-Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json" \
-Dcryptomator.ipcSocketPath="~/.config/Cryptomator/ipc.socket" \
-Dcryptomator.logDir="~/.local/share/Cryptomator/logs" \
-Dcryptomator.mountPointsDir="~/.local/share/Cryptomator/mnt" \
-Djdk.gtk.version=2 \
-Xss2m \
-Xmx512m \
--enable-preview \
--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64 \
-m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator

14
dist/mac/launcher.sh vendored
View File

@ -1,14 +0,0 @@
#!/bin/sh
cd $(dirname $0)
java \
-p "mods" \
-cp "libs/*" \
-Dcryptomator.settingsPath="~/Library/Application Support/Cryptomator/settings.json" \
-Dcryptomator.ipcSocketPath="~/Library/Application Support/Cryptomator/ipc.socket" \
-Dcryptomator.logDir="~/Library/Logs/Cryptomator" \
-Dcryptomator.mountPointsDir="/Volumes" \
-Xss20m \
-Xmx512m \
--enable-preview \
--enable-native-access=org.cryptomator.jfuse.mac \
-m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator

View File

@ -1,12 +0,0 @@
@echo off
java ^
-p "app/mods" ^
-cp "app/*" ^
-Dcryptomator.settingsPath="~/AppData/Roaming/Cryptomator/settings.json" ^
-Dcryptomator.ipcSocketPath="~/AppData/Roaming/Cryptomator/ipc.socket" ^
-Dcryptomator.logDir="~/AppData/Roaming/Cryptomator" ^
-Dcryptomator.mountPointsDir="~/Cryptomator" ^
-Dcryptomator.keychainPath="~/AppData/Roaming/Cryptomator/keychain.json" ^
-Xss20m ^
-Xmx512m ^
-m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator

View File

@ -0,0 +1,5 @@
@echo off
:: see comments in file ./version170-migrate-settings.ps1
cd %~dp0
powershell -NoLogo -NonInteractive -ExecutionPolicy Unrestricted -Command .\version170-migrate-settings.ps1

View File

@ -0,0 +1,45 @@
# This script migrates Cryptomator settings for all local users on Windows in case the users uses custom directories as mountpoint
# See also https://github.com/cryptomator/cryptomator/pull/2654.
#
# TODO: This script should be evaluated in a yearly interval if it is still needed and if not, should be removed
#
#Requires -RunAsAdministrator
#Get all active, local user profiles
$profileList = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
$localUsers = Get-LocalUser | Where-Object {$_.Enabled} | ForEach-Object { $_.Name}
Get-ChildItem $profileList | ForEach-Object { $_.GetValue("ProfileImagePath") } | Where-Object {
$profileNameMatches = ($_ | Select-String -Pattern "\\([^\\]+)$").Matches
if($profileNameMatches.Count -eq 1) {
#check if the last path part is contained in the local user name list
#otherwise do not touch it
return $localUsers.Contains($profileNameMatches[0].Groups[1].Value)
} else {
return $false;
}
} | ForEach-Object {
$settingsPath = "$_\AppData\Roaming\Cryptomator\settings.json"
if(!(Test-Path -Path $settingsPath -PathType Leaf)) {
#No settings file, nothing to do.
return;
}
$settings = Get-Content -Path $settingsPath | ConvertFrom-Json
if($settings.preferredVolumeImpl -ne "FUSE") {
#Fuse not used, nothing to do
return;
}
#check if customMountPoints are used
$atLeastOneCustomPath = $false;
foreach ($vault in $settings.directories){
$atLeastOneCustomPath = $atLeastOneCustomPath -or ($vault.useCustomMountPath -eq "True")
}
#if so, use WinFsp Local Drive
if( $atLeastOneCustomPath ) {
Add-Member -Force -InputObject $settings -Name "mountService" -Value "org.cryptomator.frontend.fuse.mount.WinFspMountProvider" -MemberType NoteProperty
$newSettings = $settings | Select-Object * -ExcludeProperty "preferredVolumeImpl"
ConvertTo-Json $newSettings | Set-Content -Path $settingsPath
}
}

View File

@ -65,13 +65,10 @@
<Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogTitle)" />
<!-- TODO: localize? -->
<Control Id="Suggestion" Type="Text" X="135" Y="100" Width="220" Height="60" Transparent="yes" NoPrefix="yes">
<Text>We recommend for the best user experience to download and install one of the following third party Windows drivers:</Text>
<Text>We recommend for the best user experience to download and install the following third party Windows driver:</Text>
</Control>
<Control Id="WinFsp" Type="Hyperlink" X="140" Y="125" Width="220" Height="60" Transparent="yes">
<Text><![CDATA[• WinFsp (<a href="http://www.secfs.net/winfsp/rel/">Homepage</a>)]]></Text>
</Control>
<Control Id="Dokany" Type="Hyperlink" X="140" Y="137" Width="220" Height="60" Transparent="yes">
<Text><![CDATA[• Dokany (<a href="https://dokan-dev.github.io/">Homepage</a>)]]></Text>
<Text><![CDATA[WinFsp (<a href="https://winfsp.dev/">Homepage</a>)]]></Text>
</Control>
</Dialog>

View File

@ -132,6 +132,9 @@
<!-- WebDAV patches -->
<CustomAction Id="PatchWebDAV" Impersonate="no" ExeCommand="[INSTALLDIR]patchWebDAV.bat" Directory="INSTALLDIR" Execute="deferred" Return="asyncWait" />
<!-- Special Settings migration for 1.7.0,. Should be removed eventually, for more info, see ../contrib/version170-migrate-settings.ps1-->
<CustomAction Id="V170MigrateSettings" Impersonate="no" ExeCommand="[INSTALLDIR]version170-migrate-settings.bat" Directory="INSTALLDIR" Execute="deferred" Return="asyncWait" />
<!-- Running App detection and exit -->
<Property Id="FOUNDRUNNINGAPP" Admin="yes"/>
<util:CloseApplication
@ -182,6 +185,7 @@
<RemoveExistingProducts After="InstallValidate"/>
<Custom Action="PatchWebDAV" After="InstallFiles">NOT Installed OR REINSTALL</Custom>
<Custom Action="V170MigrateSettings" After="InstallFiles">NOT Installed OR REINSTALL</Custom>
</InstallExecuteSequence>
<WixVariable Id="WixUIBannerBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)\banner.bmp" />

View File

@ -31,10 +31,10 @@
<cryptomator.cryptolib.version>2.1.1</cryptomator.cryptolib.version>
<cryptomator.cryptofs.version>2.6.1</cryptomator.cryptofs.version>
<cryptomator.integrations.version>1.2.0-beta4</cryptomator.integrations.version>
<cryptomator.integrations.win.version>1.2.0-beta1</cryptomator.integrations.win.version>
<cryptomator.integrations.win.version>1.2.0-beta2</cryptomator.integrations.win.version>
<cryptomator.integrations.mac.version>1.2.0-beta2</cryptomator.integrations.mac.version>
<cryptomator.integrations.linux.version>1.2.0-beta1</cryptomator.integrations.linux.version>
<cryptomator.fuse.version>2.0.0-beta4</cryptomator.fuse.version>
<cryptomator.fuse.version>2.0.0-beta5</cryptomator.fuse.version>
<cryptomator.dokany.version>2.0.0-beta2</cryptomator.dokany.version>
<cryptomator.webdav.version>2.0.0-beta4</cryptomator.webdav.version>

View File

@ -96,7 +96,8 @@ public class Mounter {
builder.setMountpoint(mountPoint);
}
} else {
if (canMountToParent && !canMountToDir) {
var mpIsDriveLetter = userChosenMountPoint.toString().matches("[A-Z]:\\\\");
if (!mpIsDriveLetter && canMountToParent && !canMountToDir) {
MountWithinParentUtil.prepareParentNoMountPoint(userChosenMountPoint);
cleanup = () -> {
MountWithinParentUtil.cleanup(userChosenMountPoint);
@ -105,7 +106,6 @@ public class Mounter {
try {
builder.setMountpoint(userChosenMountPoint);
} catch (IllegalArgumentException e) {
var mpIsDriveLetter = userChosenMountPoint.toString().matches("[A-Z]:\\\\");
var configNotSupported = (!canMountToDriveLetter && mpIsDriveLetter) || (!canMountToDir && !mpIsDriveLetter) || (!canMountToParent && !mpIsDriveLetter);
if (configNotSupported) {
throw new MountPointNotSupportedException(e.getMessage());

View File

@ -37,6 +37,7 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
@Override
public void write(JsonWriter out, Settings value) throws IOException {
out.beginObject();
out.name("lastWrittenByVersion").value(env.getAppVersion()+env.getBuildNumber().map("-"::concat).orElse(""));
out.name("directories");
writeVaultSettingsArray(out, value.getDirectories());
out.name("askedForUpdateCheck").value(value.askedForUpdateCheck().get());

View File

@ -84,6 +84,10 @@ public class LogbackConfigurator extends ContextAwareBase implements Configurato
upgrades.addAppender(upgrade);
upgrades.addAppender(file);
upgrades.setAdditive(false);
// configure fuse file locking logger:
Logger fuseLocking = context.getLogger("org.cryptomator.frontend.fuse.locks");
fuseLocking.setLevel(Level.OFF);
}
return ExecutionStatus.DO_NOT_INVOKE_NEXT_IF_ANY;
}

View File

@ -171,7 +171,7 @@ public class VaultDetailUnlockedController implements FxController {
}
return Optional.of(vault.get().getCiphertextPath(cleartextPath));
} catch (IOException e) {
LOG.warn("Unable to get ciphertext path from path: {}", path);
LOG.warn("Unable to get ciphertext path from path: {}", path, e);
return Optional.empty();
}
}

View File

@ -26,7 +26,7 @@
</padding>
<children>
<TextFlow>
<Text text="%vaultOptions.mount.info"/>
<Text text="%vaultOptions.mount.info" styleClass="label"/>
<Text text=" "/>
<Hyperlink styleClass="hyperlink-underline" text="%vaultOptions.mount.linkToPreferences" onAction="#openVolumePreferences" wrapText="true"/>
</TextFlow>

View File

@ -73,7 +73,7 @@ addvault.new.readme.storageLocation.4=• modifiqueu cap fitxer dins d'aquest d
addvault.new.readme.storageLocation.5=• enganxeu cap fitxer a xifrar en aquest directori.
addvault.new.readme.storageLocation.6=Si voleu xifrar fitxers i veure el contigut de la caixa forta, feu el següent:
addvault.new.readme.storageLocation.7=1. Afegiu aquesta caixa forta a Cryptomator.
addvault.new.readme.storageLocation.8=2. Desbloquejeu la caixa forta enCryptomator.
addvault.new.readme.storageLocation.8=2. Desbloqueu la caixa forta a Cryptomator.
addvault.new.readme.storageLocation.9=3. Feu click damunt del botó "Mostra" per obrir la ubicació d'accès.
addvault.new.readme.storageLocation.10=Si us cal ajuda, llegiu la documentació: %s
addvault.new.readme.accessLocation.fileName=BENVINGUTS.rtf
@ -123,6 +123,10 @@ unlock.success.description=S'ha desblocat %s correctament! Podeu accedir a la vo
unlock.success.rememberChoice=Recorda l'elecció. No ho tornis a mostrar.
unlock.success.revealBtn=Mostra la unitat
## Failure
unlock.error.customPath.message=No es pot muntar la caixa forta en la ruta personalitzada
unlock.error.customPath.description.notSupported=Si vol continuar fent servir una ruta personalitzada, vagi si us plau a Preferències i seleccioni un tipus de volum que la suporti. Altrament, vagi a les opcions de la caixa forta i escolli un punt de muntatge suportat.
unlock.error.customPath.description.notExists=La ruta de muntatge personalitzada no existeix. Creï-la o canviï-la en les opcions de la caixa forta.
unlock.error.customPath.description.generic=Ha seleccionat una ruta personalitzada on muntar la caixa forta, però ha fallat amb aquest missatge: %s
## Hub
hub.noKeychain.message=No es pot accedir a la clau del dispositiu
hub.noKeychain.description=Per poder desblocar caixes fortes del Hub es requereix la clau d'un dispositiu, que s'emmagatzema de forma segura en un clauer. Per continuar, habiliti "%s" i seleccioni un clauer en les Preferències.
@ -133,18 +137,25 @@ hub.auth.description=Hauríeu de ser redirigits a la pàgina d'accés.
hub.auth.loginLink=No heu estat redirigit? Feu clic aquí per a obrir-la.
### Receive Key
hub.receive.message=S'està processant la resposta…
hub.receive.description=Cryptomator està rebent i processant la resposta del Hub. Espereu, si us plau.
### Register Device
hub.register.message=Cal un nom de dispositiu
hub.register.description=Sembla que és el primer accés al Hub des d'aquest dispositiu. Per identificar-lo i poder autoritzar l'accés necessiteu anomenar aquest dispositiu.
hub.register.nameLabel=Nom del dispositiu
hub.register.occupiedMsg=El nom ja està en ús
hub.register.registerBtn=Confirma
### Registration Success
hub.registerSuccess.message=Unitat anomenada
hub.registerSuccess.description=Per a accedir a la caixa forta, el vostre dispositiu ha de ser autoritzat pel propietari de la caixa.
### Registration Failed
hub.registerFailed.message=Error al nombrar el dispositiu
hub.registerFailed.description=S'ha produït un error en el procés de nomenament. Per més detalls vegeu el registre de l'aplicació.
### Unauthorized
hub.unauthorized.message=Accés denegat
hub.unauthorized.description=El vostre dispositiu no ha estat encara autoritzat a accedir a aquesta caixa forta. Demaneu autorització al propietari.
### License Exceeded
hub.licenseExceeded.message=Llicència caducada
hub.licenseExceeded.description=Cryptomator Hub ha donat accés a més usuaris dels permesos en la llicència. Si us plau contacteu amb l'administrador del Hub per actualitzar la llicència o amb l'administrador de la caixa forta per treure usuaris.
# Lock
@ -161,6 +172,11 @@ lock.fail.description=La caixa forta "%s" no s'ha pogut blocar. Assegureu-vos qu
migration.title=Actualitza la caixa forta
## Start
migration.start.header=Actualitza la caixa forta
migration.start.text=Per obrir la caixa forta "%s" en aquesta nova versió de Cryptomator, la caixa forta necessita actualitzar-se al nou format. Abans de fer-ho, cal que sabeu el següent:
migration.start.remarkUndone=Aquesta actualització no pot ser desfeta.
migration.start.remarkVersions=Versions antigues de Cryptomator no podran obrir la caixa forta actualitzada.
migration.start.remarkCanRun=Assegureu-vos que tots els dispositius des dels quals accediu a la caixa forta poden executar aquesta versió de Cryptomator.
migration.start.remarkSynced=Assegureu-vos que la caixa forta està completament sincronitzada en aquest i altres dispositius abans d'actualitzar-la.
migration.start.confirm=He llegit i entès la informació anterior
## Run
migration.run.enterPassword=Introduïu la contrasenya per a "%s"
@ -218,6 +234,10 @@ health.result.severityFilter.good=Bé
health.result.severityFilter.info=Info
health.result.severityFilter.warn=Avís
health.result.severityFilter.crit=Crític
health.result.severityTip.good=Gravetat: Bona.\nEstructura de la caixa forta correcta.
health.result.severityTip.info=Gravetat: Informació\nCaixa forta intacta, es recomana però arreglar-la.
health.result.severityTip.warn=Gravetat: Avís\nCaixa forta corrompuda, és altament recomanable arreglar-la.
health.result.severityTip.crit=Gravetat: Crítica\nCaixa forta corrompuda, s'ha determinat que s'han perdut dades.
health.result.fixStateFilter.all=Estat de reparació - Tot
health.result.fixStateFilter.fixable=Es pot arreglar
health.result.fixStateFilter.notFixable=No es pot arreglar
@ -255,7 +275,15 @@ preferences.interface.showMinimizeButton=Mostra el botó 'minimitzar'
preferences.interface.showTrayIcon=Mostra la icona en la barra (cal reiniciar)
## Volume
preferences.volume=Unitat virtual
preferences.volume.type=Tipus de volum (requereix reiniciar)
preferences.volume.type.automatic=Automàtic
preferences.volume.tcp.port=Port TCP
preferences.volume.supportedFeatures=El tipus de volum escollit suporta les següents característiques:
preferences.volume.feature.mountAuto=Selecció automàtica del punt de muntatge
preferences.volume.feature.mountToDir=Directori personalitzat com a punt de muntatge
preferences.volume.feature.mountToDriveLetter=Lletra de la unitat com a punt de muntatge
preferences.volume.feature.mountFlags=Opcions de muntatge personalitzades
preferences.volume.feature.readOnly=Muntar de només lectura
## Updates
preferences.updates=Actualitzacions
preferences.updates.currentVersion=Versió actual: %s
@ -336,6 +364,7 @@ main.vaultDetail.passwordSavedInKeychain=Contrasenya desada
main.vaultDetail.unlockedStatus=DESBLOQUEJADA
main.vaultDetail.accessLocation=Els continguts de la vostra caixa forta són accessibles aquí:
main.vaultDetail.revealBtn=Mostra la unitat
main.vaultDetail.copyUri=Copiar URI
main.vaultDetail.lockBtn=Bloqueja
main.vaultDetail.bytesPerSecondRead=Lectura:
main.vaultDetail.bytesPerSecondWritten=Escriu:
@ -343,8 +372,12 @@ main.vaultDetail.throughput.idle=inactiu
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Estadístiques de la caixa forta
main.vaultDetail.locateEncryptedFileBtn=Trobar fitxer xifrat
main.vaultDetail.locateEncryptedFileBtn.tooltip=Esculli un fitxer de la caixa forta per trobar el seu homòleg xifrat
main.vaultDetail.encryptedPathsCopied=Rutes copiades al porta-retalls!
main.vaultDetail.filePickerTitle=Seleccioni un fitxer dins la caixa forta
### Missing
main.vaultDetail.missing.info=Cryptomator no ha trobat una caixa forta en aquest camí.
main.vaultDetail.missing.info=Cryptomator no ha trobat una caixa forta en aquesta ruta.
main.vaultDetail.missing.recheck=Torna a comprovar
main.vaultDetail.missing.remove=Eliminar de la llista de la caixa forta…
main.vaultDetail.missing.changeLocation=Canvia la localització de la caixa forta…
@ -381,13 +414,17 @@ vaultOptions.general.startHealthCheckBtn=Inicia la comprovació
## Mount
vaultOptions.mount=Muntatge
vaultOptions.mount.info=Les opcions depenen del tipus de volum escollit.
vaultOptions.mount.linkToPreferences=Obre les preferències del disc virtual
vaultOptions.mount.readonly=Només lectura
vaultOptions.mount.customMountFlags=Senyaladors de muntatge personalitzats
vaultOptions.mount.winDriveLetterOccupied=ocupat
vaultOptions.mount.mountPoint=Punt de muntatge
vaultOptions.mount.mountPoint.auto=Tria automàticament una ubicació adequada
vaultOptions.mount.mountPoint.driveLetter=Utilitza la lletra de la unitat assignada
vaultOptions.mount.mountPoint.custom=Faci servir el directori escollit
vaultOptions.mount.mountPoint.directoryPickerButton=Trieu…
vaultOptions.mount.mountPoint.directoryPickerTitle=Triï un directori
## Master Key
vaultOptions.masterkey=Contrasenya
vaultOptions.masterkey.changePasswordBtn=Canvi de contrasenya

View File

@ -16,6 +16,7 @@ generic.button.print=چاپ
# Error
error.message=خطایی رخ داده است
error.technicalDetails=جزئیات:
# Defaults
defaults.vault.vaultName=گاوصندوق
@ -28,13 +29,24 @@ traymenu.vault.lock=قفل
traymenu.vault.reveal=ظاهر
# Add Vault Wizard
addvaultwizard.title=اضافه کردن گاوصندوق
## Welcome
addvaultwizard.welcome.newButton=ساخت گاوصندوق جدید
addvaultwizard.welcome.existingButton=باز کردن گاوصندوق موجود
## New
### Name
addvaultwizard.new.nameInstruction=یک نام برای گاوصندوق انتخاب کنید
addvaultwizard.new.namePrompt=نام گاوصندوق
### Location
addvaultwizard.new.locationLabel=مکان ذخیره‌سازی
addvaultwizard.new.directoryPickerLabel=مکان سفارشی
addvaultwizard.new.directoryPickerButton=انتخاب کنید…
addvaultwizard.new.fileAlreadyExists=در حال حاضر یک فایل یا پوشه با همین نام وجود دارد
addvaultwizard.new.validCharacters.numbers=اعداد
### Password
### Information
## Existing
addvaultwizard.existing.chooseBtn=انتخاب کنید…
## Success
# Remove Vault
@ -100,6 +112,7 @@ main.closeBtn.tooltip=ببند
main.supporterCertificateMissing.tooltip=لطفا کمک مالی در نظر بگیرند
## Vault List
main.vaultlist.contextMenu.lock=قفل
main.vaultlist.addVaultBtn=اضافه کردن گاوصندوق
## Vault Detail
### Welcome
### Locked
@ -113,8 +126,10 @@ main.vaultDetail.lockBtn=قفل
# Vault Options
## General
vaultOptions.general.vaultName=نام گاوصندوق
## Mount
vaultOptions.mount.mountPoint.directoryPickerButton=انتخاب کنید…
## Master Key

View File

@ -123,6 +123,10 @@ unlock.success.description="%s" sbloccato correttamente! La tua cassaforte è or
unlock.success.rememberChoice=Ricorda la scelta, non mostrarmelo più
unlock.success.revealBtn=Rivela l'Unità
## Failure
unlock.error.customPath.message=Impossibile montare la cassaforte sul percorso personalizzato
unlock.error.customPath.description.notSupported=Se desideri continuare a utilizzare il percorso personalizzato, vai alle preferenze e seleziona un tipo di volume che lo supporta. Altrimenti, vai alle opzioni della cassaforte e scegli un punto di montaggio supportato.
unlock.error.customPath.description.notExists=Il percorso di mount personalizzato non esiste. Crealo nel tuo file system locale o cambialo nelle opzioni della cassaforte.
unlock.error.customPath.description.generic=Hai selezionato un percorso di montaggio personalizzato per questa cassaforte, ma il suo utilizzo è fallito col messaggio: %s
## Hub
hub.noKeychain.message=Impossibile accedere alla chiave del dispositivo
hub.noKeychain.description=Per sbloccare le casseforti Hub, è necessaria una chiave del dispositivo, che è protetta tramite un portachiavi. Per procedere, abilita "%s" e seleziona un portachiavi nelle preferenze.
@ -271,7 +275,15 @@ preferences.interface.showMinimizeButton=Mostra il pulsante minimizza
preferences.interface.showTrayIcon=Mostra l'icona della barra d'applicazioni (richiede il riavvio)
## Volume
preferences.volume=Unità Virtuale
preferences.volume.type=Tipo di volume (richiede riavvio)
preferences.volume.type.automatic=Automatico
preferences.volume.tcp.port=Porta TCP
preferences.volume.supportedFeatures=Il tipo di volume scelto supporta le seguenti caratteristiche:
preferences.volume.feature.mountAuto=Selezione automatica del punto di montaggio
preferences.volume.feature.mountToDir=Directory personalizzata come punto di montaggio
preferences.volume.feature.mountToDriveLetter=Lettera dispositivo come punto di montaggio
preferences.volume.feature.mountFlags=Opzioni di montaggio personalizzate
preferences.volume.feature.readOnly=Montaggio di sola lettura
## Updates
preferences.updates=Aggiornamenti
preferences.updates.currentVersion=Versione Corrente: %s
@ -352,6 +364,7 @@ main.vaultDetail.passwordSavedInKeychain=Password salvata
main.vaultDetail.unlockedStatus=SBLOCCATA
main.vaultDetail.accessLocation=I contenuti della tua cassaforte sono accessibili qui:
main.vaultDetail.revealBtn=Rivela Unità
main.vaultDetail.copyUri=Copia URI
main.vaultDetail.lockBtn=Blocca
main.vaultDetail.bytesPerSecondRead=Lettura:
main.vaultDetail.bytesPerSecondWritten=Scrittura:
@ -359,7 +372,10 @@ main.vaultDetail.throughput.idle=inattivo
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statistiche della Cassaforte
main.vaultDetail.locateEncryptedFileBtn=Individua File Crittografato
main.vaultDetail.locateEncryptedFileBtn.tooltip=Scegli un file dalla cassaforte per individuare la controparte cifrata
main.vaultDetail.encryptedPathsCopied=Percorsi copiati negli Appunti!
main.vaultDetail.filePickerTitle=Seleziona File Nella Cassaforte
### Missing
main.vaultDetail.missing.info=Cryptomator non è riuscito a trovare una cassaforte in questo percorso.
main.vaultDetail.missing.recheck=Ricontrolla
@ -398,13 +414,17 @@ vaultOptions.general.startHealthCheckBtn=Avvia il Controllo della Salute
## Mount
vaultOptions.mount=Montaggio
vaultOptions.mount.info=Le opzioni dipendono dal tipo di volume selezionato.
vaultOptions.mount.linkToPreferences=Apri le preferenze dell'unità virtuale
vaultOptions.mount.readonly=Sola Lettura
vaultOptions.mount.customMountFlags=Flag di Montaggio Personalizzati
vaultOptions.mount.winDriveLetterOccupied=occupato
vaultOptions.mount.mountPoint=Punto di Montaggio
vaultOptions.mount.mountPoint.auto=Scegli automaticamente una posizione idonea
vaultOptions.mount.mountPoint.driveLetter=Usa la lettera del drive assegnata
vaultOptions.mount.mountPoint.custom=Usa la directory scelta
vaultOptions.mount.mountPoint.directoryPickerButton=Scegli…
vaultOptions.mount.mountPoint.directoryPickerTitle=Scegli una directory
## Master Key
vaultOptions.masterkey=Password
vaultOptions.masterkey.changePasswordBtn=Modifica password

View File

@ -125,6 +125,7 @@ unlock.success.revealBtn=Toon Schijf
## Failure
unlock.error.customPath.message=Kan kluis niet aan aangepast pad koppelen
unlock.error.customPath.description.notSupported=Als je het aangepaste pad wilt blijven gebruiken, ga dan naar de voorkeuren en selecteer een volume type dat het ondersteunt. Anders ga je naar de kluis opties en kies je een steunpunt voor het koppelplaten.
unlock.error.customPath.description.notExists=Het aangepaste koppelpad bestaat niet. Maak het aan in uw lokale bestandssysteem of verander het in de kluis opties.
unlock.error.customPath.description.generic=Je hebt een aangepast koppel pad geselecteerd voor deze kluis, maar het gebruik ervan is mislukt met het bericht: %s
## Hub
hub.noKeychain.message=Geen toegang tot de apparaatsleutel

View File

@ -123,6 +123,10 @@ unlock.success.description=Odblokowano "%s" pomyślnie! Twój sejf jest teraz do
unlock.success.rememberChoice=Zapamiętaj wybór, nie pokazuj tego ponownie
unlock.success.revealBtn=Pokaż Dysk
## Failure
unlock.error.customPath.message=Nie można zamontować sejfu na niestandardowej ścieżce
unlock.error.customPath.description.notSupported=Jeśli chcesz nadal używać niestandardowej ścieżki, przejdź do preferencji i wybierz typ woluminu, który ją obsługuje. W przeciwnym razie przejdź do opcji sejfu i wybierz obsługiwany punkt montowania.
unlock.error.customPath.description.notExists=Niestandardowa ścieżka montowania nie istnieje. Stwórz ją w lokalnym systemie plików lub zmień ją w opcjach sejfu.
unlock.error.customPath.description.generic=Wybrałeś niestandardową ścieżkę montowania dla tego sejfu, ale użycie jej nie powiodło się z wiadomością: %s
## Hub
hub.noKeychain.message=Brak dostępu do klucza urządzenia
hub.noKeychain.description=Aby odblokować sejfy na Hubie, wymagany jest klucz urządzenia zabezpieczony za pomocą pęku kluczy. Aby kontynuować, włącz "%s" i wybierz Pęk kluczy w ustawieniach.
@ -271,7 +275,15 @@ preferences.interface.showMinimizeButton=Pokaż przycisk minimalizacji
preferences.interface.showTrayIcon=Pokaż ikonę zasobnika (wymaga restartu)
## Volume
preferences.volume=Dysk wirtualny
preferences.volume.type=Typ woluminu (wymaga ponownego uruchomienia)
preferences.volume.type.automatic=Automatyczny
preferences.volume.tcp.port=Port TCP
preferences.volume.supportedFeatures=Wybrany typ woluminu obsługuje następujące funkcje:
preferences.volume.feature.mountAuto=Automatyczny wybór punktu montowania
preferences.volume.feature.mountToDir=Niestandardowy katalog jako punkt montowania
preferences.volume.feature.mountToDriveLetter=Litera dysku jako punkt montowania
preferences.volume.feature.mountFlags=Własne opcje montowania
preferences.volume.feature.readOnly=Montowanie tylko do odczytu
## Updates
preferences.updates=Aktualizacje
preferences.updates.currentVersion=Obecna wersja: %s
@ -352,6 +364,7 @@ main.vaultDetail.passwordSavedInKeychain=Hasło zapisane
main.vaultDetail.unlockedStatus=ODBLOKOWANE
main.vaultDetail.accessLocation=Zawartość Twojego sejfu dostępna jest tutaj:
main.vaultDetail.revealBtn=Otwórz lokalizację
main.vaultDetail.copyUri=Kopiuj URI
main.vaultDetail.lockBtn=Blokuj
main.vaultDetail.bytesPerSecondRead=Odczyt:
main.vaultDetail.bytesPerSecondWritten=Zapisz:
@ -397,13 +410,17 @@ vaultOptions.general.startHealthCheckBtn=Rozpocznij Test Spójności
## Mount
vaultOptions.mount=Montowanie
vaultOptions.mount.info=Opcje zależą od wybranego typu woluminu.
vaultOptions.mount.linkToPreferences=Otwórz ustawienia dysku wirtualnego
vaultOptions.mount.readonly=Tylko do odczytu
vaultOptions.mount.customMountFlags=Własne flagi montowania udziału
vaultOptions.mount.winDriveLetterOccupied=zajęty
vaultOptions.mount.mountPoint=Punkt montowania
vaultOptions.mount.mountPoint.auto=Automatycznie wybierz odpowiednią lokalizację
vaultOptions.mount.mountPoint.driveLetter=Użyj przypisanej litery dysku
vaultOptions.mount.mountPoint.custom=Użyj wybranego katalogu
vaultOptions.mount.mountPoint.directoryPickerButton=Wybierz…
vaultOptions.mount.mountPoint.directoryPickerTitle=Wybierz katalog
## Master Key
vaultOptions.masterkey=Hasło
vaultOptions.masterkey.changePasswordBtn=Zmiana Hasła

View File

@ -272,6 +272,9 @@ preferences.interface.showTrayIcon=Ukázať ikonu na sytémovej lište (vyžaduj
## Volume
preferences.volume=Virtuálny disk
preferences.volume.type.automatic=Automaticky
preferences.volume.tcp.port=TCP port
preferences.volume.feature.mountFlags=Vlastné parametre mapovania
preferences.volume.feature.readOnly=Mapovanie len na čítanie
## Updates
preferences.updates=Aktualizácie
preferences.updates.currentVersion=Aktuálna verzia: %s
@ -352,6 +355,7 @@ main.vaultDetail.passwordSavedInKeychain=Heslo uložené
main.vaultDetail.unlockedStatus=Odomknutý
main.vaultDetail.accessLocation=Obsah Vášho trezora je dostupný tu:
main.vaultDetail.revealBtn=Odkry disk
main.vaultDetail.copyUri=Kopírovať URI
main.vaultDetail.lockBtn=Uzamknúť
main.vaultDetail.bytesPerSecondRead=Čítanie:
main.vaultDetail.bytesPerSecondWritten=Zápis:
@ -401,13 +405,17 @@ vaultOptions.general.startHealthCheckBtn=Spustiť kontrolu zdravia
## Mount
vaultOptions.mount=Mapovanie
vaultOptions.mount.info=Voľby závisia od typu zvolenej jednotky.
vaultOptions.mount.linkToPreferences=Otvoriť vlastnosti virtuálnej jednotky
vaultOptions.mount.readonly=Len-čítanie
vaultOptions.mount.customMountFlags=Vlastné parametre mapovania
vaultOptions.mount.winDriveLetterOccupied=obsadený
vaultOptions.mount.mountPoint=Bod mapovania
vaultOptions.mount.mountPoint.auto=Automaticky zvoľ vhodné umiestnenie
vaultOptions.mount.mountPoint.driveLetter=Použiť pridelené písmeno disku
vaultOptions.mount.mountPoint.custom=Použiť zvolený adresár
vaultOptions.mount.mountPoint.directoryPickerButton=Zvoliť…
vaultOptions.mount.mountPoint.directoryPickerTitle=Vyberte adresár
## Master Key
vaultOptions.masterkey=Heslo
vaultOptions.masterkey.changePasswordBtn=Zmeniť heslo

View File

@ -123,6 +123,10 @@ unlock.success.description=已成功解锁 "%s"! 您现在可以通过其虚拟
unlock.success.rememberChoice=记住选项且不再显示
unlock.success.revealBtn=显示驱动器
## Failure
unlock.error.customPath.message=无法将保险库挂载到自定义路径
unlock.error.customPath.description.notSupported=如果您仍想使用自定义路径,请转至首选项并选择支持它的卷类型。否则,请转至保险库选项并选择受支持的挂载点
unlock.error.customPath.description.notExists=自定义挂载路径不存在,请在您的本地文件系统中创建它或在保险库选项中进行更改
unlock.error.customPath.description.generic=您已为此保险库选择了自定义挂载路径,但使用失败,错误消息:%s
## Hub
hub.noKeychain.message=无法访问设备密钥
hub.noKeychain.description=为了解锁 Hub 保险库,需要使用由钥匙串保护的设备密钥。若要继续,请启用“%s”并在首选项中选择一个钥匙串
@ -271,7 +275,15 @@ preferences.interface.showMinimizeButton=显示最小化按钮
preferences.interface.showTrayIcon=显示托盘图标 (需重启)
## Volume
preferences.volume=虚拟磁盘
preferences.volume.type=卷类型(需重启)
preferences.volume.type.automatic=自动
preferences.volume.tcp.port=TCP 端口
preferences.volume.supportedFeatures=选定的卷类型支持以下功能:
preferences.volume.feature.mountAuto=自动选择挂载点
preferences.volume.feature.mountToDir=自定义目录作为挂载点
preferences.volume.feature.mountToDriveLetter=盘符作为挂载点
preferences.volume.feature.mountFlags=自定义挂载选项
preferences.volume.feature.readOnly=只读挂载
## Updates
preferences.updates=更新
preferences.updates.currentVersion=当前版本:%s
@ -352,6 +364,7 @@ main.vaultDetail.passwordSavedInKeychain=密码已保存
main.vaultDetail.unlockedStatus=已解锁
main.vaultDetail.accessLocation=您的保险库内容在此处访问:
main.vaultDetail.revealBtn=显示驱动器
main.vaultDetail.copyUri=复制 URI
main.vaultDetail.lockBtn=锁定
main.vaultDetail.bytesPerSecondRead=读取:
main.vaultDetail.bytesPerSecondWritten=写入:
@ -401,13 +414,17 @@ vaultOptions.general.startHealthCheckBtn=开始健康检查
## Mount
vaultOptions.mount=挂载
vaultOptions.mount.info=选项取决于所选的卷类型
vaultOptions.mount.linkToPreferences=打开虚拟驱动器首选项
vaultOptions.mount.readonly=只读
vaultOptions.mount.customMountFlags=自定义挂载标志
vaultOptions.mount.winDriveLetterOccupied=已占用
vaultOptions.mount.mountPoint=挂载点
vaultOptions.mount.mountPoint.auto=自动选择一个合适的位置
vaultOptions.mount.mountPoint.driveLetter=使用分配的驱动器字符
vaultOptions.mount.mountPoint.custom=使用选定的目录
vaultOptions.mount.mountPoint.directoryPickerButton=选择...
vaultOptions.mount.mountPoint.directoryPickerTitle=选择目录
## Master Key
vaultOptions.masterkey=密码
vaultOptions.masterkey.changePasswordBtn=更改密码