diff --git a/ganttzk-demo-webapp/pom.xml b/ganttzk-demo-webapp/pom.xml
index 874d52c2a..f76567596 100644
--- a/ganttzk-demo-webapp/pom.xml
+++ b/ganttzk-demo-webapp/pom.xml
@@ -13,9 +13,33 @@
ganttzk-demo-webapp
+
+
+
+
+ org.xnap.commons
+ maven-gettext-plugin
+
+ i18n.Messages
+ ${project.build.sourceDirectory}/../resources/i18n
+ -k_
+
+
+
+
+
+
+ org.xnap.commons
+ gettext-commons
+
org.springframework
@@ -69,6 +93,16 @@
javax.servlet
servlet-api
+
+
+ commons-io
+ commons-io
+ 1.2
+ compile
+
diff --git a/ganttzk-demo-webapp/src/main/java/org/navalplanner/web/I18nHelper.java b/ganttzk-demo-webapp/src/main/java/org/navalplanner/web/I18nHelper.java
new file mode 100644
index 000000000..0a9e2299c
--- /dev/null
+++ b/ganttzk-demo-webapp/src/main/java/org/navalplanner/web/I18nHelper.java
@@ -0,0 +1,31 @@
+package org.navalplanner.web;
+
+import java.util.HashMap;
+import java.util.Locale;
+
+import org.xnap.commons.i18n.I18n;
+import org.xnap.commons.i18n.I18nFactory;
+import org.zkoss.util.Locales;
+
+
+public class I18nHelper {
+
+ private static HashMap localesCache = new HashMap();
+
+ public static I18n getI18n() {
+ if (localesCache.keySet().contains(Locales.getCurrent())) {
+ return localesCache.get(Locales.getCurrent());
+ }
+
+ I18n i18n = I18nFactory.getI18n(I18nHelper.class, Locales
+ .getCurrent(),
+ org.xnap.commons.i18n.I18nFactory.FALLBACK);
+ localesCache.put(Locales.getCurrent(), i18n);
+
+ return i18n;
+ }
+
+ public static String _(String str) {
+ return getI18n().tr(str);
+ }
+}
\ No newline at end of file
diff --git a/ganttzk-demo-webapp/src/main/webapp/WEB-INF/tld/i18n.tld b/ganttzk-demo-webapp/src/main/webapp/WEB-INF/tld/i18n.tld
new file mode 100644
index 000000000..32d5b8173
--- /dev/null
+++ b/ganttzk-demo-webapp/src/main/webapp/WEB-INF/tld/i18n.tld
@@ -0,0 +1,15 @@
+
+
+ http://org.navalplanner.web/i18n
+
+
+
+ _
+ org.navalplanner.web.I18nHelper
+
+ java.lang.String _(java.lang.String name)
+
+
+
+
+