diff --git a/src/main/java/de/deadlocker8/budgetmaster/Main.java b/src/main/java/de/deadlocker8/budgetmaster/Main.java index 510847955ab41dc64b10f92bd630dab4b779cb43..65a80695a66b51e54b8d457023df7973b67e74df 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 d5e85325b27ae1daa7c40c33457e3f34943fb7d8..888454abd037f5acc05098408b9325cda798105d 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 0000000000000000000000000000000000000000..c7ed16289f4c948599b695f79e9ce4a78aa3c52e --- /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 4b2c3326fa4f5366747a56893106d2cd8889aa6d..b17f89124cf5deeb4f73642ccb87e4a24e285ec1 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 0000000000000000000000000000000000000000..914328658147f46c7419d43cf55a4cfa933c0337 --- /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 0000000000000000000000000000000000000000..914328658147f46c7419d43cf55a4cfa933c0337 --- /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 23e17ea90610767a5ab004128f8d789ff8ac8ced..2f72ae43d4904e25db06c337ecfcbc21dc0cdb37 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">