From b18f44eaf53cc406cf8fdd21cefce2107151d4d8 Mon Sep 17 00:00:00 2001 From: crschnick Date: Sun, 24 Nov 2024 14:29:08 +0000 Subject: [PATCH] Rework state and license checks --- .../java/io/xpipe/app/comp/store/OsLogoComp.java | 4 ++-- .../java/io/xpipe/app/resources/SystemIcons.java | 13 +++++-------- .../java/io/xpipe/app/update/AppDownloads.java | 1 + .../java/io/xpipe/app/util/OptionsBuilder.java | 4 ++-- .../main/java/io/xpipe/app/util/ScanAlert.java | 7 ++++--- .../app/util/SecretRetrievalStrategyHelper.java | 14 ++++++++------ .../java/io/xpipe/core/process/OsNameState.java | 6 ------ .../java/io/xpipe/core/process/ShellControl.java | 4 ++-- .../io/xpipe/core/process/ShellStoreState.java | 2 +- .../io/xpipe/core/process/StubShellControl.java | 5 +++++ .../java/io/xpipe/core/process/SystemState.java | 12 ++++++++++++ .../xpipe/core/process/WrapperShellControl.java | 8 ++++---- .../ext/base/action/RunScriptActionMenu.java | 15 ++++++++------- .../io/xpipe/ext/base/action/ScanStoreAction.java | 11 ++++++----- .../xpipe/ext/base/store/ShellStoreProvider.java | 5 +++-- lang/proc/strings/translations_da.properties | 6 +++--- lang/proc/strings/translations_de.properties | 6 +++--- lang/proc/strings/translations_en.properties | 9 ++++++--- lang/proc/strings/translations_es.properties | 6 +++--- lang/proc/strings/translations_fr.properties | 6 +++--- lang/proc/strings/translations_it.properties | 6 +++--- lang/proc/strings/translations_ja.properties | 6 +++--- lang/proc/strings/translations_nl.properties | 6 +++--- lang/proc/strings/translations_pt.properties | 6 +++--- lang/proc/strings/translations_ru.properties | 6 +++--- lang/proc/strings/translations_tr.properties | 6 +++--- lang/proc/strings/translations_zh.properties | 6 +++--- 27 files changed, 102 insertions(+), 84 deletions(-) delete mode 100644 core/src/main/java/io/xpipe/core/process/OsNameState.java create mode 100644 core/src/main/java/io/xpipe/core/process/SystemState.java diff --git a/app/src/main/java/io/xpipe/app/comp/store/OsLogoComp.java b/app/src/main/java/io/xpipe/app/comp/store/OsLogoComp.java index d0506bd13..08d6e7f53 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/OsLogoComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/OsLogoComp.java @@ -5,7 +5,7 @@ import io.xpipe.app.comp.base.PrettyImageHelper; import io.xpipe.app.comp.base.StackComp; import io.xpipe.app.resources.AppResources; import io.xpipe.app.util.BindingsHelper; -import io.xpipe.core.process.OsNameState; +import io.xpipe.core.process.SystemState; import io.xpipe.core.store.FileNames; import javafx.beans.binding.Bindings; @@ -43,7 +43,7 @@ public class OsLogoComp extends SimpleComp { } var ps = wrapper.getPersistentState().getValue(); - if (!(ps instanceof OsNameState ons)) { + if (!(ps instanceof SystemState ons)) { return null; } diff --git a/app/src/main/java/io/xpipe/app/resources/SystemIcons.java b/app/src/main/java/io/xpipe/app/resources/SystemIcons.java index da770c132..ca52e97bf 100644 --- a/app/src/main/java/io/xpipe/app/resources/SystemIcons.java +++ b/app/src/main/java/io/xpipe/app/resources/SystemIcons.java @@ -1,9 +1,6 @@ package io.xpipe.app.resources; -import io.xpipe.core.process.OsType; -import io.xpipe.core.process.ShellControl; -import io.xpipe.core.process.ShellDialects; -import io.xpipe.core.process.ShellStoreState; +import io.xpipe.core.process.*; import io.xpipe.core.store.DataStore; import io.xpipe.core.store.StatefulDataStore; @@ -23,16 +20,16 @@ public class SystemIcons { @Override public boolean isApplicable(DataStore store) { return store instanceof StatefulDataStore statefulDataStore - && statefulDataStore.getState() instanceof ShellStoreState shellStoreState - && shellStoreState.getShellDialect() == ShellDialects.OPNSENSE; + && statefulDataStore.getState() instanceof SystemState systemState + && systemState.getShellDialect() == ShellDialects.OPNSENSE; } }, new SystemIcon("pfsense", "pfsense") { @Override public boolean isApplicable(DataStore store) { return store instanceof StatefulDataStore statefulDataStore - && statefulDataStore.getState() instanceof ShellStoreState shellStoreState - && shellStoreState.getShellDialect() == ShellDialects.PFSENSE; + && statefulDataStore.getState() instanceof SystemState systemState + && systemState.getShellDialect() == ShellDialects.PFSENSE; } }, new ContainerAutoSystemIcon("file-browser", "file browser", name -> name.contains("filebrowser")), diff --git a/app/src/main/java/io/xpipe/app/update/AppDownloads.java b/app/src/main/java/io/xpipe/app/update/AppDownloads.java index 61ad39c94..24eba5621 100644 --- a/app/src/main/java/io/xpipe/app/update/AppDownloads.java +++ b/app/src/main/java/io/xpipe/app/update/AppDownloads.java @@ -129,6 +129,7 @@ public class AppDownloads { req.put("version", AppProperties.get().getVersion()); req.put("first", first); req.put("license", LicenseProvider.get().getLicenseId()); + req.put("dist", XPipeDistributionType.get().getId()); var url = URI.create("https://api.xpipe.io/version"); var builder = HttpRequest.newBuilder(); diff --git a/app/src/main/java/io/xpipe/app/util/OptionsBuilder.java b/app/src/main/java/io/xpipe/app/util/OptionsBuilder.java index 4fc51e949..e1451da27 100644 --- a/app/src/main/java/io/xpipe/app/util/OptionsBuilder.java +++ b/app/src/main/java/io/xpipe/app/util/OptionsBuilder.java @@ -53,10 +53,10 @@ public class OptionsBuilder { return new ChainedValidator(allValidators); } - public OptionsBuilder choice(IntegerProperty selectedIndex, Map options) { + public OptionsBuilder choice(IntegerProperty selectedIndex, Map, OptionsBuilder> options) { var list = options.entrySet().stream() .map(e -> new ChoicePaneComp.Entry( - AppI18n.observable(e.getKey()), + e.getKey(), e.getValue() != null ? e.getValue().buildComp() : Comp.empty())) .toList(); var validatorList = options.values().stream() diff --git a/app/src/main/java/io/xpipe/app/util/ScanAlert.java b/app/src/main/java/io/xpipe/app/util/ScanAlert.java index ba316969d..090175924 100644 --- a/app/src/main/java/io/xpipe/app/util/ScanAlert.java +++ b/app/src/main/java/io/xpipe/app/util/ScanAlert.java @@ -8,6 +8,7 @@ import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.core.process.ShellControl; import io.xpipe.core.process.ShellStoreState; import io.xpipe.core.process.ShellTtyState; +import io.xpipe.core.process.SystemState; import java.util.ArrayList; import java.util.List; @@ -19,9 +20,9 @@ public class ScanAlert { ThreadHelper.runAsync(() -> { var showForCon = entry == null || (entry.getStore() instanceof ShellStore - && (!(entry.getStorePersistentState() instanceof ShellStoreState shellStoreState) - || shellStoreState.getTtyState() == null - || shellStoreState.getTtyState() == ShellTtyState.NONE)); + && (!(entry.getStorePersistentState() instanceof SystemState systemState) + || systemState.getTtyState() == null + || systemState.getTtyState() == ShellTtyState.NONE)); if (showForCon) { showForShellStore(entry); } diff --git a/app/src/main/java/io/xpipe/app/util/SecretRetrievalStrategyHelper.java b/app/src/main/java/io/xpipe/app/util/SecretRetrievalStrategyHelper.java index 082ccc649..ad969bc6c 100644 --- a/app/src/main/java/io/xpipe/app/util/SecretRetrievalStrategyHelper.java +++ b/app/src/main/java/io/xpipe/app/util/SecretRetrievalStrategyHelper.java @@ -5,6 +5,7 @@ import io.xpipe.app.comp.base.HorizontalComp; import io.xpipe.app.comp.base.SecretFieldComp; import io.xpipe.app.comp.base.TextFieldComp; import io.xpipe.app.core.App; +import io.xpipe.app.core.AppI18n; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.storage.DataStoreSecret; @@ -12,6 +13,7 @@ import javafx.beans.property.Property; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.value.ObservableValue; import org.kordamp.ikonli.javafx.FontIcon; import java.util.Arrays; @@ -88,14 +90,14 @@ public class SecretRetrievalStrategyHelper { new SimpleObjectProperty<>(strat instanceof SecretRetrievalStrategy.PasswordManager i ? i : null); var customCommand = new SimpleObjectProperty<>(strat instanceof SecretRetrievalStrategy.CustomCommand i ? i : null); - var map = new LinkedHashMap(); + var map = new LinkedHashMap, OptionsBuilder>(); if (allowNone) { - map.put("app.none", new OptionsBuilder()); + map.put(AppI18n.observable("app.none"), new OptionsBuilder()); } - map.put("app.password", inPlace(inPlace)); - map.put("app.passwordManager", passwordManager(passwordManager)); - map.put("app.customCommand", customCommand(customCommand)); - map.put("app.prompt", new OptionsBuilder()); + map.put(AppI18n.observable("app.password"), inPlace(inPlace)); + map.put(AppI18n.observable("app.passwordManager"), passwordManager(passwordManager)); + map.put(AppI18n.observable("app.customCommand"), customCommand(customCommand)); + map.put(AppI18n.observable("app.prompt"), new OptionsBuilder()); int offset = allowNone ? 0 : -1; var selected = new SimpleIntegerProperty( diff --git a/core/src/main/java/io/xpipe/core/process/OsNameState.java b/core/src/main/java/io/xpipe/core/process/OsNameState.java deleted file mode 100644 index 8180da8d2..000000000 --- a/core/src/main/java/io/xpipe/core/process/OsNameState.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.xpipe.core.process; - -public interface OsNameState { - - String getOsName(); -} diff --git a/core/src/main/java/io/xpipe/core/process/ShellControl.java b/core/src/main/java/io/xpipe/core/process/ShellControl.java index 7cf31819c..fd15ee920 100644 --- a/core/src/main/java/io/xpipe/core/process/ShellControl.java +++ b/core/src/main/java/io/xpipe/core/process/ShellControl.java @@ -56,10 +56,10 @@ public interface ShellControl extends ProcessControl { String getOsName(); - boolean isLicenseCheck(); - ReentrantLock getLock(); + void requireLicensedFeature(String id); + ShellDialect getOriginalShellDialect(); void setOriginalShellDialect(ShellDialect dialect); diff --git a/core/src/main/java/io/xpipe/core/process/ShellStoreState.java b/core/src/main/java/io/xpipe/core/process/ShellStoreState.java index 4f2d1360f..e8da9dd31 100644 --- a/core/src/main/java/io/xpipe/core/process/ShellStoreState.java +++ b/core/src/main/java/io/xpipe/core/process/ShellStoreState.java @@ -14,7 +14,7 @@ import lombok.extern.jackson.Jacksonized; @EqualsAndHashCode(callSuper = true) @SuperBuilder(toBuilder = true) @Jacksonized -public class ShellStoreState extends DataStoreState implements OsNameState { +public class ShellStoreState extends DataStoreState implements SystemState { OsType.Any osType; String osName; diff --git a/core/src/main/java/io/xpipe/core/process/StubShellControl.java b/core/src/main/java/io/xpipe/core/process/StubShellControl.java index bcbf2fb69..c87743b96 100644 --- a/core/src/main/java/io/xpipe/core/process/StubShellControl.java +++ b/core/src/main/java/io/xpipe/core/process/StubShellControl.java @@ -6,6 +6,11 @@ public class StubShellControl extends WrapperShellControl { super(parent); } + @Override + public boolean canHaveSubshells() { + return parent.canHaveSubshells(); + } + @Override public void close() throws Exception {} } diff --git a/core/src/main/java/io/xpipe/core/process/SystemState.java b/core/src/main/java/io/xpipe/core/process/SystemState.java new file mode 100644 index 000000000..613726abb --- /dev/null +++ b/core/src/main/java/io/xpipe/core/process/SystemState.java @@ -0,0 +1,12 @@ +package io.xpipe.core.process; + +public interface SystemState { + + OsType getOsType(); + + String getOsName(); + + ShellDialect getShellDialect(); + + ShellTtyState getTtyState(); +} diff --git a/core/src/main/java/io/xpipe/core/process/WrapperShellControl.java b/core/src/main/java/io/xpipe/core/process/WrapperShellControl.java index d6baf5e3b..9b962135b 100644 --- a/core/src/main/java/io/xpipe/core/process/WrapperShellControl.java +++ b/core/src/main/java/io/xpipe/core/process/WrapperShellControl.java @@ -112,13 +112,13 @@ public class WrapperShellControl implements ShellControl { } @Override - public boolean isLicenseCheck() { - return parent.isLicenseCheck(); + public ReentrantLock getLock() { + return parent.getLock(); } @Override - public ReentrantLock getLock() { - return parent.getLock(); + public void requireLicensedFeature(String id) { + parent.requireLicensedFeature(id); } @Override diff --git a/ext/base/src/main/java/io/xpipe/ext/base/action/RunScriptActionMenu.java b/ext/base/src/main/java/io/xpipe/ext/base/action/RunScriptActionMenu.java index a3d560ebb..1e4a7dc0b 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/action/RunScriptActionMenu.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/action/RunScriptActionMenu.java @@ -10,6 +10,7 @@ import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.core.process.ShellStoreState; import io.xpipe.core.process.ShellTtyState; +import io.xpipe.core.process.SystemState; import io.xpipe.ext.base.script.ScriptHierarchy; import javafx.beans.property.SimpleStringProperty; @@ -259,14 +260,14 @@ public class RunScriptActionMenu implements ActionProvider { @Override public boolean isApplicable(DataStoreEntryRef o) { var state = o.get().getStorePersistentState(); - if (state instanceof ShellStoreState shellStoreState) { - return (shellStoreState.getShellDialect() == null - || shellStoreState + if (state instanceof SystemState systemState) { + return (systemState.getShellDialect() == null + || systemState .getShellDialect() .getDumbMode() .supportsAnyPossibleInteraction()) - && (shellStoreState.getTtyState() == null - || shellStoreState.getTtyState() == ShellTtyState.NONE); + && (systemState.getTtyState() == null + || systemState.getTtyState() == ShellTtyState.NONE); } else { return false; } @@ -276,7 +277,7 @@ public class RunScriptActionMenu implements ActionProvider { public List getChildren(DataStoreEntryRef store) { var replacement = ProcessControlProvider.get().replace(store); var state = replacement.getEntry().getStorePersistentState(); - if (!(state instanceof ShellStoreState shellStoreState) || shellStoreState.getShellDialect() == null) { + if (!(state instanceof SystemState systemState) || systemState.getShellDialect() == null) { return List.of(new NoScriptsActionProvider()); } @@ -285,7 +286,7 @@ public class RunScriptActionMenu implements ActionProvider { return false; } - if (!ref.getStore().isCompatible(shellStoreState.getShellDialect())) { + if (!ref.getStore().isCompatible(systemState.getShellDialect())) { return false; } diff --git a/ext/base/src/main/java/io/xpipe/ext/base/action/ScanStoreAction.java b/ext/base/src/main/java/io/xpipe/ext/base/action/ScanStoreAction.java index a589edb7a..99e8e7558 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/action/ScanStoreAction.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/action/ScanStoreAction.java @@ -9,6 +9,7 @@ import io.xpipe.app.util.ScanAlert; import io.xpipe.core.process.ShellStoreState; import io.xpipe.core.process.ShellTtyState; +import io.xpipe.core.process.SystemState; import javafx.beans.value.ObservableValue; import lombok.Value; @@ -37,14 +38,14 @@ public class ScanStoreAction implements ActionProvider { @Override public boolean isApplicable(DataStoreEntryRef o) { var state = o.get().getStorePersistentState(); - if (state instanceof ShellStoreState shellStoreState) { - return (shellStoreState.getShellDialect() == null - || shellStoreState + if (state instanceof SystemState systemState) { + return (systemState.getShellDialect() == null + || systemState .getShellDialect() .getDumbMode() .supportsAnyPossibleInteraction()) - && (shellStoreState.getTtyState() == null - || shellStoreState.getTtyState() == ShellTtyState.NONE); + && (systemState.getTtyState() == null + || systemState.getTtyState() == ShellTtyState.NONE); } else { return true; } diff --git a/ext/base/src/main/java/io/xpipe/ext/base/store/ShellStoreProvider.java b/ext/base/src/main/java/io/xpipe/ext/base/store/ShellStoreProvider.java index 24fc346fb..8f2497808 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/store/ShellStoreProvider.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/store/ShellStoreProvider.java @@ -13,6 +13,7 @@ import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.app.terminal.TerminalLauncher; import io.xpipe.app.util.ShellStoreFormat; import io.xpipe.core.process.ShellStoreState; +import io.xpipe.core.process.SystemState; import io.xpipe.ext.base.script.ScriptStore; import javafx.beans.property.BooleanProperty; @@ -29,8 +30,8 @@ public interface ShellStoreProvider extends DataStoreProvider { ShellStore store = replacement.getStore().asNeeded(); var control = ScriptStore.controlWithDefaultScripts(store.tempControl()); control.onInit(sc -> { - if (entry.getStorePersistentState() instanceof ShellStoreState shellStoreState - && shellStoreState.getShellDialect() == null) { + if (entry.getStorePersistentState() instanceof SystemState systemState + && systemState.getShellDialect() == null) { var found = SystemIcons.detectForSystem(sc); if (found.isPresent()) { entry.setIcon(found.get().getIconName(), false); diff --git a/lang/proc/strings/translations_da.properties b/lang/proc/strings/translations_da.properties index 8db484d3a..95de006e1 100644 --- a/lang/proc/strings/translations_da.properties +++ b/lang/proc/strings/translations_da.properties @@ -25,11 +25,11 @@ containerName=Navn på container #custom containerNameDescription=Det brugerdefinerede container navn vm=Virtuel maskine -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=Den tilknyttede konfigurationsfil. vmwareScan=VMware desktop hypervisors library=Bibliotek -customPkcs11Library=Brugerdefineret PKCS#11-bibliotek (Pro) +customPkcs11Library=Brugerdefineret PKCS#11-bibliotek vmwareMachine.displayName=VMware Virtual Machine vmwareMachine.displayDescription=Opret forbindelse til en virtuel maskine via SSH vmwareInstallation.displayName=Installation af VMware desktop hypervisor @@ -285,7 +285,7 @@ configLocation=Konfig-placering configLocationDescription=Filstien til konfigurationsfilen #custom pageant=Pageant agent -gpgAgent=GPG Agent (Pro) +gpgAgent=GPG-agent gateway=Gateway #custom gatewayDescription=Den gateway, der skal bruges når der oprettes forbindelse. diff --git a/lang/proc/strings/translations_de.properties b/lang/proc/strings/translations_de.properties index 9ffbfc10c..85ac437df 100644 --- a/lang/proc/strings/translations_de.properties +++ b/lang/proc/strings/translations_de.properties @@ -22,11 +22,11 @@ imageNameDescription=Die zu verwendende Kennung des Containerbildes containerName=Container-Name containerNameDescription=Der optionale benutzerdefinierte Containername vm=Virtuelle Maschine -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=Die zugehörige Konfigurationsdatei. vmwareScan=VMware Desktop-Hypervisoren library=Bibliothek -customPkcs11Library=Benutzerdefinierte PKCS#11-Bibliothek (Pro) +customPkcs11Library=Benutzerdefinierte PKCS#11-Bibliothek vmwareMachine.displayName=VMware Virtuelle Maschine vmwareMachine.displayDescription=Verbindung zu einer virtuellen Maschine über SSH vmwareInstallation.displayName=VMware Desktop Hypervisor Installation @@ -266,7 +266,7 @@ configHostDescription=Der Host, auf dem sich die Konfiguration befindet configLocation=Config-Speicherort configLocationDescription=Der Dateipfad der Konfigurationsdatei pageant=Pageant -gpgAgent=GPG Agent (Pro) +gpgAgent=GPG-Agent gateway=Gateway gatewayDescription=Das optionale Gateway, das bei der Verbindung verwendet wird. connectionInformation=Verbindungsinformationen diff --git a/lang/proc/strings/translations_en.properties b/lang/proc/strings/translations_en.properties index e0db51e08..dfb694c59 100644 --- a/lang/proc/strings/translations_en.properties +++ b/lang/proc/strings/translations_en.properties @@ -21,11 +21,13 @@ imageNameDescription=The container image identifier to use containerName=Container name containerNameDescription=The optional custom container name vm=Virtual machine -yubikeyPiv=Yubikey PIV (Pro) +#force +yubikeyPiv=Yubikey PIV vmDescription=The associated configuration file. vmwareScan=VMware desktop hypervisors library=Library -customPkcs11Library=Custom PKCS#11 library (Pro) +#force +customPkcs11Library=Custom PKCS#11 library vmwareMachine.displayName=VMware Virtual Machine vmwareMachine.displayDescription=Connect to a virtual machine via SSH vmwareInstallation.displayName=VMware desktop hypervisor installation @@ -264,7 +266,8 @@ configHostDescription=The host on which the config is located on configLocation=Config location configLocationDescription=The file path of the config file pageant=Pageant -gpgAgent=GPG Agent (Pro) +#force +gpgAgent=GPG Agent gateway=Gateway gatewayDescription=The optional gateway to use when connecting. connectionInformation=Connection information diff --git a/lang/proc/strings/translations_es.properties b/lang/proc/strings/translations_es.properties index 334405f09..2a1722691 100644 --- a/lang/proc/strings/translations_es.properties +++ b/lang/proc/strings/translations_es.properties @@ -21,11 +21,11 @@ imageNameDescription=El identificador de la imagen contenedora a utilizar containerName=Nombre del contenedor containerNameDescription=El nombre opcional del contenedor personalizado vm=Máquina virtual -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=El archivo de configuración asociado. vmwareScan=Hipervisores de escritorio VMware library=Biblioteca -customPkcs11Library=Biblioteca PKCS#11 personalizada (Pro) +customPkcs11Library=Biblioteca PKCS#11 personalizada vmwareMachine.displayName=Máquina virtual VMware vmwareMachine.displayDescription=Conectarse a una máquina virtual mediante SSH vmwareInstallation.displayName=Instalación del hipervisor de escritorio VMware @@ -263,7 +263,7 @@ configHostDescription=El host en el que se encuentra la configuración configLocation=Ubicación de la configuración configLocationDescription=La ruta del archivo de configuración pageant=Concurso -gpgAgent=Agente GPG (Pro) +gpgAgent=Agente GPG gateway=Pasarela gatewayDescription=La puerta de enlace opcional que se utilizará al conectarse. connectionInformation=Información de conexión diff --git a/lang/proc/strings/translations_fr.properties b/lang/proc/strings/translations_fr.properties index d0e7f2823..879c1ece1 100644 --- a/lang/proc/strings/translations_fr.properties +++ b/lang/proc/strings/translations_fr.properties @@ -21,11 +21,11 @@ imageNameDescription=L'identifiant de l'image du conteneur à utiliser containerName=Nom du conteneur containerNameDescription=Le nom facultatif du conteneur personnalisé vm=Machine virtuelle -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=Le fichier de configuration associé. vmwareScan=Hyperviseurs de bureau VMware library=Bibliothèque -customPkcs11Library=Bibliothèque PKCS#11 personnalisée (Pro) +customPkcs11Library=Bibliothèque PKCS#11 personnalisée vmwareMachine.displayName=Machine virtuelle VMware vmwareMachine.displayDescription=Se connecter à une machine virtuelle via SSH vmwareInstallation.displayName=Installation de l'hyperviseur de bureau VMware @@ -263,7 +263,7 @@ configHostDescription=L'hôte sur lequel se trouve le config configLocation=Emplacement de la configuration configLocationDescription=Le chemin d'accès au fichier de configuration pageant=Pageant -gpgAgent=Agent GPG (Pro) +gpgAgent=Agent GPG gateway=Passerelle gatewayDescription=La passerelle optionnelle à utiliser lors de la connexion. connectionInformation=Informations sur la connexion diff --git a/lang/proc/strings/translations_it.properties b/lang/proc/strings/translations_it.properties index 210258f70..03c2dbbad 100644 --- a/lang/proc/strings/translations_it.properties +++ b/lang/proc/strings/translations_it.properties @@ -21,11 +21,11 @@ imageNameDescription=L'identificatore dell'immagine del contenitore da utilizzar containerName=Nome del contenitore containerNameDescription=Il nome opzionale del contenitore personalizzato vm=Macchina virtuale -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=Il file di configurazione associato. vmwareScan=Ipervisori desktop VMware library=Biblioteca -customPkcs11Library=Libreria PKCS#11 personalizzata (Pro) +customPkcs11Library=Libreria PKCS#11 personalizzata vmwareMachine.displayName=Macchina virtuale VMware vmwareMachine.displayDescription=Connettersi a una macchina virtuale tramite SSH vmwareInstallation.displayName=Installazione dell'hypervisor desktop VMware @@ -263,7 +263,7 @@ configHostDescription=L'host su cui si trova la configurazione configLocation=Posizione della configurazione configLocationDescription=Il percorso del file di configurazione pageant=Pagina -gpgAgent=Agente GPG (Pro) +gpgAgent=Agente GPG gateway=Gateway gatewayDescription=Il gateway opzionale da utilizzare per la connessione. connectionInformation=Informazioni sulla connessione diff --git a/lang/proc/strings/translations_ja.properties b/lang/proc/strings/translations_ja.properties index ffa621edf..9b74b67db 100644 --- a/lang/proc/strings/translations_ja.properties +++ b/lang/proc/strings/translations_ja.properties @@ -21,11 +21,11 @@ imageNameDescription=使用するコンテナ画像識別子 containerName=コンテナ名 containerNameDescription=オプションのカスタムコンテナ名 vm=仮想マシン -yubikeyPiv=ユビキーPIV(プロ) +yubikeyPiv=ユビキーPIV vmDescription=関連する設定ファイル。 vmwareScan=VMwareデスクトップハイパーバイザー library=ライブラリ -customPkcs11Library=カスタムPKCS#11ライブラリ(Pro) +customPkcs11Library=カスタムPKCS#11ライブラリ vmwareMachine.displayName=VMware仮想マシン vmwareMachine.displayDescription=SSH経由で仮想マシンに接続する vmwareInstallation.displayName=VMwareデスクトップハイパーバイザーのインストール @@ -263,7 +263,7 @@ configHostDescription=コンフィグが置かれているホスト configLocation=設定場所 configLocationDescription=コンフィグファイルのファイルパス pageant=ページェント -gpgAgent=GPGエージェント(Pro) +gpgAgent=GPGエージェント gateway=ゲートウェイ gatewayDescription=接続時に使用するオプションのゲートウェイ。 connectionInformation=接続情報 diff --git a/lang/proc/strings/translations_nl.properties b/lang/proc/strings/translations_nl.properties index 5a094d898..9d2be2f60 100644 --- a/lang/proc/strings/translations_nl.properties +++ b/lang/proc/strings/translations_nl.properties @@ -21,11 +21,11 @@ imageNameDescription=De te gebruiken container image identifier containerName=Containernaam containerNameDescription=De optionele aangepaste containernaam vm=Virtuele machine -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=Het bijbehorende configuratiebestand. vmwareScan=VMware desktop hypervisors library=Bibliotheek -customPkcs11Library=Aangepaste PKCS#11-bibliotheek (Pro) +customPkcs11Library=Aangepaste PKCS#11-bibliotheek vmwareMachine.displayName=VMware virtuele machine vmwareMachine.displayDescription=Verbinding maken met een virtuele machine via SSH vmwareInstallation.displayName=VMware desktop hypervisor installatie @@ -263,7 +263,7 @@ configHostDescription=De host waarop de config zich bevindt configLocation=Configuratie locatie configLocationDescription=Het bestandspad van het configuratiebestand pageant=Verkiezing -gpgAgent=GPG Agent (Pro) +gpgAgent=GPG-agent gateway=Gateway gatewayDescription=De optionele gateway om te gebruiken bij het verbinden. connectionInformation=Verbindingsinformatie diff --git a/lang/proc/strings/translations_pt.properties b/lang/proc/strings/translations_pt.properties index 6218d9aa9..7716430ed 100644 --- a/lang/proc/strings/translations_pt.properties +++ b/lang/proc/strings/translations_pt.properties @@ -21,11 +21,11 @@ imageNameDescription=O identificador de imagem de contentor a utilizar containerName=Nome do contentor containerNameDescription=O nome opcional do contentor personalizado vm=Máquina virtual -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=O ficheiro de configuração associado. vmwareScan=Hipervisores de desktop VMware library=Biblioteca -customPkcs11Library=Biblioteca PKCS#11 personalizada (Pro) +customPkcs11Library=Biblioteca PKCS#11 personalizada vmwareMachine.displayName=Máquina virtual VMware vmwareMachine.displayDescription=Liga-te a uma máquina virtual através de SSH vmwareInstallation.displayName=Instalação do hipervisor de ambiente de trabalho VMware @@ -263,7 +263,7 @@ configHostDescription=O host no qual a configuração está localizada configLocation=Local de configuração configLocationDescription=O caminho do ficheiro de configuração pageant=Concurso -gpgAgent=Agente GPG (Pro) +gpgAgent=Agente GPG gateway=Gateway gatewayDescription=O gateway opcional a utilizar quando estabelece a ligação. connectionInformation=Informação de ligação diff --git a/lang/proc/strings/translations_ru.properties b/lang/proc/strings/translations_ru.properties index 522494c14..9cfd37f85 100644 --- a/lang/proc/strings/translations_ru.properties +++ b/lang/proc/strings/translations_ru.properties @@ -21,11 +21,11 @@ imageNameDescription=Идентификатор образа контейнер containerName=Название контейнера containerNameDescription=Необязательное пользовательское название контейнера vm=Виртуальная машина -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=Связанный с ним файл конфигурации. vmwareScan=Гипервизоры VMware для настольных компьютеров library=Библиотека -customPkcs11Library=Пользовательская библиотека PKCS#11 (Pro) +customPkcs11Library=Пользовательская библиотека PKCS#11 vmwareMachine.displayName=Виртуальная машина VMware vmwareMachine.displayDescription=Подключение к виртуальной машине через SSH vmwareInstallation.displayName=Установка гипервизора VMware для настольных компьютеров @@ -263,7 +263,7 @@ configHostDescription=Хост, на котором расположен кон configLocation=Расположение конфигурации configLocationDescription=Путь к файлу конфигурации pageant=Pageant -gpgAgent=GPG Agent (Pro) +gpgAgent=Агент GPG gateway=Шлюз gatewayDescription=Дополнительный шлюз, который нужно использовать при подключении. connectionInformation=Информация о подключении diff --git a/lang/proc/strings/translations_tr.properties b/lang/proc/strings/translations_tr.properties index df1226266..81495e167 100644 --- a/lang/proc/strings/translations_tr.properties +++ b/lang/proc/strings/translations_tr.properties @@ -21,11 +21,11 @@ imageNameDescription=Kullanılacak konteyner imaj tanımlayıcısı containerName=Konteyner adı containerNameDescription=İsteğe bağlı özel konteyner adı vm=Sanal makine -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=İlişkili yapılandırma dosyası. vmwareScan=VMware masaüstü hipervizörleri library=Kütüphane -customPkcs11Library=Özel PKCS#11 kütüphanesi (Pro) +customPkcs11Library=Özel PKCS#11 kütüphanesi vmwareMachine.displayName=VMware Sanal Makinesi vmwareMachine.displayDescription=SSH aracılığıyla bir sanal makineye bağlanma vmwareInstallation.displayName=VMware masaüstü hipervizör kurulumu @@ -263,7 +263,7 @@ configHostDescription=Yapılandırmanın üzerinde bulunduğu ana bilgisayar configLocation=Konfigürasyon konumu configLocationDescription=Yapılandırma dosyasının dosya yolu pageant=Pageant -gpgAgent=GPG Agent (Pro) +gpgAgent=GPG Temsilcisi gateway=Ağ Geçidi gatewayDescription=Bağlanırken kullanılacak isteğe bağlı ağ geçidi. connectionInformation=Bağlantı bilgileri diff --git a/lang/proc/strings/translations_zh.properties b/lang/proc/strings/translations_zh.properties index 626b071d5..9ed47fdb3 100644 --- a/lang/proc/strings/translations_zh.properties +++ b/lang/proc/strings/translations_zh.properties @@ -21,11 +21,11 @@ imageNameDescription=要使用的容器图像标识符 containerName=容器名称 containerNameDescription=可选的自定义容器名称 vm=虚拟机 -yubikeyPiv=Yubikey PIV (Pro) +yubikeyPiv=Yubikey PIV vmDescription=相关的配置文件。 vmwareScan=VMware 桌面管理程序 library=图书馆 -customPkcs11Library=自定义 PKCS#11 库(专业版) +customPkcs11Library=自定义 PKCS#11 库 vmwareMachine.displayName=VMware 虚拟机 vmwareMachine.displayDescription=通过 SSH 连接虚拟机 vmwareInstallation.displayName=安装 VMware 桌面管理程序 @@ -263,7 +263,7 @@ configHostDescription=配置所在的主机 configLocation=配置位置 configLocationDescription=配置文件的文件路径 pageant=页面 -gpgAgent=GPG 代理(专业版) +gpgAgent=GPG 代理 gateway=网关 gatewayDescription=连接时使用的可选网关。 connectionInformation=连接信息