From abc434d1ec52bc4f7bd9bc212860eb46e65f8019 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 18 Oct 2020 13:03:12 +0200 Subject: [PATCH] #537 - display localized news: - split localization in base and news --- .../de/deadlocker8/budgetmaster/Main.java | 10 ++++- .../controller/AboutController.java | 11 +++++ .../budgetmaster/controller/NewsEntry.java | 39 ++++++++++++++++++ .../services/LocalizationService.java | 10 ++++- .../{_de.properties => base_de.properties} | 0 .../{_en.properties => base_en.properties} | 0 .../resources/languages/news_de.properties | 14 +++++++ .../resources/languages/news_en.properties | 14 +++++++ .../resources/templates/whatsNewModal.ftl | 40 ++++--------------- 9 files changed, 101 insertions(+), 37 deletions(-) create mode 100644 src/main/java/de/deadlocker8/budgetmaster/controller/NewsEntry.java rename src/main/resources/languages/{_de.properties => base_de.properties} (100%) rename src/main/resources/languages/{_en.properties => base_en.properties} (100%) create mode 100644 src/main/resources/languages/news_de.properties create mode 100644 src/main/resources/languages/news_en.properties diff --git a/src/main/java/de/deadlocker8/budgetmaster/Main.java b/src/main/java/de/deadlocker8/budgetmaster/Main.java index 510847955..65a80695a 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/Main.java +++ b/src/main/java/de/deadlocker8/budgetmaster/Main.java @@ -48,9 +48,9 @@ public class Main extends SpringBootServletInitializer implements ApplicationRun } @Override - public String getBaseResource() + public String[] getBaseResources() { - return "languages/"; + return new String[]{"languages/base", "languages/news"}; } @Override @@ -58,6 +58,12 @@ public class Main extends SpringBootServletInitializer implements ApplicationRun { return new JavaMessageFormatter(); } + + @Override + public boolean useMultipleResourceBundles() + { + return true; + } }); Localization.load(); diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/AboutController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/AboutController.java index d5e85325b..888454abd 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/AboutController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/AboutController.java @@ -8,6 +8,9 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import java.util.ArrayList; +import java.util.List; + @Controller @RequestMapping(Mappings.ABOUT) @@ -31,6 +34,14 @@ public class AboutController extends BaseController @GetMapping("/whatsNewModal") public String fromTransactionModal(Model model) { + final List<NewsEntry> newsEntries = new ArrayList<>(); + newsEntries.add(NewsEntry.createWithLocalizationKeys("news.templates.headline", "news.templates.description")); + newsEntries.add(NewsEntry.createWithLocalizationKeys("news.backup.headline", "news.backup.description")); + newsEntries.add(NewsEntry.createWithLocalizationKeys("news.suggestions.headline", "news.suggestions.description")); + newsEntries.add(NewsEntry.createWithLocalizationKeys("news.charts.headline", "news.charts.description")); + newsEntries.add(NewsEntry.createWithLocalizationKeys("news.commandline.headline", "news.commandline.description")); + + model.addAttribute("newsEntries", newsEntries); return "whatsNewModal"; } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/NewsEntry.java b/src/main/java/de/deadlocker8/budgetmaster/controller/NewsEntry.java new file mode 100644 index 000000000..c7ed16289 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/NewsEntry.java @@ -0,0 +1,39 @@ +package de.deadlocker8.budgetmaster.controller; + +import de.thecodelabs.utils.util.Localization; + +public class NewsEntry +{ + private String headline; + private String description; + + public NewsEntry(String headline, String description) + { + this.headline = headline; + this.description = description; + } + + public static NewsEntry createWithLocalizationKeys(String headlineKey, String descriptionKey) + { + return new NewsEntry(Localization.getString(headlineKey), Localization.getString(descriptionKey)); + } + + public String getHeadline() + { + return headline; + } + + public String getDescription() + { + return description; + } + + @Override + public String toString() + { + return "NewsEntry{" + + "headline='" + headline + '\'' + + ", description='" + description + '\'' + + '}'; + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/LocalizationService.java b/src/main/java/de/deadlocker8/budgetmaster/services/LocalizationService.java index 4b2c3326f..b17f89124 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/LocalizationService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/LocalizationService.java @@ -30,9 +30,9 @@ public class LocalizationService implements Localization.LocalizationDelegate } @Override - public String getBaseResource() + public String[] getBaseResources() { - return "languages/"; + return new String[]{"languages/base", "languages/news"}; } @Override @@ -40,4 +40,10 @@ public class LocalizationService implements Localization.LocalizationDelegate { return new JavaMessageFormatter(); } + + @Override + public boolean useMultipleResourceBundles() + { + return true; + } } \ No newline at end of file diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/base_de.properties similarity index 100% rename from src/main/resources/languages/_de.properties rename to src/main/resources/languages/base_de.properties diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/base_en.properties similarity index 100% rename from src/main/resources/languages/_en.properties rename to src/main/resources/languages/base_en.properties diff --git a/src/main/resources/languages/news_de.properties b/src/main/resources/languages/news_de.properties new file mode 100644 index 000000000..914328658 --- /dev/null +++ b/src/main/resources/languages/news_de.properties @@ -0,0 +1,14 @@ +news.templates.headline=Transaction templates +news.templates.description=Allows the creation of templates for similar transactions. + +news.backup.headline=Auto backup +news.backup.description=Allows the scheduling of automatic BudgetMaster data backups. + +news.suggestions.headline=Transaction name suggestions +news.suggestions.description=Shows suggestions based on the last 25 created transactions. + +news.charts.headline=New charts +news.charts.description=Two new default charts (income/expenditures per year and rest per month). + +news.commandline.headline=Command line option to set custom directory +news.commandline.description=Specify a folder where settings, database and backups are stored (more details in the wiki). \ No newline at end of file diff --git a/src/main/resources/languages/news_en.properties b/src/main/resources/languages/news_en.properties new file mode 100644 index 000000000..914328658 --- /dev/null +++ b/src/main/resources/languages/news_en.properties @@ -0,0 +1,14 @@ +news.templates.headline=Transaction templates +news.templates.description=Allows the creation of templates for similar transactions. + +news.backup.headline=Auto backup +news.backup.description=Allows the scheduling of automatic BudgetMaster data backups. + +news.suggestions.headline=Transaction name suggestions +news.suggestions.description=Shows suggestions based on the last 25 created transactions. + +news.charts.headline=New charts +news.charts.description=Two new default charts (income/expenditures per year and rest per month). + +news.commandline.headline=Command line option to set custom directory +news.commandline.description=Specify a folder where settings, database and backups are stored (more details in the wiki). \ No newline at end of file diff --git a/src/main/resources/templates/whatsNewModal.ftl b/src/main/resources/templates/whatsNewModal.ftl index 23e17ea90..2f72ae43d 100644 --- a/src/main/resources/templates/whatsNewModal.ftl +++ b/src/main/resources/templates/whatsNewModal.ftl @@ -9,40 +9,14 @@ </div> </div> - <div class="row"> - <div class="col s12"> - <h5>Transaction templates</h5> - Allows the creation of templates for similar transactions. - </div> - </div> - - <div class="row"> - <div class="col s12"> - <h5>Auto backup</h5> - Allows the scheduling of automatic BudgetMaster data backups. - </div> - </div> - - <div class="row"> - <div class="col s12"> - <h5>Transaction name suggestions</h5> - Shows suggestions based on the last 25 created transactions. - </div> - </div> - - <div class="row"> - <div class="col s12"> - <h5>New charts</h5> - Two new default charts (income/expenditures per year and rest per month). - </div> - </div> - - <div class="row"> - <div class="col s12"> - <h5>Command line option to set custom directory</h5> - Specify a folder where settings, database and backups are stored (more details in the wiki). + <#list newsEntries as entry> + <div class="row"> + <div class="col s12"> + <h5>${entry.getHeadline()}</h5> + ${entry.getDescription()} + </div> </div> - </div> + </#list> <div class="row"> <div class="col s12"> -- GitLab