From 20c6bc4c366b57386129a007f161d2e78a2ddd2a Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Thu, 4 Aug 2022 13:46:36 +0200 Subject: [PATCH] Add support for i18n using resource bundles --- .../src/main/java/pgp/cert_d/cli/PGPCertDCli.java | 3 +-- .../main/java/pgp/cert_d/cli/commands/Export.java | 2 +- .../src/main/java/pgp/cert_d/cli/commands/Get.java | 5 ++--- .../main/java/pgp/cert_d/cli/commands/Import.java | 2 +- .../main/java/pgp/cert_d/cli/commands/Insert.java | 2 +- .../main/java/pgp/cert_d/cli/commands/Setup.java | 5 ++--- .../src/main/resources/msg_export.properties | 11 +++++++++++ .../src/main/resources/msg_export_de.properties | 11 +++++++++++ .../src/main/resources/msg_get.properties | 12 ++++++++++++ .../src/main/resources/msg_get_de.properties | 12 ++++++++++++ .../src/main/resources/msg_import.properties | 11 +++++++++++ .../src/main/resources/msg_import_de.properties | 11 +++++++++++ .../src/main/resources/msg_insert.properties | 11 +++++++++++ .../src/main/resources/msg_insert_de.properties | 11 +++++++++++ .../src/main/resources/msg_pgp-cert-d.properties | 11 +++++++++++ .../src/main/resources/msg_pgp-cert-d_de.properties | 11 +++++++++++ .../src/main/resources/msg_setup.properties | 13 +++++++++++++ .../src/main/resources/msg_setup_de.properties | 13 +++++++++++++ 18 files changed, 146 insertions(+), 11 deletions(-) create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_export.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_export_de.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_get.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_get_de.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_import.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_import_de.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_insert.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_insert_de.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_pgp-cert-d.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_pgp-cert-d_de.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_setup.properties create mode 100644 pgpainless-cert-d-cli/src/main/resources/msg_setup_de.properties diff --git a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/PGPCertDCli.java b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/PGPCertDCli.java index 4c10cd2..e87944e 100644 --- a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/PGPCertDCli.java +++ b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/PGPCertDCli.java @@ -26,7 +26,7 @@ import java.sql.SQLException; @CommandLine.Command( name = "certificate-store", - description = "Store and manage public OpenPGP certificates", + resourceBundle = "msg_pgp-cert-d", subcommands = { CommandLine.HelpCommand.class, Export.class, @@ -39,7 +39,6 @@ import java.sql.SQLException; public class PGPCertDCli { @CommandLine.Option(names = {"-s", "--store"}, paramLabel = "DIRECTORY", - description = "Overwrite the default certificate directory path", scope = CommandLine.ScopeType.INHERIT) File baseDirectory; diff --git a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Export.java b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Export.java index 4e61bc2..555d169 100644 --- a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Export.java +++ b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Export.java @@ -16,7 +16,7 @@ import java.io.InputStream; import java.util.Iterator; @CommandLine.Command(name = "export", - description = "Export all certificates in the store to Standard Output") + resourceBundle = "msg_export") public class Export implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(Get.class); diff --git a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Get.java b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Get.java index bbcbe0d..861790a 100644 --- a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Get.java +++ b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Get.java @@ -16,15 +16,14 @@ import pgp.certificate_store.exception.BadNameException; import picocli.CommandLine; @CommandLine.Command(name = "get", - description = "Retrieve certificates from the store") + resourceBundle = "msg_get") public class Get implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(Get.class); @CommandLine.Parameters( paramLabel = "IDENTIFIER", - arity = "1", - description = "Certificate identifier (fingerprint or special name)" + arity = "1" ) String identifer; diff --git a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Import.java b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Import.java index 9169963..80b19d9 100644 --- a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Import.java +++ b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Import.java @@ -20,7 +20,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; @CommandLine.Command(name = "import", - description = "Import certificates into the store from Standard Input") + resourceBundle = "msg_import") public class Import implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(Import.class); diff --git a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Insert.java b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Insert.java index ad76bb7..437003d 100644 --- a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Insert.java +++ b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Insert.java @@ -15,7 +15,7 @@ import picocli.CommandLine; import java.io.IOException; @CommandLine.Command(name = "insert", - description = "Insert or update a certificate") + resourceBundle = "msg_insert") public class Insert implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(Insert.class); diff --git a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Setup.java b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Setup.java index 854d4ea..bb94de7 100644 --- a/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Setup.java +++ b/pgpainless-cert-d-cli/src/main/java/pgp/cert_d/cli/commands/Setup.java @@ -27,7 +27,7 @@ import java.security.InvalidAlgorithmParameterException; import java.security.NoSuchAlgorithmException; @CommandLine.Command(name = "setup", - description = "Setup a new certificate directory") + resourceBundle = "msg_setup") public class Setup implements Runnable { public static final Logger LOGGER = LoggerFactory.getLogger(Setup.class); @@ -37,8 +37,7 @@ public class Setup implements Runnable { static class Exclusive { @CommandLine.Option(names = "--with-password", - paramLabel = "PASSWORD", - description = "Ask for a password for the trust-root key") + paramLabel = "PASSWORD") String password; @CommandLine.Option(names = "--import-from-stdin", diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_export.properties b/pgpainless-cert-d-cli/src/main/resources/msg_export.properties new file mode 100644 index 0000000..8d6b59a --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_export.properties @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Export all certificates in the store to Standard Output + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Usage:\u0020 +usage.commandListHeading = %nCommands:%n +usage.optionListHeading = %nOptions:%n +usage.footerHeading=Powered by picocli%n +store=Overwrite the default certificate directory path diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_export_de.properties b/pgpainless-cert-d-cli/src/main/resources/msg_export_de.properties new file mode 100644 index 0000000..2a7a2e1 --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_export_de.properties @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Exportiere alle gespeicherten Zertifikate zur Standardausgabe + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Aufruf:\u0020 +usage.commandListHeading=%nBefehle:%n +usage.optionListHeading = %nOptionen:%n +usage.footerHeading=Powered by Picocli%n +store=Überschreibe den Standardpfad des Zertifikatsverzeichnisses diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_get.properties b/pgpainless-cert-d-cli/src/main/resources/msg_get.properties new file mode 100644 index 0000000..5e04944 --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_get.properties @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Retrieve certificates from the store +IDENTIFIER[0]=Certificate identifier (fingerprint or special name) + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Usage:\u0020 +usage.commandListHeading = %nCommands:%n +usage.optionListHeading = %nOptions:%n +usage.footerHeading=Powered by picocli%n +store=Overwrite the default certificate directory path diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_get_de.properties b/pgpainless-cert-d-cli/src/main/resources/msg_get_de.properties new file mode 100644 index 0000000..36fd12b --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_get_de.properties @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Frage Zertifikate aus dem Speicher ab +IDENTIFIER[0]=Zertifikatskennung (Fingerabdruck oder Spezialname) + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Aufruf:\u0020 +usage.commandListHeading=%nBefehle:%n +usage.optionListHeading = %nOptionen:%n +usage.footerHeading=Powered by Picocli%n +store=Überschreibe den Standardpfad des Zertifikatsverzeichnisses diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_import.properties b/pgpainless-cert-d-cli/src/main/resources/msg_import.properties new file mode 100644 index 0000000..329a392 --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_import.properties @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Import certificates into the store from Standard Input + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Usage:\u0020 +usage.commandListHeading = %nCommands:%n +usage.optionListHeading = %nOptions:%n +usage.footerHeading=Powered by picocli%n +store=Overwrite the default certificate directory path diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_import_de.properties b/pgpainless-cert-d-cli/src/main/resources/msg_import_de.properties new file mode 100644 index 0000000..82c0016 --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_import_de.properties @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Importiere Zertifikate von der Standardeingabe in den Speicher + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Aufruf:\u0020 +usage.commandListHeading=%nBefehle:%n +usage.optionListHeading = %nOptionen:%n +usage.footerHeading=Powered by Picocli%n +store=Überschreibe den Standardpfad des Zertifikatsverzeichnisses diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_insert.properties b/pgpainless-cert-d-cli/src/main/resources/msg_insert.properties new file mode 100644 index 0000000..c1b81f8 --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_insert.properties @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Insert or update a certificate + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Usage:\u0020 +usage.commandListHeading = %nCommands:%n +usage.optionListHeading = %nOptions:%n +usage.footerHeading=Powered by picocli%n +store=Overwrite the default certificate directory path diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_insert_de.properties b/pgpainless-cert-d-cli/src/main/resources/msg_insert_de.properties new file mode 100644 index 0000000..1f479a2 --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_insert_de.properties @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Aktualisiere oder importiere ein Zertifikat + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Aufruf:\u0020 +usage.commandListHeading=%nBefehle:%n +usage.optionListHeading = %nOptionen:%n +usage.footerHeading=Powered by Picocli%n +store=Überschreibe den Standardpfad des Zertifikatsverzeichnisses diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_pgp-cert-d.properties b/pgpainless-cert-d-cli/src/main/resources/msg_pgp-cert-d.properties new file mode 100644 index 0000000..4882e8e --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_pgp-cert-d.properties @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Store and manage public OpenPGP certificates +store=Overwrite the default certificate directory path + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Usage:\u0020 +usage.commandListHeading = %nCommands:%n +usage.optionListHeading = %nOptions:%n +usage.footerHeading=Powered by picocli%n diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_pgp-cert-d_de.properties b/pgpainless-cert-d-cli/src/main/resources/msg_pgp-cert-d_de.properties new file mode 100644 index 0000000..0c5c4fb --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_pgp-cert-d_de.properties @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Speichere und verwalte öffentliche OpenPGP Zertifikate +store=Überschreibe den Standardpfad des Zertifikatsverzeichnisses + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Aufruf:\u0020 +usage.commandListHeading=%nBefehle:%n +usage.optionListHeading = %nOptionen:%n +usage.footerHeading=Powered by Picocli%n diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_setup.properties b/pgpainless-cert-d-cli/src/main/resources/msg_setup.properties new file mode 100644 index 0000000..a6f60bb --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_setup.properties @@ -0,0 +1,13 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Setup a new certificate directory +with-password=Ask for a password for the trust-root key +import-from-stdin=Import trust-root from stdin + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Usage:\u0020 +usage.commandListHeading = %nCommands:%n +usage.optionListHeading = %nOptions:%n +usage.footerHeading=Powered by picocli%n +store=Overwrite the default certificate directory path diff --git a/pgpainless-cert-d-cli/src/main/resources/msg_setup_de.properties b/pgpainless-cert-d-cli/src/main/resources/msg_setup_de.properties new file mode 100644 index 0000000..933f726 --- /dev/null +++ b/pgpainless-cert-d-cli/src/main/resources/msg_setup_de.properties @@ -0,0 +1,13 @@ +# SPDX-FileCopyrightText: 2022 Paul Schaub +# +# SPDX-License-Identifier: Apache-2.0 +usage.header=Richte ein neues Zertifikatsverzeichnis ein +with-password=Frage nach einem Passwort für den trust-root Schlüssel +import-from-stdin=Importiere trust-root Schlüssel von Standardeingabe + +# Generic TODO: Remove when bumping picocli to 4.7.0 +usage.synopsisHeading=Aufruf:\u0020 +usage.commandListHeading=%nBefehle:%n +usage.optionListHeading = %nOptionen:%n +usage.footerHeading=Powered by Picocli%n +store=Überschreibe den Standardpfad des Zertifikatsverzeichnisses