[Yanel-commits] rev 45527 - public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu

michi at wyona.com michi at wyona.com
Tue Nov 17 14:44:53 CET 2009


Author: michi
Date: 2009-11-17 14:44:52 +0100 (Tue, 17 Nov 2009)
New Revision: 45527

Modified:
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java
Log:
simple i18n added to get started

Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java	2009-11-17 13:04:26 UTC (rev 45526)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java	2009-11-17 13:44:52 UTC (rev 45527)
@@ -14,11 +14,15 @@
 
 import java.io.IOException;
 
+import org.apache.log4j.Logger;
+
 /**
  *
  */
 abstract public class Menu {
 
+    private static Logger log = Logger.getLogger(Menu.class);
+
     /**
      * Get custom menus. Implement this method in order to introduce custom menus.
      */
@@ -36,18 +40,19 @@
      */
     public String getYanelMenu(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) throws ServletException, IOException, Exception {
         String backToRealm = org.wyona.yanel.core.util.PathUtil.backToRealm(resource.getPath());
+        String language = resource.getRequestedLanguage();
 
         StringBuilder sb= new StringBuilder();
         sb.append("<ul><li>");
         sb.append("<div id=\"yaneltoolbar_menutitle\">Yanel</div><ul>");
 
-        sb.append("<li><a href=\"" + backToRealm + reservedPrefix+ "/about.html\">About Yanel</a></li>");
-        sb.append("<li><a href=\"?yanel.toolbar=off\">Turn off toolbar</a></li>");
+        sb.append("<li><a href=\"" + backToRealm + reservedPrefix+ "/about.html\">" + getLabel("y:about-yanel", language) + "</a></li>");
+        sb.append("<li><a href=\"?yanel.toolbar=off\">" + getLabel("y:turn-off-toolbar", language) + "</a></li>");
         Identity identity = getIdentity(request, map);
         if (identity != null) {
-            sb.append("<li><a href=\"" + backToRealm + reservedPrefix + "/users/" + identity.getUsername() + ".html\">My profile</a></li>");
+            sb.append("<li><a href=\"" + backToRealm + reservedPrefix + "/users/" + identity.getUsername() + ".html\">" + getLabel("y:my-profile", language) + "</a></li>");
             // TODO: Also consider additional query strings!
-            sb.append("<li><a href=\"?yanel.usecase=logout\"><img class=\"yaneltoolbar_menuicon\" src=\"" + backToRealm + reservedPrefix + "/yanel-img/icons/system-log-out.png\" border=\"0\"/>Logout</a></li>");
+            sb.append("<li><a href=\"?yanel.usecase=logout\"><img class=\"yaneltoolbar_menuicon\" src=\"" + backToRealm + reservedPrefix + "/yanel-img/icons/system-log-out.png\" border=\"0\"/>" + getLabel("y:logout", language) + "</a></li>");
         }
         sb.append("</ul>");
 
@@ -61,6 +66,7 @@
      */
     public String getAdminMenu(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) throws ServletException, IOException, Exception {
         String backToRealm = org.wyona.yanel.core.util.PathUtil.backToRealm(resource.getPath());
+        String language = resource.getRequestedLanguage();
 
         StringBuilder sb= new StringBuilder();
         sb.append("<ul><li>");
@@ -78,9 +84,9 @@
         sb.append("</li>");
 
         if (isAuthorized("/" + reservedPrefix + "/admin/list-users.html", resource)) {
-            sb.append("<li><a href=\"" + backToRealm + reservedPrefix + "/admin/list-users.html\">User Management</a></li>");
+            sb.append("<li><a href=\"" + backToRealm + reservedPrefix + "/admin/list-users.html\">" + getLabel("y:user-management", language) + "</a></li>");
         } else {
-            sb.append("<li>User Management</li>");
+            sb.append("<li>" + getLabel("y:user-management", language) + "</li>");
         }
 
         if (isAuthorized("/" + reservedPrefix + "/admin/list-groups.html", resource)) {
@@ -102,10 +108,11 @@
      */
     public String getHelpMenu(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) throws ServletException, IOException, Exception {
         String backToRealm = org.wyona.yanel.core.util.PathUtil.backToRealm(resource.getPath());
+        String language = resource.getRequestedLanguage();
 
         StringBuilder sb= new StringBuilder();
         sb.append("<ul><li>");
-        sb.append("<div id=\"yaneltoolbar_menutitle\">Help</div>");
+        sb.append("<div id=\"yaneltoolbar_menutitle\">" + getLabel("y:help", language) + "</div>");
         sb.append("<ul>");
         sb.append("<li><a href=\"http://www.yanel.org/en/documentation/index.html\">Yanel Documentation</a></li>");
         sb.append("</ul>");
@@ -139,4 +146,66 @@
         org.wyona.security.core.api.PolicyManager pm = resource.getRealm().getPolicyManager();
         return pm.authorize(path, resource.getEnvironment().getIdentity(), new org.wyona.security.core.api.Usecase("view"));
     }
+
+    /**
+     * Get i18n (TODO: Replace this by something more generic)
+     *
+     * @param key I18n key
+     * @param language Language
+     */
+    private static String getLabel(String key, String language) {
+        if (language.equals("de")) {
+            if(key.equals("y:help")) {
+                return "Hilfe";
+            } else if(key.equals("y:about-yanel")) {
+                return "Ueber Yanel";
+            } else if(key.equals("y:turn-off-toolbar")) {
+                return "Toolbar deaktivieren";
+            } else if(key.equals("y:logout")) {
+                return "Abmelden";
+            } else if(key.equals("y:my-profile")) {
+                return "Mein Profil";
+            } else if(key.equals("y:user-management")) {
+                return "Benutzer Verwaltung";
+            } else {
+                log.warn("Key '" + key + "' not supported yet by requested language '" + language + "'. Fallback to english!");
+                return getLabel(key, "en");
+            }
+        } else if (language.equals("fr")) {
+            if(key.equals("y:help")) {
+                return "Aide";
+            } else if(key.equals("y:about-yanel")) {
+                return "A propos de Yanel";
+            } else if(key.equals("y:my-profile")) {
+                return "Mon profil";
+            } else if(key.equals("y:turn-off-toolbar")) {
+                return "Désactiver la barre d'outils";
+            } else if(key.equals("y:logout")) {
+                return "Déconnexion";
+            } else {
+                log.warn("Key '" + key + "' not supported yet by requested language '" + language + "'. Fallback to english!");
+                return getLabel(key, "en");
+            }
+        } else if (language.equals("en")) {
+            if(key.equals("y:help")) {
+                return "Help";
+            } else if(key.equals("y:about-yanel")) {
+                return "About Yanel";
+            } else if(key.equals("y:my-profile")) {
+                return "My profile";
+            } else if(key.equals("y:turn-off-toolbar")) {
+                return "Turn off toolbar";
+            } else if(key.equals("y:logout")) {
+                return "Logout";
+            } else if(key.equals("y:user-management")) {
+                return "User Management";
+            } else {
+                log.warn("Key '" + key + "' not supported yet!");
+                return key;
+            }
+        } else {
+            log.warn("Language '" + language + "' not supported yet. Fallback to english!");
+            return getLabel(key, "en");
+        }
+    }
 }



More information about the Yanel-commits mailing list