Compare commits

...

30 Commits
1.7.3 ... 1.7.4

Author SHA1 Message Date
Armin Schrenk
bf76bad626 Merge branch 'release/1.7.4' 2023-04-05 09:57:55 +02:00
Armin Schrenk
c3f654b454 finalize release 2023-04-05 09:56:34 +02:00
Armin Schrenk
d1d990d47c prepare 1.7.4 2023-04-04 18:17:24 +02:00
Cryptobot
6052c0589e New Crowdin updates (#2800)
New translations strings.properties

Belarusian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Danish; Dutch; French; German; Greek; Hebrew; Hungarian; Italian; Japanese; Norwegian Bokmal; Polish; Portuguese; Portuguese, Brazilian; Romanian; Russian; Slovak; Spanish; Swahili, Tanzania; Swedish; Turkish; 

[ci skip]
2023-04-04 18:15:07 +02:00
Armin Schrenk
db2560fccf bump cryptofs 2023-04-04 13:44:19 +02:00
Armin Schrenk
697529136e use regular jdk 2023-03-31 18:27:35 +02:00
Armin Schrenk
50d31bdc18 integrate debug installer feature into regular windows ci workflow 2023-03-31 18:24:10 +02:00
Armin Schrenk
84caf96d3f closes #2814
Zulu JDK does not create required directory structure, so use temurin + gluon jfx jmods instead
2023-03-31 18:21:30 +02:00
Armin Schrenk
b7fc03213d bump fuse-nio-adapter
Fixes #2801
2023-03-30 11:28:07 +02:00
Armin Schrenk
dfe17569e1 Merge pull request #2789 from cryptomator/feature/2786-only-restart-macfuset
Feature: Only require app restart if switching between macFUSE and FUSE-T
2023-03-30 11:23:09 +02:00
Armin Schrenk
827f9ad141 adjust comment 2023-03-30 11:18:28 +02:00
Armin Schrenk
c8a6d0339e Use in volume preferences controller same objet as in MountModule to store first used fuse mount service 2023-03-29 17:42:18 +02:00
Tobias Hagemann
b5bbd21f25 refactored the refactoring to a macfuse/fuse-t workaround again 2023-03-29 16:50:02 +02:00
Tobias Hagemann
771468c8c6 refactored macfuse/fuse-t specific workaround to a generic fuse workaround 2023-03-29 16:16:04 +02:00
Armin Schrenk
ea2a48771f Closes #2829 2023-03-29 12:03:35 +02:00
Tobias Hagemann
0e10da25b3 Update README.md
[ci skip]
2023-03-29 11:58:14 +02:00
Armin Schrenk
943a3e9cfd adjust visibility 2023-03-29 11:42:14 +02:00
Armin Schrenk
c988fb50a7 increase readability 2023-03-29 11:39:18 +02:00
Armin Schrenk
f1e97fa64b fix workflow 2023-03-22 10:44:54 +01:00
Armin Schrenk
b9d5cf04c2 fix workflow 2023-03-22 10:40:52 +01:00
Armin Schrenk
75cd3e44d8 change win-debug workflow to use temurin and openjfx jmods from gluon 2023-03-22 10:39:00 +01:00
Armin Schrenk
e15dd7565f add workflow to build a windows debug launcher 2023-03-20 10:35:42 +01:00
Tobias Hagemann
77bc60fe5b Update README.md 2023-03-17 17:56:46 +01:00
Tobias Hagemann
9f633a1ecb Update README.md 2023-03-17 17:06:34 +01:00
Armin Schrenk
fcf59d12a8 remove winget workflow 2023-03-15 16:47:34 +01:00
Armin Schrenk
6721075831 Merge branch 'main' into develop 2023-03-15 13:51:59 +01:00
Armin Schrenk
03a362e9b4 fix compilation 2023-03-13 13:01:13 +01:00
Armin Schrenk
2223bc5e78 use correct selection logic 2023-03-13 12:58:34 +01:00
Armin Schrenk
fdc0d2d6b5 only require restart in case if macFUSE or FUSE-T
Closes #2786
2023-03-13 12:44:56 +01:00
Armin Schrenk
58ed48b097 UI:
* remove restart notice for volume type
* only show restart label, when switching between macFUSE and FUSET
2023-03-13 11:17:56 +01:00
37 changed files with 288 additions and 157 deletions

View File

@@ -8,11 +8,17 @@ on:
version:
description: 'Version'
required: false
isDebug:
description: 'Build debug version with console output'
type: boolean
env:
JAVA_VERSION: 19
JAVA_DIST: 'zulu'
JAVA_DIST: 'temurin'
JAVA_CACHE: 'maven'
JFX_JMODS_URL: 'https://download2.gluonhq.com/openjfx/19.0.2.1/openjfx-19.0.2.1_windows-x64_bin-jmods.zip'
JFX_JMODS_HASH: 'B7CF2CAD2468842B3B78D99F6C0555771499A36FA1F1EE3DD1B9A4597F1FAB86'
defaults:
run:
@@ -30,6 +36,7 @@ jobs:
needs: [get-version]
env:
LOOPBACK_ALIAS: 'cryptomator-vault'
WIN_CONSOLE_FLAG: ''
steps:
- uses: actions/checkout@v3
- name: Setup Java
@@ -37,17 +44,31 @@ jobs:
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
java-package: 'jdk+fx'
java-package: 'jdk'
cache: ${{ env.JAVA_CACHE }}
- name: Ensure major jfx version in pom equals in jdk
shell: pwsh
- name: Download and extract JavaFX jmods from Gluon
#In the last step we move all jmods files a dir level up because jmods are placed inside a directory in the zip
run: |
$jfxPomVersion = (&mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) -split "\."
$jfxJdkVersion = ((Get-Content -path "${env:JAVA_HOME}/lib/javafx.properties" | Where-Object {$_ -like 'javafx.version=*' }) -replace '.*=','') -split "\."
if ($jfxPomVersion[0] -ne $jfxJdkVersion[0]) {
Write-Error "Major part of JavaFX version in pom($($jfxPomVersion[0])) does not match the version in JDK($($jfxJdkVersion[0])) "
exit 1
curl --output jfxjmods.zip -L "${{ env.JFX_JMODS_URL }}"
if(!(Get-FileHash -Path jfxjmods.zip -Algorithm SHA256).Hash.equals("${{ env.JFX_JMODS_HASH }}")) {
exit 1;
}
Expand-Archive -Path jfxjmods.zip -DestinationPath jfxjmods
Get-ChildItem -Path jfxjmods -Recurse -Filter "*.jmod" | ForEach-Object { Move-Item -Path $_ -Destination $_.Directory.Parent}
shell: pwsh
- name: Ensure major jfx version in pom and in jmods is the same
run: |
JMOD_VERSION_AMD64=$(jmod describe jfxjmods/javafx.base.jmod | head -1)
JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64#*@}
JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
if [ $POM_JFX_VERSION -ne $JMOD_VERSION_AMD64 ]; then
>&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION_AMD64})"
exit 1
fi
- name: Set version
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
- name: Run maven
@@ -61,13 +82,16 @@ jobs:
${JAVA_HOME}/bin/jlink
--verbose
--output runtime
--module-path "${JAVA_HOME}/jmods"
--module-path "jfxjmods;${JAVA_HOME}/jmods"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr
--strip-native-commands
--no-header-files
--no-man-pages
--strip-debug
--compress=1
- name: Change win-console flag if debug is active
if: ${{ inputs.isDebug }}
run: echo "WIN_CONSOLE_FLAG=--win-console" >> $GITHUB_ENV
- name: Run jpackage
run: >
${JAVA_HOME}/bin/jpackage
@@ -99,8 +123,10 @@ jobs:
--java-options "-Dcryptomator.buildNumber=\"msi-${{ needs.get-version.outputs.revNum }}\""
--java-options "-Dcryptomator.integrationsWin.autoStartShellLinkName=\"Cryptomator\""
--java-options "-Dcryptomator.integrationsWin.keychainPaths=\"~/AppData/Roaming/Cryptomator/keychain.json\""
--java-options "-Djavafx.verbose=${{ inputs.isDebug }}"
--resource-dir dist/win/resources
--icon dist/win/resources/Cryptomator.ico
${WIN_CONSOLE_FLAG}
- name: Patch Application Directory
run: |
cp dist/win/contrib/* appdir/Cryptomator

View File

@@ -1,49 +0,0 @@
name: Release to Winget
on:
workflow_call:
inputs:
releaseTag:
required: true
type: string
workflow_dispatch:
inputs:
releaseTag:
description: 'Release tag name'
required: true
type: string
jobs:
publish-winget:
name: Publish on winget repo
runs-on: windows-latest
steps:
- name: Get download url for release assets
id: get-release-assets
uses: actions/github-script@v6
with:
script: |
const query =`query($tag:String!) {
repository(owner:"cryptomator", name:"cryptomator"){
release(tagName: $tag) {
releaseAssets(first:20) {
nodes {
name
downloadUrl
}
}
}
}
}`;
const variables = {
tag: "${{ inputs.releaseTag }}"
}
return await github.graphql(query, variables)
- name: Submit package to Windows Package Manager Community Repository
id: submit-winget
run: |
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
$releaseAssets = (ConvertFrom-Json '${{ steps.get-release-assets.outputs.result }}').repository.release.releaseAssets.nodes
$installerUrl = $releaseAssets | Where-Object -Property name -match '^Cryptomator-.*\.msi$' | Select -ExpandProperty downloadUrl -First 1
.\wingetcreate.exe update Cryptomator.Cryptomator -s -v "${{ inputs.releaseTag }}" -u "$installerUrl" -t ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
shell: pwsh

View File

@@ -21,7 +21,6 @@ Cryptomator is provided free of charge as an open-source project despite the hig
<tbody>
<tr>
<td><a href="https://www.gee-whiz.de/"><img src="https://cryptomator.org/img/sponsors/geewhiz.svg" alt="gee-whiz" height="80"></a></td>
<td><a href="https://proxy-hub.com/"><img src="https://cryptomator.org/img/sponsors/proxyhub.svg" alt="Proxy-Hub" height="80"></a></td>
</tr>
</tbody>
</table>

View File

@@ -66,6 +66,7 @@
</content_rating>
<releases>
<release date="2023-04-05" version="1.7.4"/>
<release date="2023-03-15" version="1.7.3"/>
<release date="2023-03-07" version="1.7.2"/>
<release date="2023-03-03" version="1.7.1"/>

41
pom.xml
View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId>
<artifactId>cryptomator</artifactId>
<version>1.7.3</version>
<version>1.7.4</version>
<name>Cryptomator Desktop App</name>
<organization>
@@ -33,12 +33,12 @@
<nonModularGroupIds>org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents,de.swiesend,org.purejava,com.github.hypfvieh</nonModularGroupIds>
<!-- cryptomator dependencies -->
<cryptomator.cryptofs.version>2.6.2</cryptomator.cryptofs.version>
<cryptomator.cryptofs.version>2.6.3</cryptomator.cryptofs.version>
<cryptomator.integrations.version>1.2.0</cryptomator.integrations.version>
<cryptomator.integrations.win.version>1.2.0</cryptomator.integrations.win.version>
<cryptomator.integrations.mac.version>1.2.0</cryptomator.integrations.mac.version>
<cryptomator.integrations.linux.version>1.2.0</cryptomator.integrations.linux.version>
<cryptomator.fuse.version>2.0.4</cryptomator.fuse.version>
<cryptomator.fuse.version>2.0.5</cryptomator.fuse.version>
<cryptomator.dokany.version>2.0.0</cryptomator.dokany.version>
<cryptomator.webdav.version>2.0.2</cryptomator.webdav.version>
@@ -317,41 +317,6 @@
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>compile-light-theme</id>
<phase>compile</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>javafx.graphics/com.sun.javafx.css.parser.Css2Bin</mainClass>
<arguments>
<arg>${project.basedir}/src/main/resources/css/light_theme.css</arg>
<arg>${project.build.outputDirectory}/css/light_theme.bss</arg>
</arguments>
</configuration>
</execution>
<execution>
<id>compile-dark-theme</id>
<phase>compile</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>javafx.graphics/com.sun.javafx.css.parser.Css2Bin</mainClass>
<arguments>
<arg>${project.basedir}/src/main/resources/css/dark_theme.css</arg>
<arg>${project.build.outputDirectory}/css/dark_theme.bss</arg>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>

View File

@@ -2,7 +2,9 @@ package org.cryptomator.common;
import javafx.beans.binding.Bindings;
import javafx.beans.value.ObservableValue;
import java.util.Objects;
import java.util.function.Function;
import java.util.function.Supplier;
public class ObservableUtil {
@@ -15,4 +17,14 @@ public class ObservableUtil {
}
}, observable);
}
public static <T, U> ObservableValue<U> mapWithDefault(ObservableValue<T> observable, Function<? super T, ? extends U> mapper, Supplier<U> defaultValue) {
return Bindings.createObjectBinding(() -> {
if (observable.getValue() == null) {
return defaultValue.get();
} else {
return mapper.apply(observable.getValue());
}
}, observable);
}
}

View File

@@ -2,50 +2,71 @@ package org.cryptomator.common.mount;
import dagger.Module;
import dagger.Provides;
import org.cryptomator.common.ObservableUtil;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.integrations.mount.Mount;
import org.cryptomator.integrations.mount.MountService;
import javax.inject.Named;
import javax.inject.Singleton;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ObservableValue;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
@Module
public class MountModule {
private static final AtomicReference<MountService> formerSelectedMountService = new AtomicReference<>(null);
private static final List<String> problematicFuseMountServices = List.of("org.cryptomator.frontend.fuse.mount.MacFuseMountProvider", "org.cryptomator.frontend.fuse.mount.FuseTMountProvider");
@Provides
@Singleton
static List<MountService> provideSupportedMountServices() {
return MountService.get().toList();
}
//currently not used, because macFUSE and FUSE-T cannot be used in the same JVM
/*
@Provides
@Singleton
static ObservableValue<ActualMountService> provideMountService(Settings settings, List<MountService> serviceImpls) {
@Named("FUPFMS")
static AtomicReference<MountService> provideFirstUsedProblematicFuseMountService() {
return new AtomicReference<>(null);
}
@Provides
@Singleton
static ObservableValue<ActualMountService> provideMountService(Settings settings, List<MountService> serviceImpls, @Named("FUPFMS") AtomicReference<MountService> fupfms) {
var fallbackProvider = serviceImpls.stream().findFirst().orElse(null);
return ObservableUtil.mapWithDefault(settings.mountService(), //
var observableMountService = ObservableUtil.mapWithDefault(settings.mountService(), //
desiredServiceImpl -> { //
var desiredService = serviceImpls.stream().filter(serviceImpl -> serviceImpl.getClass().getName().equals(desiredServiceImpl)).findAny(); //
return new ActualMountService(desiredService.orElse(fallbackProvider), desiredService.isPresent()); //
var serviceFromSettings = serviceImpls.stream().filter(serviceImpl -> serviceImpl.getClass().getName().equals(desiredServiceImpl)).findAny(); //
var targetedService = serviceFromSettings.orElse(fallbackProvider);
return applyWorkaroundForProblematicFuse(targetedService, serviceFromSettings.isPresent(), fupfms);
}, //
new ActualMountService(fallbackProvider, true));
}
*/
@Provides
@Singleton
static ActualMountService provideActualMountService(Settings settings, List<MountService> serviceImpls) {
var fallbackProvider = serviceImpls.stream().findFirst().orElse(null);
var desiredService = serviceImpls.stream().filter(serviceImpl -> serviceImpl.getClass().getName().equals(settings.mountService().getValue())).findFirst(); //
return new ActualMountService(desiredService.orElse(fallbackProvider), desiredService.isPresent()); //
() -> { //
return applyWorkaroundForProblematicFuse(fallbackProvider, true, fupfms);
});
return observableMountService;
}
@Provides
@Singleton
static ObservableValue<ActualMountService> provideMountService(ActualMountService service) {
return new SimpleObjectProperty<>(service);
//see https://github.com/cryptomator/cryptomator/issues/2786
private synchronized static ActualMountService applyWorkaroundForProblematicFuse(MountService targetedService, boolean isDesired, AtomicReference<MountService> firstUsedProblematicFuseMountService) {
//set the first used problematic fuse service if applicable
var targetIsProblematicFuse = isProblematicFuseService(targetedService);
if (targetIsProblematicFuse && firstUsedProblematicFuseMountService.get() == null) {
firstUsedProblematicFuseMountService.set(targetedService);
}
//do not use the targeted mount service and fallback to former one, if the service is problematic _and_ not the first problematic one used.
if (targetIsProblematicFuse && !firstUsedProblematicFuseMountService.get().equals(targetedService)) {
return new ActualMountService(formerSelectedMountService.get(), false);
} else {
formerSelectedMountService.set(targetedService);
return new ActualMountService(targetedService, isDesired);
}
}
public static boolean isProblematicFuseService(MountService service) {
return problematicFuseMountServices.contains(service.getClass().getName());
}
}

