From fa1000b6a5e41f9e1e3a6ce867146d11c57066d2 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 4 Mar 2018 16:04:07 +0100 Subject: [PATCH] #286 - localized category page --- .../advices/LocalizationAdvice.java | 22 +++++++++++++++++++ .../controller/CategoryController.java | 2 ++ src/main/resources/languages/_de.properties | 6 ++--- src/main/resources/languages/_en.properties | 6 ++--- src/main/resources/templates/newCategory.ftl | 13 ++++++----- 5 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 src/main/java/de/deadlocker8/budgetmaster/advices/LocalizationAdvice.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/advices/LocalizationAdvice.java b/src/main/java/de/deadlocker8/budgetmaster/advices/LocalizationAdvice.java new file mode 100644 index 000000000..8f729fc1b --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/advices/LocalizationAdvice.java @@ -0,0 +1,22 @@ +package de.deadlocker8.budgetmaster.advices; + +import freemarker.ext.beans.BeansWrapper; +import freemarker.ext.beans.BeansWrapperBuilder; +import freemarker.template.Configuration; +import freemarker.template.TemplateHashModel; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ModelAttribute; + +@ControllerAdvice +public class LocalizationAdvice +{ + @ModelAttribute("localization") + public TemplateHashModel getLocalization() + { + BeansWrapperBuilder builder = new BeansWrapperBuilder(Configuration.VERSION_2_3_27); + builder.setUseModelCache(true); + builder.setExposeFields(true); + BeansWrapper beansWrapper = builder.build(); + return beansWrapper.getStaticModels(); + } +} \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/CategoryController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/CategoryController.java index 72751fe4f..a0d571eb4 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/CategoryController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/CategoryController.java @@ -5,6 +5,8 @@ import de.deadlocker8.budgetmaster.entities.Category; import de.deadlocker8.budgetmaster.entities.CategoryType; import de.deadlocker8.budgetmaster.repositories.CategoryRepository; import de.deadlocker8.budgetmaster.utils.*; +import freemarker.ext.beans.BeansWrapper; +import freemarker.template.TemplateHashModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index 9a2526145..d9d3cdd54 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -62,6 +62,7 @@ chart.categories.title.incomes=Einnahmen nach Kategorien chart.categories.title.payments=Ausgaben nach Kategorien ok=OK cancel=Abbrechen +save=Speichern home.placeholder=Keine Daten verf�gbar home.budget=von {0} verbleibend payments.placeholder=Keine Daten verf�gbar @@ -277,10 +278,7 @@ gui.tab.settings=Einstellungen hometab.categorybudgets=Verbrauch nach Kategorien -category.new.label.name=Name: -category.new.label.max.characters=(max. 45 Zeichen) -category.new.label.color=Farbe: -category.new.button.save=Speichern +category.new.label.name=Name payment.new.label.name=Name: payment.new.label.max.characters.name=(max. 150 Zeichen) diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 8788efcc8..3cbfdd148 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -62,6 +62,7 @@ chart.categories.title.incomes=Incomes by Categories chart.categories.title.payments=Payments by Categories ok=OK cancel=Cancel +save=Save home.placeholder=No data available home.budget=of {0} remaining payments.placeholder=No data available @@ -277,10 +278,7 @@ gui.tab.settings=Settings hometab.categorybudgets=Consumption by categories -category.new.label.name=Name: -category.new.label.max.characters=(up to 45 characters) -category.new.label.color=Color: -category.new.button.save=Save +category.new.label.name=Name payment.new.label.name=Name: payment.new.label.max.characters.name=(up to 150 characters) diff --git a/src/main/resources/templates/newCategory.ftl b/src/main/resources/templates/newCategory.ftl index f2fef9342..24360fbb7 100644 --- a/src/main/resources/templates/newCategory.ftl +++ b/src/main/resources/templates/newCategory.ftl @@ -8,6 +8,7 @@ <link type="text/css" rel="stylesheet" href="/css/style.css"/> <link type="text/css" rel="stylesheet" href="/css/categories.css"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <#assign locale = localization["tools.Localization"]> </head> <body class="budgetmaster-blue-light"> <ul id="slide-out" class="side-nav fixed"> @@ -46,7 +47,7 @@ <div class="card main-card"> <div class="container"> <div class="section center-align"> - <div class="grey-text text-darken-4 headline"><#if model["category"].getID()??>Kategorie bearbeiten<#else>Neue Kategorie</#if></div> + <div class="grey-text text-darken-4 headline"><#if model["category"].getID()??>${locale.getString("title.category.edit")}<#else>${locale.getString("title.category.new")}</#if></div> </div> </div> <div class="container"> @@ -54,7 +55,7 @@ <div class="row"> <div class="input-field col s12 m12 l8 offset-l2"> <input id="category-name" type="text" name="name" value="<#if model["category"].getName()??>${model["category"].getName()}</#if>"> - <label for="category-name">Name</label> + <label for="category-name">${locale.getString("category.new.label.name")}</label> </div> </div> <input type="hidden" name="color" id="categoryColor" value="${model["category"].getColor()}"> @@ -85,25 +86,25 @@ <br> <div class="row hide-on-small-only"> <div class="col m6 l4 offset-l2 right-align"> - <a href="/categories" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">clear</i>Abbrechen</a> + <a href="/categories" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">clear</i>${locale.getString("cancel")}</a> </div> <div class="col m6 l4 left-align"> <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="action"> - <i class="material-icons left">save</i>Speichern + <i class="material-icons left">save</i>${locale.getString("save")} </button> </div> </div> <div class="hide-on-med-and-up"> <div class="row center-align"> <div class="col s12"> - <a href="/categories" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">clear</i>Abbrechen</a> + <a href="/categories" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">clear</i>${locale.getString("cancel")}</a> </div> </div> <div class="row center-align"> <div class="col s12"> <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="buttonSave"> - <i class="material-icons left">save</i>Speichern + <i class="material-icons left">save</i>${locale.getString("save")} </button> </div> </div> -- GitLab