From 2c481364746280b95dab6b3b1e388e82f4dcc356 Mon Sep 17 00:00:00 2001 From: Denys Date: Sun, 24 Nov 2024 21:24:37 +0200 Subject: [PATCH 1/2] did translation uk words and added some changes to CLI and SetLocale classes --- pom.xml | 8 ++++ .../javarush/gnew/m2/cli/PhoneBookCLI.java | 22 +++++----- .../gnew/m2/cli/commands/SetLocale.java | 40 ++++++++++++++----- .../gnew/m2/service/LocalizationService.java | 6 ++- src/main/resources/Localization.properties | 1 + ....properties => Localization_ru.properties} | 0 src/main/resources/Localization_uk.properties | 25 ++++++++++++ src/main/resources/messages.properties | 0 src/main/resources/messages_en.properties | 1 - src/main/resources/messages_ua.properties | 1 - 10 files changed, 80 insertions(+), 24 deletions(-) create mode 100644 src/main/resources/Localization.properties rename src/main/resources/{messages_ru.properties => Localization_ru.properties} (100%) create mode 100644 src/main/resources/Localization_uk.properties delete mode 100644 src/main/resources/messages.properties delete mode 100644 src/main/resources/messages_en.properties delete mode 100644 src/main/resources/messages_ua.properties diff --git a/pom.xml b/pom.xml index 4a1c083..8fad246 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,14 @@ jackson-databind 2.18.1 + + + + javax.inject + javax.inject + 1 + + diff --git a/src/main/java/ua/com/javarush/gnew/m2/cli/PhoneBookCLI.java b/src/main/java/ua/com/javarush/gnew/m2/cli/PhoneBookCLI.java index 6a62acb..b1adf75 100644 --- a/src/main/java/ua/com/javarush/gnew/m2/cli/PhoneBookCLI.java +++ b/src/main/java/ua/com/javarush/gnew/m2/cli/PhoneBookCLI.java @@ -5,6 +5,8 @@ import picocli.CommandLine; import picocli.CommandLine.Command; import ua.com.javarush.gnew.m2.cli.commands.*; +import ua.com.javarush.gnew.m2.service.LocalizationService; +import java.util.Locale; @Command( name = "phonebook", @@ -13,21 +15,23 @@ description = "CLI для управління контактами в телефонній книзі") public class PhoneBookCLI implements CliCommand { - @Override + LocalizationService localizationService = new LocalizationService(Locale.getDefault()); + + @Override public Integer call() { - System.out.println("Використовуйте одну з команд: user, add, search, edit, delete, list"); + System.out.println(localizationService.getMessage("app.commands").replace("{0}","user, add, search, edit, delete, list, locale")); return 0; } public static int init(String[] args) { return new CommandLine(getBean(PhoneBookCLI.class)) - .addSubcommand("add", getBean(AddContact.class)) - .addSubcommand("search", getBean(SearchContact.class)) - .addSubcommand("edit", getBean(EditContact.class)) - .addSubcommand("delete", getBean(DeleteContact.class)) - .addSubcommand("list", getBean(ListContacts.class)) - .addSubcommand("user", getBean(SetUser.class)) - .addSubcommand("locale", getBean(SetLocale.class)) + .addSubcommand("command.add", getBean(AddContact.class)) + .addSubcommand("command.search", getBean(SearchContact.class)) + .addSubcommand("command.edit", getBean(EditContact.class)) + .addSubcommand("command.delete", getBean(DeleteContact.class)) + .addSubcommand("command.list", getBean(ListContacts.class)) + .addSubcommand("command.user", getBean(SetUser.class)) + .addSubcommand("command.locale", getBean(SetLocale.class)) .execute(args); } } diff --git a/src/main/java/ua/com/javarush/gnew/m2/cli/commands/SetLocale.java b/src/main/java/ua/com/javarush/gnew/m2/cli/commands/SetLocale.java index 0afd638..b96d034 100644 --- a/src/main/java/ua/com/javarush/gnew/m2/cli/commands/SetLocale.java +++ b/src/main/java/ua/com/javarush/gnew/m2/cli/commands/SetLocale.java @@ -1,11 +1,18 @@ package ua.com.javarush.gnew.m2.cli.commands; import java.io.IOException; +import java.util.Arrays; +import java.util.Locale; + +import com.fasterxml.jackson.annotation.JacksonInject; import picocli.CommandLine; import ua.com.javarush.gnew.m2.cli.CliCommand; import ua.com.javarush.gnew.m2.configuration.PhoneBookContext; +import ua.com.javarush.gnew.m2.service.LocalizationService; import ua.com.javarush.gnew.m2.service.SettingsServiceInterface; +import javax.inject.Inject; + @CommandLine.Command( name = "locale", aliases = {"-l", "--locale"}, @@ -14,20 +21,31 @@ public class SetLocale implements CliCommand { private final SettingsServiceInterface settingsService = - PhoneBookContext.getBean(SettingsServiceInterface.class); + PhoneBookContext.getBean(SettingsServiceInterface.class); + +LocalizationService localizationService = new LocalizationService(Locale.getDefault()); @CommandLine.Parameters(index = "0", description = "language", arity = "1") private String newLocale; - @Override - public Integer call() { - try { - settingsService.setLocale(newLocale); - System.out.println("Локаль установлена на: " + newLocale); - return 0; - } catch (IOException e) { - System.err.println("Ошибка при установке локали: " + e.getMessage()); - return 1; + + @Override + public Integer call() { + try { + Locale locale = new Locale(newLocale); + if (!Arrays.asList(Locale.getAvailableLocales()).contains(locale)) { + System.err.println(localizationService.getMessage("error.dontUse.notfound").replace("{0}", newLocale)); + return 1; + } + settingsService.setLocale(newLocale); + localizationService.setLocale(new Locale(newLocale)); + System.out.println(localizationService.getMessage("success.locale.changed").replace("{0}", newLocale)); + System.out.println(localizationService.getMessage("locale.current").replace("{0}", newLocale)); + return 0; + + } catch (IOException e) { + System.err.println(localizationService.getMessage("error.command.notfound").replace("{0}", newLocale)); + return 1; + } } - } } diff --git a/src/main/java/ua/com/javarush/gnew/m2/service/LocalizationService.java b/src/main/java/ua/com/javarush/gnew/m2/service/LocalizationService.java index a50dc3d..b5cf5c7 100644 --- a/src/main/java/ua/com/javarush/gnew/m2/service/LocalizationService.java +++ b/src/main/java/ua/com/javarush/gnew/m2/service/LocalizationService.java @@ -1,5 +1,6 @@ package ua.com.javarush.gnew.m2.service; +import java.nio.charset.StandardCharsets; import java.util.Locale; import java.util.ResourceBundle; @@ -13,13 +14,14 @@ public LocalizationService(Locale locale) { public void setLocale(Locale locale) { - this.resourceBundle = ResourceBundle.getBundle("messages", locale); + this.resourceBundle = ResourceBundle.getBundle("Localization", locale); } public String getMessage(String key) { try { - return resourceBundle.getString(key); + String message = resourceBundle.getString(key); + return new String(message.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); } catch (Exception e) { return "Message not found for key: " + key; } diff --git a/src/main/resources/Localization.properties b/src/main/resources/Localization.properties new file mode 100644 index 0000000..2c4c454 --- /dev/null +++ b/src/main/resources/Localization.properties @@ -0,0 +1 @@ +en \ No newline at end of file diff --git a/src/main/resources/messages_ru.properties b/src/main/resources/Localization_ru.properties similarity index 100% rename from src/main/resources/messages_ru.properties rename to src/main/resources/Localization_ru.properties diff --git a/src/main/resources/Localization_uk.properties b/src/main/resources/Localization_uk.properties new file mode 100644 index 0000000..c4d2d1b --- /dev/null +++ b/src/main/resources/Localization_uk.properties @@ -0,0 +1,25 @@ +# Загальні повідомлення +app.description=CLI для управління контактами в телефонній книзі +app.version=Телефонна книга CLI 1.0 +app.commands=Використовуйте одну з команд: {0} + +# Команди +command.add=додати +command.search=пошук +command.edit=редагувати +command.delete=видалити +command.list=список +command.user=користувач +command.locale=мова + +# Підказки та помилки +error.command.notfound=Команду не знайдено: {0} +error.missing.argument=Відсутній обов'язковий аргумент: {0} +success.locale.changed=Мову успішно змінено на {0} +error.dontUse.notfound = невідома команда: {0} + +# Мови +locale.current=Поточна мова: {0} +locale.available=Доступні мови: {0} + + diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties deleted file mode 100644 index c574d07..0000000 --- a/src/main/resources/messages_en.properties +++ /dev/null @@ -1 +0,0 @@ -en diff --git a/src/main/resources/messages_ua.properties b/src/main/resources/messages_ua.properties deleted file mode 100644 index 6cf8072..0000000 --- a/src/main/resources/messages_ua.properties +++ /dev/null @@ -1 +0,0 @@ -UKR \ No newline at end of file From 87f80f337feda57d184eba7989b1982542138e33 Mon Sep 17 00:00:00 2001 From: Denys Date: Sun, 24 Nov 2024 21:32:02 +0200 Subject: [PATCH 2/2] did translation uk words and added some changes to CLI and SetLocale classes --- src/main/java/ua/com/javarush/gnew/m2/cli/PhoneBookCLI.java | 1 + .../java/ua/com/javarush/gnew/m2/cli/commands/SetLocale.java | 1 + .../ua/com/javarush/gnew/m2/service/LocalizationService.java | 1 + src/main/resources/Localization.properties | 2 +- src/main/resources/Localization_ru.properties | 2 +- src/main/resources/Localization_uk.properties | 1 + 6 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/ua/com/javarush/gnew/m2/cli/PhoneBookCLI.java b/src/main/java/ua/com/javarush/gnew/m2/cli/PhoneBookCLI.java index b1adf75..8a135fc 100644 --- a/src/main/java/ua/com/javarush/gnew/m2/cli/PhoneBookCLI.java +++ b/src/main/java/ua/com/javarush/gnew/m2/cli/PhoneBookCLI.java @@ -23,6 +23,7 @@ public Integer call() { return 0; } + public static int init(String[] args) { return new CommandLine(getBean(PhoneBookCLI.class)) .addSubcommand("command.add", getBean(AddContact.class)) diff --git a/src/main/java/ua/com/javarush/gnew/m2/cli/commands/SetLocale.java b/src/main/java/ua/com/javarush/gnew/m2/cli/commands/SetLocale.java index b96d034..6b4ebc8 100644 --- a/src/main/java/ua/com/javarush/gnew/m2/cli/commands/SetLocale.java +++ b/src/main/java/ua/com/javarush/gnew/m2/cli/commands/SetLocale.java @@ -29,6 +29,7 @@ public class SetLocale implements CliCommand { private String newLocale; + @Override public Integer call() { try { diff --git a/src/main/java/ua/com/javarush/gnew/m2/service/LocalizationService.java b/src/main/java/ua/com/javarush/gnew/m2/service/LocalizationService.java index b5cf5c7..5ca9a2b 100644 --- a/src/main/java/ua/com/javarush/gnew/m2/service/LocalizationService.java +++ b/src/main/java/ua/com/javarush/gnew/m2/service/LocalizationService.java @@ -18,6 +18,7 @@ public void setLocale(Locale locale) { } + public String getMessage(String key) { try { String message = resourceBundle.getString(key); diff --git a/src/main/resources/Localization.properties b/src/main/resources/Localization.properties index 2c4c454..c574d07 100644 --- a/src/main/resources/Localization.properties +++ b/src/main/resources/Localization.properties @@ -1 +1 @@ -en \ No newline at end of file +en diff --git a/src/main/resources/Localization_ru.properties b/src/main/resources/Localization_ru.properties index 02279b7..fefb43f 100644 --- a/src/main/resources/Localization_ru.properties +++ b/src/main/resources/Localization_ru.properties @@ -1 +1 @@ -RU \ No newline at end of file +RU diff --git a/src/main/resources/Localization_uk.properties b/src/main/resources/Localization_uk.properties index c4d2d1b..3c8a2a8 100644 --- a/src/main/resources/Localization_uk.properties +++ b/src/main/resources/Localization_uk.properties @@ -18,6 +18,7 @@ error.missing.argument=Відсутній обов'язковий аргумен success.locale.changed=Мову успішно змінено на {0} error.dontUse.notfound = невідома команда: {0} + # Мови locale.current=Поточна мова: {0} locale.available=Доступні мови: {0}