View File

@@ -2,12 +2,14 @@ package org.cryptomator.ui.preferences;
import dagger.Lazy;
import org.cryptomator.common.ObservableUtil;
import org.cryptomator.common.mount.MountModule;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.integrations.mount.MountCapability;
import org.cryptomator.integrations.mount.MountService;
import org.cryptomator.ui.common.FxController;
import javax.inject.Inject;
import javax.inject.Named;
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanExpression;
@@ -19,6 +21,7 @@ import javafx.util.StringConverter;
import java.util.List;
import java.util.Optional;
import java.util.ResourceBundle;
import java.util.concurrent.atomic.AtomicReference;
@PreferencesScoped
public class VolumePreferencesController implements FxController {
@@ -33,6 +36,7 @@ public class VolumePreferencesController implements FxController {
private final ObservableValue<Boolean> mountToDriveLetterSupported;
private final ObservableValue<Boolean> mountFlagsSupported;
private final ObservableValue<Boolean> readonlySupported;
private final ObservableValue<Boolean> fuseRestartRequired;
private final Lazy<Application> application;
private final List<MountService> mountProviders;
public ChoiceBox<MountService> volumeTypeChoiceBox;
@@ -40,7 +44,7 @@ public class VolumePreferencesController implements FxController {
public Button loopbackPortApplyButton;
@Inject
VolumePreferencesController(Settings settings, Lazy<Application> application, List<MountService> mountProviders, ResourceBundle resourceBundle) {
VolumePreferencesController(Settings settings, Lazy<Application> application, List<MountService> mountProviders, @Named("FUPFMS") AtomicReference<MountService> firstUsedProblematicFuseMountService, ResourceBundle resourceBundle) {
this.settings = settings;
this.application = application;
this.mountProviders = mountProviders;
@@ -53,6 +57,12 @@ public class VolumePreferencesController implements FxController {
this.mountToDriveLetterSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.MOUNT_AS_DRIVE_LETTER));
this.mountFlagsSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.MOUNT_FLAGS));
this.readonlySupported = selectedMountService.map(s -> s.hasCapability(MountCapability.READ_ONLY));
this.fuseRestartRequired = selectedMountService.map(s -> {//
return firstUsedProblematicFuseMountService.get() != null //
&& MountModule.isProblematicFuseService(s) //
&& !firstUsedProblematicFuseMountService.get().equals(s);
});
}
public void initialize() {
@@ -129,6 +139,14 @@ public class VolumePreferencesController implements FxController {
return mountFlagsSupported.getValue();
}
public ObservableValue<Boolean> fuseRestartRequiredProperty() {
return fuseRestartRequired;
}
public boolean getFuseRestartRequired() {
return fuseRestartRequired.getValue();
}
/* Helpers */
private class MountServiceConverter extends StringConverter<MountService> {

View File

@@ -116,6 +116,10 @@
-fx-font-size: 0.64em;
}
.label-red {
-fx-text-fill: RED_5;
}
.text-flow > * {
-fx-fill: TEXT_FILL;
}

View File

@@ -116,6 +116,10 @@
-fx-font-size: 0.64em;
}
.label-red {
-fx-text-fill: RED_5;
}
.text-flow > * {
-fx-fill: TEXT_FILL;
}

View File

@@ -8,9 +8,9 @@
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.Tooltip?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Tooltip?>
<VBox xmlns:fx="http://javafx.com/fxml"
xmlns="http://javafx.com/javafx"
fx:controller="org.cryptomator.ui.preferences.VolumePreferencesController"
@@ -32,6 +32,8 @@
</Hyperlink>
</HBox>
<Label styleClass="label-red" text="%preferences.volume.fuseRestartRequired" visible="${controller.fuseRestartRequired}" managed="${controller.fuseRestartRequired}"/>
<HBox spacing="12" alignment="CENTER_LEFT" visible="${controller.loopbackPortSupported}" managed="${controller.loopbackPortSupported}">
<Label text="%preferences.volume.tcp.port"/>
<NumericTextField fx:id="loopbackPortField"/>

View File

@@ -275,9 +275,10 @@ preferences.interface.showMinimizeButton=Show minimize button
preferences.interface.showTrayIcon=Show tray icon (requires restart)
## Volume
preferences.volume=Virtual Drive
preferences.volume.type=Volume Type (requires restart)
preferences.volume.type=Volume Type
preferences.volume.type.automatic=Automatic
preferences.volume.docsTooltip=Open the documentation to learn more about the different volume types.
preferences.volume.fuseRestartRequired=To apply the changes, Cryptomator needs to be restarted.
preferences.volume.tcp.port=TCP Port
preferences.volume.supportedFeatures=The chosen volume type supports the following features:
preferences.volume.feature.mountAuto=Automatic mount point selection

View File

@@ -270,7 +270,6 @@ preferences.interface.showMinimizeButton=Паказаць кнопку згор
preferences.interface.showTrayIcon=Паказваць іконку на інфармацыйнай панэлі (спатрэбіцца перазапуск)
## Volume
preferences.volume=Віртуальны дыск
preferences.volume.type=Тып тому (спатрэбіцца перазапуск)
preferences.volume.type.automatic=Аўтаматычна
preferences.volume.docsTooltip=Адчыні дакумэнтацыю, каб даведацца больш пра розныя тыпы тому.
preferences.volume.tcp.port=Порт TCP

View File

@@ -274,7 +274,6 @@ 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.docsTooltip=Obre la documentació per aprendre més sobre els diferents tipus de volums.
preferences.volume.tcp.port=Port TCP

View File

@@ -272,7 +272,6 @@ preferences.interface.showMinimizeButton=Vis knap til minimering
preferences.interface.showTrayIcon=Vis ikon i system-bakken (kræver genstart)
## Volume
preferences.volume=Virtuelt drev
preferences.volume.type=Drev type (kræver genstart)
preferences.volume.type.automatic=Automatisk
preferences.volume.tcp.port=TCP port
preferences.volume.supportedFeatures=Den valgte type drev understøtter følgende funktioner:

View File

@@ -155,7 +155,7 @@ hub.unauthorized.message=Zugriff verweigert
hub.unauthorized.description=Dein Gerät wurde noch nicht für den Zugriff auf diesen Tresor autorisiert. Bitte den Tresorbesitzer, dein Gerät zu autorisieren.
### License Exceeded
hub.invalidLicense.message=Hub-Lizenz ungültig
hub.invalidLicense.description=Die Lizenz deiner Cryptomator-Hub-Instanz ist ungültig. Bitte informiere deinen Hub-Administrator, um die Lizenz zu aktualisieren oder zu erneuern.
hub.invalidLicense.description=Die Lizenz deiner Cryptomator-Hub-Instanz ist ungültig. Bitte informiere deinen Hub-Administrator, um die Lizenz zu erweitern oder zu erneuern.
# Lock
## Force
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Schaltfläche zum Minimieren anzeigen
preferences.interface.showTrayIcon=Symbol im Infobereich anzeigen (Neustart erforderlich)
## Volume
preferences.volume=Virtuelles Laufwerk
preferences.volume.type=Laufwerkstyp (Neustart erforderlich)
preferences.volume.type=Laufwerkstyp
preferences.volume.type.automatic=Automatisch
preferences.volume.docsTooltip=Öffne die Dokumentation, um mehr über die verschiedenen Laufwerkstypen zu erfahren.
preferences.volume.fuseRestartRequired=Um die Änderungen anzuwenden, muss Cryptomator neu gestartet werden.
preferences.volume.tcp.port=TCP-Port
preferences.volume.supportedFeatures=Der gewählte Laufwerkstyp unterstützt folgende Funktionen:
preferences.volume.feature.mountAuto=Automatische Einhängepunkt Auswahl

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Εμφάνιση κουμπιού ελ
preferences.interface.showTrayIcon=Εμφάνιση εικονιδίου tray (απαιτεί επανεκκίνηση)
## Volume
preferences.volume=Εικονικός δίσκος
preferences.volume.type=Τύπος Τόμου (απαιτείται επανεκκίνηση)
preferences.volume.type=Τύπος Τόμου
preferences.volume.type.automatic=Αυτόματα
preferences.volume.docsTooltip=Ανοίξτε τις οδηγίες για να μάθετε περισσότερα σχετικά με τους διαφορετικούς τύπους τόμων.
preferences.volume.fuseRestartRequired=Για να εφαρμοστούν οι αλλαγές, πρέπει να γίνει επανεκκίνηση του Cryptomator.
preferences.volume.tcp.port=Θύρα TCP
preferences.volume.supportedFeatures=Ο επιλεγμένος τύπος τόμου υποστηρίζει τις ακόλουθες δυνατότητες:
preferences.volume.feature.mountAuto=Αυτόματη επιλογή σημείου προσάρτησης

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Mostrar botón minimizar
preferences.interface.showTrayIcon=Mostrar ícono de bandeja (requiere reiniciar)
## Volume
preferences.volume=Unidad virtual
preferences.volume.type=Tipo de volumen (requiere reiniciar)
preferences.volume.type=Tipo de volumen
preferences.volume.type.automatic=Automático
preferences.volume.docsTooltip=Abra la documentación para saber más sobre los diferentes tipos de volumen.
preferences.volume.fuseRestartRequired=Para aplicar los cambios, Cryptomator necesita ser reiniciado.
preferences.volume.tcp.port=Puerto TCP
preferences.volume.supportedFeatures=El tipo de volumen elegido admite las siguientes funciones:
preferences.volume.feature.mountAuto=Selección automática del punto de montaje

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Afficher le bouton Réduire
preferences.interface.showTrayIcon=Montrer l'icône de service (redémarrage nécessaire)
## Volume
preferences.volume=Disque virtuel
preferences.volume.type=Type de volume (redémarrage requis)
preferences.volume.type=Type de volume
preferences.volume.type.automatic=Automatique
preferences.volume.docsTooltip=Consultez la documentation pour en savoir plus sur les différents types de volumes.
preferences.volume.fuseRestartRequired=Pour appliquer les modifications, Cryptomator doit être redémarré.
preferences.volume.tcp.port=Port TCP
preferences.volume.supportedFeatures=Le type de volume choisi prend en charge les fonctionnalités suivantes :
preferences.volume.feature.mountAuto=Sélection automatique du point de montage

View File

@@ -274,7 +274,6 @@ preferences.interface.showMinimizeButton=הצג כפתור מזעור
preferences.interface.showTrayIcon=הצג צלמית בשורה מטה (דורש הפעלה מחדש)
## Volume
preferences.volume=כונן וירטואלי
preferences.volume.type=סוג volume (דורש הפעלה מחדש)
preferences.volume.type.automatic=אוטומטי
preferences.volume.docsTooltip=בכדי ללמוד עוד על סוגי volume ניתן לקרוא את הדוקומנטציה.
preferences.volume.tcp.port=פורט TCP

View File

@@ -53,6 +53,9 @@ addvaultwizard.new.fileAlreadyExists=Már létezik fájl/könyvtár ezzel a trez
addvaultwizard.new.locationDoesNotExist=A megadott elérési úton lévő könyvtár nem létezik, vagy nem érhető el
addvaultwizard.new.locationIsNotWritable=Nincs írási hozzáférés a megadott elérési úthoz
addvaultwizard.new.locationIsOk=Megfelelő hely a trezornak
addvaultwizard.new.invalidName=Érvénytelen vault név
addvaultwizard.new.validName=Érvényes vault név
addvaultwizard.new.validCharacters.message=A vault neve a következő karaktereket tartalmazhatja:
### Password
addvaultwizard.new.createVaultBtn=Új széf létrehozása
addvaultwizard.new.generateRecoveryKeyChoice=Nem fog tudni hozzáférni az adataihoz a jelszó nélkül. Akar egy visszaállítási kulcsot arra az esetre, ha elveszíti a jelszavát?
@@ -79,12 +82,14 @@ addvault.new.readme.accessLocation.4=Bátran eltávolíthatja ezt a fájlt.
addvaultwizard.existing.instruction=Válassza ki a "vault.cryptomatotor" fájlt a meglévő tárolóhoz. Ha csak egy "masterkey.cryptomatotor" nevű fájl létezik, válassza azt.
addvaultwizard.existing.chooseBtn=Kiválaszt…
addvaultwizard.existing.filePickerTitle=Trezor fájl kiválasztása
addvaultwizard.existing.filePickerMimeDesc=Cryptomator széf
## Success
addvaultwizard.success.nextStepsInstructions=Széf létrehozva "%s".\nA tartalom eléréséhez, vagy hozzáadásához fel kell oldania a széfet. Alternatív megoldásként később bármikor feloldhatja.
addvaultwizard.success.unlockNow=Azonnali feloldás
# Remove Vault
removeVault.title=Széf eltávolitása
removeVault.message=Vault eltávolitása?
removeVault.description=Ez kizárolag a Cryptomator-ból távolitja el ezt a széfet. Később hozzáadhatja újra. A titkosított fájlokat nem törli a merevlemezről.
removeVault.confirmBtn=Széf eltávolitása
@@ -95,6 +100,7 @@ changepassword.finalConfirmation=Megértettem, hogy nem fogok hozzáférni az ad
# Forget Password
forgetPassword.title=Jelszó elfelejtése
forgetPassword.message=Elfelejtette az elmentett jelszót?
forgetPassword.description=Eltávolítja a széf mentett jelszavát a rendszere kulcstartójából.
forgetPassword.confirmBtn=Jelszó elfelejtése
@@ -107,18 +113,23 @@ unlock.unlockBtn=Feloldás
unlock.chooseMasterkey.description=Nem található a tároló kulcsfájlja a várt helyen. Kérjük válassza ki a kulcsfájlt manuálisan.
unlock.chooseMasterkey.filePickerTitle=Mesterkulcs fájl kiválasztása
## Success
unlock.success.message=Sikeres feloldás
unlock.success.description="%s" sikreresen feloldásra került! Mostmár hozzáférhet a virtuális trezorhoz.
unlock.success.rememberChoice=Jegyezze meg a választást és ne mutassa többet
unlock.success.revealBtn=Széf megjelenítése
## Failure
## Hub
hub.noKeychain.openBtn=Beállítások megnyitása
### Waiting
### Receive Key
hub.receive.message=Válasz feldolgozása…
### Register Device
hub.register.nameLabel=Készülék neve
hub.register.occupiedMsg=Ez a név már használatban van
hub.register.registerBtn=Megerősítés
### Registration Success
### Registration Failed
hub.registerFailed.message=Az eszköz elnevezése sikertelen volt
### Unauthorized
### License Exceeded
@@ -136,6 +147,7 @@ lock.fail.description=A "%s" tárolót nem lehetett zárolni. Győződjön meg a
migration.title=Széf frissítése
## Start
migration.start.header=Széf frissítése
migration.start.remarkUndone=Ezt a módosítást nem lehet visszafordítani.
migration.start.confirm=Elolvastam és megértettem a fenti információkat
## Run
migration.run.enterPassword=Írja be a jelszót a következőhöz Enter the password for "%s"
@@ -184,8 +196,19 @@ health.check.detail.checkFinished=Az ellenőrzés sikeresen véget ért.
health.check.detail.checkFinishedAndFound=Az ellenőrzés véget ért. Kérem ellenőrizze az eredményét.
health.check.detail.checkFailed=Az ellenőrzés egy hiba miatt megszakadt.
health.check.detail.checkCancelled=Az ellenőrzés meg lett szakítva.
health.check.detail.listFilters.label=Szűrő
health.check.detail.fixAllSpecificBtn=Az összes ilyen javítása
health.check.exportBtn=Jelentés exportálása
## Result view
health.result.severityFilter.all=Súlyosság - Összes
health.result.severityFilter.good=Rendben
health.result.severityFilter.info=Infó
health.result.severityFilter.warn=Figyelmeztetés
health.result.severityFilter.crit=Kritikus
health.result.fixStateFilter.fixable=Javítható
health.result.fixStateFilter.notFixable=Nem javítható
health.result.fixStateFilter.fixing=Javítás alatt…
health.result.fixStateFilter.fixed=Kijavított
## Fix Application
health.fix.fixBtn=Javítás
health.fix.successTip=Javítás sikeres

View File

@@ -154,6 +154,8 @@ hub.registerFailed.description=Si è verificato un errore nel processo di nomina
hub.unauthorized.message=Accesso negato
hub.unauthorized.description=Il tuo dispositivo non è ancora stato autorizzato ad accedere a questa cassaforte. Chiedi al proprietario della cassaforte di autorizzarlo.
### License Exceeded
hub.invalidLicense.message=Licenza Hub non valida
hub.invalidLicense.description=La tua istanza Cryptomator Hub ha una licenza non valida. Si prega di informare un amministratore Hub per aggiornare o rinnovare la licenza.
# Lock
## Force
@@ -272,8 +274,10 @@ 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=Tipo di Volume
preferences.volume.type.automatic=Automatico
preferences.volume.docsTooltip=Aprire la documentazione per saperne di più sui diversi tipi di volume.
preferences.volume.fuseRestartRequired=Per applicare le modifiche, Cryptomator deve essere riavviato.
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
@@ -443,6 +447,8 @@ recoveryKey.display.StorageHints=Mantienilo da qualche parte molto sicuro, ad es
recoveryKey.recover.title=Reimposta Password
recoveryKey.recover.prompt=Inserisci la tua chiave di recupero per "%s":
recoveryKey.recover.correctKey=Questa è una chiave di recupero valida
recoveryKey.recover.wrongKey=Questa chiave di recupero appartiene ad una cassaforte diversa
recoveryKey.recover.invalidKey=Questa chiave di recupero non é valida
recoveryKey.printout.heading=Chiave di recupero Cryptomator\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=Reimposta

View File

@@ -125,8 +125,8 @@ unlock.success.revealBtn=ドライブを表示
## Failure
unlock.error.customPath.message=カスタム パスに金庫をマウントできません
unlock.error.customPath.description.notSupported=カスタム パスを使い続けたい場合、環境設定に移動してサポートしているボリューム タイプを選択してください。もしくは、金庫のオプションに移動してサポートされるマウント ポイントを選択してください。
unlock.error.customPath.description.notExists=カスタム マウント パスが存在していません。ローカル ファイルシステムで作成するか、金庫のオプションで変更を加えてください。
unlock.error.customPath.description.generic=この金庫のカスタムマウントパスを選択しましたが、その使用は次のメッセージで失敗しました: %s
unlock.error.customPath.description.notExists=カスタム マウント パスが存在していません。ローカル ファイルシステムで作成するか、金庫のオプションで変更てください。
unlock.error.customPath.description.generic=この金庫のカスタム マウント パスを選択しましたが、次のメッセージで失敗しました: %s
## Hub
hub.noKeychain.message=デバイス キーにアクセスできません
hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。
@@ -154,8 +154,8 @@ hub.registerFailed.description=デバイス名登録中にエラーが発生し
hub.unauthorized.message=アクセスが拒否されました
hub.unauthorized.description=お使いのデバイスはまだこの金庫にアクセスする権限がありません。金庫のオーナーに権限を与えてもらってください。
### License Exceeded
hub.invalidLicense.message=ハブライセンスが無効です
hub.invalidLicense.description=Cryptomator ハブインスタンスに無効なライセンスがあります。ライセンスをアップグレードまたは更新するには、ハブ管理者に連絡してください。
hub.invalidLicense.message=Hub のライセンスが無効です
hub.invalidLicense.description=Cryptomator Hub インスタンスライセンスが無効です。ライセンスをアップグレードまたは更新するには、Hub の管理者に連絡ください。
# Lock
## Force
@@ -171,10 +171,10 @@ lock.fail.description=金庫 "%s" を施錠できませんでした。保存さ
migration.title=金庫をアップグレード
## Start
migration.start.header=金庫をアップグレード
migration.start.text=Cryptomatorのこの新しいバージョンであなたの金庫「%s」を開くには、金庫を新しい形式にアップグレードする必要があります。こを行う前に、次のことを知っておく必要があります:
migration.start.text=この新しいバージョンの Cryptomator 内で金庫 "%s" を開くには、金庫を新しい形式にアップグレードする必要があります。この操作を行う前に、次のことにご注意ください:
migration.start.remarkUndone=このアップグレードは取り消すことができません。
migration.start.remarkVersions=古い Cryptomator では、アップグレードされた金庫を開くことができなくなります。
migration.start.remarkCanRun=あなたが金庫にアクセスするすべてのデバイスは、Cryptomatorのこのバージョンを実行できることを確認する必要があります。
migration.start.remarkVersions=古い Cryptomator では、アップグレードた金庫を開くことができなくなります。
migration.start.remarkCanRun=金庫にアクセスするすべてのデバイスがこのバージョンの Cryptomator を実行できることを確認する必要があります。
migration.start.remarkSynced=アップグレードする前に、このデバイスと他のデバイスで、金庫が完全に同期されていることを確認する必要があります。
migration.start.confirm=上記の情報を理解しました。
## Run
@@ -274,14 +274,15 @@ preferences.interface.showMinimizeButton=最小化ボタンを表示
preferences.interface.showTrayIcon=トレイアイコンを表示 (再起動が必要)
## Volume
preferences.volume=仮想ドライブ
preferences.volume.type=ボリューム タイプ (再起動が必要)
preferences.volume.type=ボリュームの種類
preferences.volume.type.automatic=自動
preferences.volume.docsTooltip=異なるボリュームタイプの詳細については、ドキュメントを確認してください。
preferences.volume.fuseRestartRequired=変更を適用するには、Cryptomator を再起動する必要があります。
preferences.volume.tcp.port=TCP ポート
preferences.volume.supportedFeatures=選択されたボリュームタイプは、以下の機能をサポートしています
preferences.volume.supportedFeatures=選択たボリューム形式は、次の機能をサポートしています:
preferences.volume.feature.mountAuto=マウント先の自動選択
preferences.volume.feature.mountToDir=カスタムディレクトリをマウント先に指定
preferences.volume.feature.mountToDriveLetter=ドライブレターをマウント先に指定
preferences.volume.feature.mountToDir=カスタム ディレクトリをマウント先に指定
preferences.volume.feature.mountToDriveLetter=ドライブ レターをマウント先に指定
preferences.volume.feature.mountFlags=カスタム マウント オプション
preferences.volume.feature.readOnly=読み取り専用マウント
## Updates
@@ -306,21 +307,27 @@ stats.title=%s の統計情報
stats.cacheHitRate=キャッシュ ヒット率
## Read
stats.read.throughput.idle=読み取り: アイドル状態
stats.read.throughput.kibs=読み取り: %.2f KiB/s
stats.read.throughput.mibs=読み取り: %.2f MiB/s
stats.read.total.data.none=データ読み取り: -
stats.read.total.data.kib=データ読み取り: %.1f KiB
stats.read.total.data.mib=データ読み取り: %.1f MiB
stats.read.total.data.gib=データ読み取り: %.1f GiB
stats.decr.total.data.none=復号済みデータ: -
stats.decr.total.data.kib=復号済みデータ: %.1f KiB
stats.decr.total.data.mib=復号済みデータ: %.1f MiB
stats.decr.total.data.gib=復号済みデータ: %.1f GiB
stats.read.accessCount=合計読み取り: %d
## Write
stats.write.throughput.idle=書き込み: アイドル状態
stats.write.throughput.kibs=書き込み: %.2f KiB/s
stats.write.throughput.mibs=書き込み: %.2f MiB/s
stats.write.total.data.none=書き込み済みデータ: -
stats.write.total.data.kib=書き込み済みデータ: %.1f KiB
stats.write.total.data.mib=書き込み済みデータ: %.1f MiB
stats.write.total.data.gib=書き込み済みデータ: %.1f GiB
stats.encr.total.data.none=暗号化済みデータ: -
stats.encr.total.data.kib=暗号化済みデータ: %.1f KiB
stats.encr.total.data.mib=暗号化済みデータ: %.1f MiB
stats.encr.total.data.gib=暗号化済みデータ: %.1f GiB
stats.write.accessCount=合計書き込み: %d
@@ -363,6 +370,7 @@ main.vaultDetail.lockBtn=施錠
main.vaultDetail.bytesPerSecondRead=読み取り:
main.vaultDetail.bytesPerSecondWritten=書き込み:
main.vaultDetail.throughput.idle=アイドル
main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=金庫の統計情報
main.vaultDetail.locateEncryptedFileBtn=暗号化されたファイルの場所

View File

@@ -274,7 +274,6 @@ preferences.interface.showMinimizeButton=Vis minimer-knapp
preferences.interface.showTrayIcon=Vis verktøykasseikon (krever omstart)
## Volume
preferences.volume=Virtuell enhet
preferences.volume.type=Volumtype (krever omstart)
preferences.volume.type.automatic=Automatisk
preferences.volume.docsTooltip=Åpne dokumentasjonen for å lære mer om de forskjellige volumtypene.
preferences.volume.tcp.port=TCP Port

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Knop minimaliseren weergeven
preferences.interface.showTrayIcon=Pictogram in systeemvak weergeven (herstart vereist)
## Volume
preferences.volume=Virtuele schijf
preferences.volume.type=Type Volume (herstart vereist)
preferences.volume.type=Type volume
preferences.volume.type.automatic=Automatisch
preferences.volume.docsTooltip=Open de documentatie om meer te weten te komen over de verschillende volume types.
preferences.volume.fuseRestartRequired=Om de wijzigingen toe te passen, moet Cryptomator opnieuw worden gestart.
preferences.volume.tcp.port=TCP-poort
preferences.volume.supportedFeatures=Het gekozen volume type ondersteunt de volgende functies:
preferences.volume.feature.mountAuto=Automatische koppelpunt selectie

View File

@@ -274,7 +274,6 @@ preferences.interface.showMinimizeButton=Pokaż przycisk minimalizacji
preferences.interface.showTrayIcon=Pokaż ikonę zasobnika (wymaga restartu)
## Volume
preferences.volume=Dysk wirtualny
preferences.volume.type=Typ udziału (wymaga ponownego uruchomienia)
preferences.volume.type.automatic=Automatyczny
preferences.volume.docsTooltip=Sprawdź dokumentację, aby dowiedzieć się więcej o różnych typach udziałów.
preferences.volume.tcp.port=Port TCP
@@ -306,21 +305,27 @@ stats.title=Statystyki dla %s
stats.cacheHitRate=Trafność cache
## Read
stats.read.throughput.idle=Odczyt: bezczynny
stats.read.throughput.kibs=Odczyt: %.2f kiB/s
stats.read.throughput.mibs=Odczyt: %.2f kiB/s
stats.read.total.data.none=Dane odczytywane: -
stats.read.total.data.kib=Odczyt danych: %.1f KiB
stats.read.total.data.mib=Odczyt danych: %.1f kiB
stats.read.total.data.gib=Odczyt danych: %.1f kiB
stats.decr.total.data.none=Dane odszyfrowane: -
stats.decr.total.data.kib=Dane odszyfrowane: %.1f KiB
stats.decr.total.data.mib=Dane odszyfrowane: %.1f kiB
stats.decr.total.data.gib=Dane odszyfrowane: %.1f kiB
stats.read.accessCount=Całkowite odczyty: %d
## Write
stats.write.throughput.idle=Zapis: bezczynny
stats.write.throughput.kibs=Zapis: %.2f KiB/s
stats.write.throughput.mibs=Zapis: %.2f kiB/s
stats.write.total.data.none=Zapisane dane: -
stats.write.total.data.kib=Zapis danych: %.1f KiB
stats.write.total.data.mib=Zapisane dane: %.1f MiB
stats.write.total.data.gib=Zapisane dane: %.1f kiB
stats.encr.total.data.none=Dane odszyfrowane: -
stats.encr.total.data.kib=Dane zaszyfrowane: %.1f KiB
stats.encr.total.data.mib=Dane odszyfrowane: %.1f kiB
stats.encr.total.data.gib=Dane odszyfrowane: %.1f kiB
stats.write.accessCount=Całkowity zapis: %d
@@ -363,6 +368,7 @@ main.vaultDetail.lockBtn=Blokuj
main.vaultDetail.bytesPerSecondRead=Odczyt:
main.vaultDetail.bytesPerSecondWritten=Zapisz:
main.vaultDetail.throughput.idle=bezczynny
main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statystyki sejfu
main.vaultDetail.locateEncryptedFileBtn=Zlokalizuj zaszyfrowany plik

View File

@@ -217,6 +217,7 @@ health.check.detail.checkFinishedAndFound=A verificação concluiu. Por favor, r
health.check.detail.listFilters.label=Filtro
health.check.exportBtn=Exportar relatórios
## Result view
health.result.severityFilter.all=Gravidade - Todos
health.result.severityFilter.good=Ótimo
health.result.severityFilter.info=Informações
health.result.severityFilter.warn=Atenção
@@ -262,15 +263,35 @@ preferences.about=Sobre
# Vault Statistics
stats.title=Estatísticas de %s
## Read
stats.decr.total.data.none=Dados desencriptados: -
stats.decr.total.data.kib=Dados desencriptados: %.1f KiB
stats.decr.total.data.mib=Dados desencriptados: %.1f MiB
stats.decr.total.data.gib=Dados desencriptados: %.1f GiB
stats.read.accessCount=Total de leituras: %d
## Write
stats.write.throughput.idle=Escrever: em pausa
stats.write.throughput.kibs=Escrever: %.2f KiB/s
stats.write.throughput.mibs=Escrever: %.2f MiB/s
stats.write.total.data.none=Dados gravados: -
stats.write.total.data.kib=Dados gravados: %.1f KiB
stats.write.total.data.mib=Dados gravados: %.1f MiB
stats.write.total.data.gib=Dados gravados: %.1f GiB
stats.encr.total.data.none=Dados encriptados: -
stats.encr.total.data.kib=Dados encriptados: %.1f KiB
stats.encr.total.data.mib=Dados encriptados: %.1f MiB
stats.encr.total.data.gib=Dados encriptados: %.1f GiB
stats.write.accessCount=Total de escritas: %d
## Accesses
stats.access.current=Acesso: %d
stats.access.total=Total de acessos: %d
# Main Window
main.closeBtn.tooltip=Fechar
main.minimizeBtn.tooltip=Minimizar
main.preferencesBtn.tooltip=Preferências
main.debugModeEnabled.tooltip=Modo de depuração está ativado
main.supporterCertificateMissing.tooltip=Por favor, considere doar
## Vault List
main.vaultlist.emptyList.onboardingInstruction=Clique aqui para adicionar um cofre
@@ -278,10 +299,12 @@ main.vaultlist.contextMenu.remove=Remover…
main.vaultlist.contextMenu.lock=Trancar
main.vaultlist.contextMenu.unlock=Desbloquear…
main.vaultlist.contextMenu.unlockNow=Destrancar agora
main.vaultlist.contextMenu.vaultoptions=Mostrar opções do Cofre
main.vaultlist.contextMenu.reveal=Revelar unidade
main.vaultlist.addVaultBtn=Adicionar Cofre
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Obrigado por escolher Cryptomator para proteger os seus ficheiros. Se precisar de alguma ajuda, veja os nossos guias introdutórios:
### Locked
main.vaultDetail.lockedStatus=BLOQUEADO
main.vaultDetail.unlockBtn=Desbloquear…
@@ -292,24 +315,38 @@ main.vaultDetail.passwordSavedInKeychain=Palavra-passe guardada
main.vaultDetail.unlockedStatus=DESBLOQUEADO
main.vaultDetail.accessLocation=O conteúdo do seu cofre está acessível aqui:
main.vaultDetail.revealBtn=Revelar unidade
main.vaultDetail.copyUri=Copiar endereço
main.vaultDetail.lockBtn=Trancar
main.vaultDetail.bytesPerSecondRead=Ler:
main.vaultDetail.bytesPerSecondWritten=Escrever:
main.vaultDetail.throughput.idle=inativo
main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Estatísticas do Cofre
main.vaultDetail.locateEncryptedFileBtn=Localizar 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.filePickerTitle=Selecione o ficheiro no cofre
### Missing
main.vaultDetail.missing.info=O Cryptomator não conseguiu encontrar um cofre neste diretório.
main.vaultDetail.missing.recheck=Verificar novamente
main.vaultDetail.missing.remove=Remover da Lista de Cofres…
main.vaultDetail.missing.changeLocation=Mudar localização do Cofre…
### Needs Migration
main.vaultDetail.migrateButton=Atualizar Cofre
main.vaultDetail.migratePrompt=O cofre precisa de ser atualizado para um novo formato, antes que possa acessá-lo
### Error
main.vaultDetail.error.info=Ocorreu um erro a carregar o cofre do disco.
main.vaultDetail.error.reload=Recarregar
main.vaultDetail.error.windowTitle=Erro a carregar o cofre
# Wrong File Alert
wrongFileAlert.title=Como criptografar arquivos
wrongFileAlert.message=Você tentou criptografar esses arquivos?
wrongFileAlert.description=Para isso, o Cryptomator fornece um volume no gestor de ficheiros do seu sistema.
wrongFileAlert.instruction.0=Para encriptar ficheiros, siga estes passos:
wrongFileAlert.instruction.1=1. Desbloqueie o seu cofre.
wrongFileAlert.instruction.2=2. Clique em "Revelar" para abrir o volume no seu gestor de ficheiros.
wrongFileAlert.instruction.3=3. Adicione ficheiros a este volume.
wrongFileAlert.link=Para obter assistência, visite
@@ -317,34 +354,76 @@ wrongFileAlert.link=Para obter assistência, visite
## General
vaultOptions.general=Geral
vaultOptions.general.vaultName=Nome do Cofre
vaultOptions.general.autoLock.lockAfterTimePart1=Bloquear quando inativo por
vaultOptions.general.autoLock.lockAfterTimePart2=minutos
vaultOptions.general.unlockAfterStartup=Destrancar o cofre ao iniciar o Cryptomator
vaultOptions.general.actionAfterUnlock=Após destrancar com sucesso
vaultOptions.general.actionAfterUnlock.ignore=Não fazer nada
vaultOptions.general.actionAfterUnlock.reveal=Revelar unidade
vaultOptions.general.actionAfterUnlock.ask=Perguntar
vaultOptions.general.startHealthCheckBtn=Verificar Saúde
## Mount
vaultOptions.mount=Montar
vaultOptions.mount.info=Opções dependem do tipo de volume selecionado.
vaultOptions.mount.linkToPreferences=Abrir preferências da Unidade Virtual
vaultOptions.mount.readonly=Somente leitura
vaultOptions.mount.winDriveLetterOccupied=ocupado
vaultOptions.mount.mountPoint=Ponto de montagem
vaultOptions.mount.mountPoint.auto=Escolher automaticamente um local adequado
vaultOptions.mount.mountPoint.driveLetter=Use a letra da unidade atribuída
vaultOptions.mount.mountPoint.custom=Usar diretório escolhido
vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
vaultOptions.mount.mountPoint.directoryPickerTitle=Escolher um diretório
## Master Key
vaultOptions.masterkey=Senha
vaultOptions.masterkey.changePasswordBtn=Alterar Senha
vaultOptions.masterkey.forgetSavedPasswordBtn=Esqueça a senha salva
vaultOptions.masterkey.recoveryKeyExplanation=Uma chave de recuperação é a única forma de restaurar o acesso a um cofre se perder a senha.
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir Chave de Recuperação
vaultOptions.masterkey.recoverPasswordBtn=Redefinir palavra-passe
# Recovery Key
## Display Recovery Key
recoveryKey.display.title=Mostrar chave de recuperação
recoveryKey.create.message=Palavra-passe necessária
recoveryKey.create.description=Inserir a palavra passe de "%s" para mostrar a chave de recuperação.
recoveryKey.display.description=Esta chave de recuperação pode ser usada para restaurar acesso a "%s":
recoveryKey.display.StorageHints=Guarde-a num lugar muito seguro, por exemplo:\n • Armazená-la usando um gerenciador de senhas\n • Guarde-a numa pen USB\n • Imprima-a em papel
## Reset Password
### Enter Recovery Key
recoveryKey.recover.title=Redefinir palavra-passe
recoveryKey.recover.prompt=Insira a chave de recuperação para "%s":
recoveryKey.recover.correctKey=Esta chave de recuperação está certa
recoveryKey.recover.wrongKey=Esta chave de recuperação pertence a um cofre diferente
recoveryKey.recover.invalidKey=Esta chave de recupreação não está certa
recoveryKey.printout.heading=A chave de recuperação do Cryptomator \n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=Repor
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=Palavra-passe redefinida com sucesso
recoveryKey.recover.resetSuccess.description=Você pode desbloquear o seu cofre com a nova senha.
# New Password
newPassword.promptText=Inserir uma nova palavra-passe
newPassword.reenterPassword=Confirme a nova palavra-passe
newPassword.passwordsMatch=As palavras-passe são iguais!
newPassword.passwordsDoNotMatch=As palavras-passe não são iguais
passwordStrength.messageLabel.tooShort=Use pelo menos %d caracteres
passwordStrength.messageLabel.0=Muito fraca
passwordStrength.messageLabel.1=Fraca
passwordStrength.messageLabel.2=Razoável
passwordStrength.messageLabel.3=Forte
passwordStrength.messageLabel.4=Muito forte
# Quit
quit.title=Sair da aplicação
quit.message=Existem cofres desbloqueados
quit.description=Por favor, confirme que deseja sair. O Cryptomator irá fechar graciosamente todos os cofres desbloqueados para evitar a perda de dados.
quit.lockAndQuitBtn=Bloquear e Sair
# Forced Quit
# Forced Quit
quit.forced.message=Alguns cofres não poderam ser fechados
quit.forced.description=Bloquear os cofres foi impossibilitado por operações pendentes ou ficheiros abertos. Poderá forçar o bloqueio dos cofres restantes, sob a possibilidade da perda de dados não guardados.
quit.forced.forceAndQuitBtn=Forçar e Sair

View File

@@ -272,7 +272,6 @@ preferences.interface.showMinimizeButton=Mostrar botão minimizar
preferences.interface.showTrayIcon=Mostrar ícone na barra do sistema (requer reinicialização)
## Volume
preferences.volume=Volume Virtual
preferences.volume.type=Tipo de Volume (requer reinicialização)
preferences.volume.type.automatic=Automático
preferences.volume.tcp.port=Porta TCP
preferences.volume.supportedFeatures=O tipo de volume escolhido suporta os seguintes recursos:

View File

@@ -272,7 +272,6 @@ preferences.interface.showMinimizeButton=Arată butonul de minimizare
preferences.interface.showTrayIcon=Arată tray icon (necesită repornire)
## Volume
preferences.volume=Unitate virtuală
preferences.volume.type=Tip unitate de stocare (necesită repornire)
preferences.volume.type.automatic=Automat
preferences.volume.docsTooltip=Deschideți documentația pentru a afla mai multe despre tipurile diferite de unități de stocare.
preferences.volume.tcp.port=Portul TCP

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Показывать кнопку св
preferences.interface.showTrayIcon=Показывать значок в панели задач (требуется перезапуск)
## Volume
preferences.volume=Виртуальный диск
preferences.volume.type=Тип тома (требуется перезапуск)
preferences.volume.type=Тип тома
preferences.volume.type.automatic=Автоматически
preferences.volume.docsTooltip=Откройте документацию, чтобы узнать больше о различных типах томов.
preferences.volume.fuseRestartRequired=Для применения изменений необходимо перезапустить Cryptomator.
preferences.volume.tcp.port=Порт TCP
preferences.volume.supportedFeatures=Выбранный тип тома поддерживает следующие функции:
preferences.volume.feature.mountAuto=Выбор точки автомонтирования

View File

@@ -272,9 +272,10 @@ preferences.interface.showMinimizeButton=Ukáž minimalizačné tlačidlo
preferences.interface.showTrayIcon=Ukázať ikonu na sytémovej lište (vyžaduje reštart)
## Volume
preferences.volume=Virtuálny disk
preferences.volume.type=Typ oddielu (vyžaduje reštart)
preferences.volume.type=Typ obsahu
preferences.volume.type.automatic=Automaticky
preferences.volume.docsTooltip=Pre viac informácií ohľadne iných typov volume otvorte dokumentáciu.
preferences.volume.fuseRestartRequired=Pre aplikovanie zmien je potrebné Cryptomator reštartovať.
preferences.volume.tcp.port=TCP port
preferences.volume.supportedFeatures=Zvolený typ oddielu podporuje nasledovné funkcie:
preferences.volume.feature.mountAuto=Automatická voľba bodu pripojenia

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Visa minimera-knapp
preferences.interface.showTrayIcon=Visa ikon i aktivitetsfältet (kräver omstart)
## Volume
preferences.volume=Virtuell enhet
preferences.volume.type=Volymtyp (kräver omstart)
preferences.volume.type=Volymtyp
preferences.volume.type.automatic=Automatiskt
preferences.volume.docsTooltip=Öppna dokumentationen för att läsa mer om de olika volymtyperna.
preferences.volume.fuseRestartRequired=Cryptomator måste startas om för att tillämpa ändringarna.
preferences.volume.tcp.port=TCP-port
preferences.volume.supportedFeatures=Den valda volymtypen stöder följande funktioner:
preferences.volume.feature.mountAuto=Automatiskt val av monteringspunkt

View File

@@ -274,7 +274,6 @@ preferences.interface.showMinimizeButton=Onyesha kitufe cha kupunguza
preferences.interface.showTrayIcon=Onyesha ikoni ya trei (inahitaji kuanzisha upya)
## Volume
preferences.volume=Kiendeshi pepe
preferences.volume.type=Aina ya Sauti (inahitaji kuanzishwa upya)
preferences.volume.type.automatic=Otomatiki
preferences.volume.docsTooltip=Fungua hati ili kujifunza zaidi kuhusu aina tofauti za sauti.
preferences.volume.tcp.port=Bandari ya TCP
@@ -283,6 +282,7 @@ preferences.volume.feature.mountAuto=Uchaguzi wa sehemu ya kupachika otomatiki
preferences.volume.feature.mountToDir=Saraka maalum kama sehemu ya kupachika
preferences.volume.feature.mountToDriveLetter=Endesha barua kama sehemu ya kupachika
preferences.volume.feature.mountFlags=Chaguzi maalum za kupachika
preferences.volume.feature.readOnly=Mlima wa kusoma pekee
## Updates
preferences.updates=Sasishi
preferences.updates.currentVersion=Toleo la Sasa: %s

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Küçültme düğmesini göster
preferences.interface.showTrayIcon=Sistem tepsisi simgesini göster (Yeniden başlatma gerekir)
## Volume
preferences.volume=Sanal Sürücü
preferences.volume.type=Birim Türü (yeniden başlatma gerektirir)
preferences.volume.type=Birim Türü
preferences.volume.type.automatic=Otomatik
preferences.volume.docsTooltip=Farklı birim türleri hakkında daha fazla bilgi edinmek için belgeleri açın.
preferences.volume.fuseRestartRequired=Değişikliklerin uygulanması için Cryptomator uygulamasının yeniden başlatılması gerekmektedir.
preferences.volume.tcp.port=TCP Portu
preferences.volume.supportedFeatures=Seçilen birim türü aşağıdaki özellikleri destekler:
preferences.volume.feature.mountAuto=Otomatik bağlama noktası seçimi

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=显示最小化按钮
preferences.interface.showTrayIcon=显示托盘图标(需重启)
## Volume
preferences.volume=虚拟磁盘
preferences.volume.type=卷类型(需重启)
preferences.volume.type=卷类型
preferences.volume.type.automatic=自动
preferences.volume.docsTooltip=打开文档以了解有关不同卷类型的更多信息
preferences.volume.fuseRestartRequired=Cryptomator 需要重新启动以应用更改
preferences.volume.tcp.port=TCP 端口
preferences.volume.supportedFeatures=选定的卷类型支持以下功能:
preferences.volume.feature.mountAuto=自动选择挂载点

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=顯示最小化按鈕
preferences.interface.showTrayIcon=顯示系統工作列圖示 (需重新啟動)
## Volume
preferences.volume=虛擬磁碟
preferences.volume.type=磁區類別(須重啟)
preferences.volume.type=磁區類
preferences.volume.type.automatic=自動
preferences.volume.docsTooltip=閱讀文檔以了解各加密空間類型。
preferences.volume.fuseRestartRequired=需要重新啟動 Cryptomator 以應用更改。
preferences.volume.tcp.port=TCP 埠
preferences.volume.supportedFeatures=所選擇的磁區空間類別支援下列功能:
preferences.volume.feature.mountAuto=自動選擇掛載路徑

View File

@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=顯示最小化按鈕
preferences.interface.showTrayIcon=顯示系統工作列圖示 (需要重新啟動)
## Volume
preferences.volume=虛擬磁碟
preferences.volume.type=磁區類別 (須重啟)
preferences.volume.type=磁區類
preferences.volume.type.automatic=自动
preferences.volume.docsTooltip=打開文檔以了解有關不同磁區類型更多信息。
preferences.volume.fuseRestartRequired=需要重新啟動 Cryptomator以套用變更。
preferences.volume.tcp.port=TCP 埠
preferences.volume.supportedFeatures=所選擇的磁區空間類別支援下列功能:
preferences.volume.feature.mountAuto=自動選擇掛載路徑