
Property changes on: console
___________________________________________________________________
Name: svn:ignore
   - output
target
build.log

   + output
target
build.log

po


Index: console/src/main/org/jboss/console/I18n.java
===================================================================
--- console/src/main/org/jboss/console/I18n.java	(revision 0)
+++ console/src/main/org/jboss/console/I18n.java	(revision 0)
@@ -0,0 +1,31 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.console;
+
+import java.text.MessageFormat;
+
+import org.jboss.varia.i18n.I18nUtil;
+
+/**
+ * Convenience class for accessing the web console's resource bundle.
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $$Revision: $$
+ */
+public class I18n
+{
+   public static final String BUNDLE = "org.jboss.console.messages"; //$NON-NLS-1$
+   public static String gettext(String englishKey)
+   {
+      return I18nUtil.gettext(englishKey, BUNDLE);
+   }
+
+   public static String gettext(String englishKey, Object arg)
+   {
+      return MessageFormat.format(gettext(englishKey), arg);
+   }
+
+}

Property changes on: console/src/main/org/jboss/console/I18n.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: console/src/main/org/jboss/console/plugins/JSR77Lister.java
===================================================================
--- console/src/main/org/jboss/console/plugins/JSR77Lister.java	(revision 73826)
+++ console/src/main/org/jboss/console/plugins/JSR77Lister.java	(working copy)
@@ -29,6 +29,7 @@
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
 
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.ManageableResource;
 import org.jboss.console.manager.interfaces.ResourceTreeNode;
 import org.jboss.console.manager.interfaces.TreeNode;
@@ -154,8 +155,8 @@
       {
          ObjectName objectName = new ObjectName(resources[i]);
          deployed[i] = createResourceNode (
-            objectName.getKeyProperty ("name"), // name
-            "J2EE Resource", // description
+            objectName.getKeyProperty ("name"), // name //$NON-NLS-1$
+            I18n.gettext("J2EE Resource"), // description //$NON-NLS-1$
             null, //"images/EspressoMaker.gif", // Icon URL
             null, // "J2EEApp.jsp?ObjectName=" + encode (objName.toString ()), // Default URL
             null,
@@ -167,9 +168,9 @@
       }
 
       return createTreeNode (
-         "J2EE Resources", // name
-         "J2EE Resources", // description
-         "images/spirale.gif", // Icon URL
+         I18n.gettext("J2EE Resources"), // name //$NON-NLS-1$
+         I18n.gettext("J2EE Resources"), // description //$NON-NLS-1$
+         "images/spirale.gif", // Icon URL //$NON-NLS-1$
          null, //"J2EEDomain.jsp&objectName=" + encode(objName.toString()), // Default URL
          null,
          null, // sub nodes
@@ -186,9 +187,9 @@
          //if (resources[i].getKeyProperty ("J2EEApplication") == null)
          {
             deployed.add(createResourceNode (
-               objectName.getKeyProperty("name"), // name
-               "", // description
-               "images/EspressoMaker.gif", // Icon URL
+               objectName.getKeyProperty("name"), // name //$NON-NLS-1$
+               "", // description //$NON-NLS-1$
+               "images/EspressoMaker.gif", // Icon URL //$NON-NLS-1$
                null, // "J2EEApp.jsp?ObjectName=" + encode (objName.toString ()), // Default URL
                null,
                null, // sub nodes
@@ -215,9 +216,9 @@
       ResourceTreeNode[] subResArray = createDeployedObjects (deployedON);
 
       return createResourceNode (
-         serv.getserverVendor () + " - " + serv.getserverVersion (), // name
-         objectName.getKeyProperty ("name"), // description
-         "images/database.gif", // Icon URL
+         serv.getserverVendor () + " - " + serv.getserverVersion (), // name //$NON-NLS-1$
+         objectName.getKeyProperty ("name"), // description //$NON-NLS-1$
+         "images/database.gif", // Icon URL //$NON-NLS-1$
          null, //"J2EEDomain.jsp?objectName=" + encode(objName.toString()), // Default URL
          null,
          new TreeNode[] {createSubResources (serv.getresources())}, // sub nodes
@@ -231,7 +232,7 @@
    ResourceTreeNode[] createServers(ObjectName domain) throws Exception
    {
       // will throw an exception if there is no such attribute
-      String[] serversObjectNames = (String[])getMBeanServer().getAttribute(domain, "servers");
+      String[] serversObjectNames = (String[])getMBeanServer().getAttribute(domain, "servers"); //$NON-NLS-1$
       
       ArrayList servers = new ArrayList();
       for (int i = 0; i < serversObjectNames.length; i++)
@@ -252,9 +253,9 @@
    TreeNode createDomain(ObjectName domain) throws Exception
    {
       return createTreeNode(
-         domain.getKeyProperty("name"), // name
-         "", // description
-         "images/spirale.gif", // Icon URL
+         domain.getKeyProperty("name"), // name //$NON-NLS-1$
+         "", // description //$NON-NLS-1$
+         "images/spirale.gif", // Icon URL //$NON-NLS-1$
          null, //"J2EEDomain.jsp&objectName=" + encode(objName.toString()), // Default URL
          null,
          null, // sub nodes
@@ -270,7 +271,7 @@
       // The potential list of domain starting points. According to the
       // spec we should be looking for *:j2eeType=J2EEDomain,* where
       // the value of the "name" attribute matches the domain name.
-      ObjectInstance[] insts = getMBeansForQuery("*:j2eeType=J2EEDomain,*", null);
+      ObjectInstance[] insts = getMBeansForQuery("*:j2eeType=J2EEDomain,*", null); //$NON-NLS-1$
       
       // Holds the domains that are succesfully created
       ArrayList domainsCreated = new ArrayList();
@@ -280,7 +281,7 @@
          ObjectName objectName = insts[i].getObjectName();
          try
          {
-            if (objectName.getDomain().equals(objectName.getKeyProperty("name")))
+            if (objectName.getDomain().equals(objectName.getKeyProperty("name"))) //$NON-NLS-1$
             {
                // value of "name" attribute matches the domain name, assume is ok
                domainsCreated.add(createDomain(objectName));
@@ -310,9 +311,9 @@
       try
       {
          return createTreeNode (
-               "J2EE Domains",  // name
-               "Display JSR-77 Managed Objects", // description
-               "images/elements32.gif", // Icon URL
+               I18n.gettext("J2EE Domains"),  // name //$NON-NLS-1$
+               I18n.gettext("Display JSR-77 Managed Objects"), // description //$NON-NLS-1$
+               "images/elements32.gif", // Icon URL //$NON-NLS-1$
                null, // Default URL
                null,
                createDomains (), // sub nodes
@@ -327,7 +328,7 @@
    }
 
    public final static String[] DEFAULT_SUFFIX_ORDER = {
-      "ear", "jar", "war", "sar", "rar", "ds.xml", "service.xml", "wsr", "zip"
+      "ear", "jar", "war", "sar", "rar", "ds.xml", "service.xml", "wsr", "zip"         //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$//$NON-NLS-5$//$NON-NLS-6$//$NON-NLS-7$//$NON-NLS-8$//$NON-NLS-9$
    };
 
    public class ListerSorter implements Comparator
@@ -353,7 +354,7 @@
       public int getExtensionIndex (ResourceTreeNode node)
       {
          String name = node.getName();
-         if (name == null) name = "";
+         if (name == null) name = ""; //$NON-NLS-1$
 
          int i = 0;
          for (; i < suffixOrder.length; i++)
Index: console/src/main/org/jboss/console/plugins/helpers/AbstractPluginWrapper.java
===================================================================
--- console/src/main/org/jboss/console/plugins/helpers/AbstractPluginWrapper.java	(revision 73826)
+++ console/src/main/org/jboss/console/plugins/helpers/AbstractPluginWrapper.java	(working copy)
@@ -21,6 +21,17 @@
   */
 package org.jboss.console.plugins.helpers;
 
+import java.util.HashMap;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+import javax.management.Query;
+import javax.management.QueryExp;
+import javax.servlet.ServletConfig;
+
 import org.jboss.console.manager.PluginManager;
 import org.jboss.console.manager.interfaces.ConsolePlugin;
 import org.jboss.console.manager.interfaces.ManageableResource;
@@ -39,16 +50,6 @@
 import org.jboss.mx.util.MBeanServerLocator;
 import org.jboss.system.Registry;
 
-import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectInstance;
-import javax.management.ObjectName;
-import javax.management.Query;
-import javax.management.QueryExp;
-import javax.servlet.ServletConfig;
-import java.util.HashMap;
-import java.util.Set;
-
 /**
  * <description>
  *
@@ -69,12 +70,12 @@
 {
    // Constants -----------------------------------------------------
    
-   public static final String OBJECT_NAME_PARAM = "ObjectName";
-   public static final String FOLDER_NAME_PARAM = "FolderName";
-   public static final String MBEAN_CLASS_PARAM = "MBeanClass";
-   public static final String WRAPPER_CLASS_PARAM = "WrapperClass";
-   public static final String SCRIPT_NAME_PARAM = "ScriptName";
-   public static final String IS_ROOT_NODE_PARAM = "IsRootNode";
+   public static final String OBJECT_NAME_PARAM = "ObjectName"; //$NON-NLS-1$
+   public static final String FOLDER_NAME_PARAM = "FolderName"; //$NON-NLS-1$
+   public static final String MBEAN_CLASS_PARAM = "MBeanClass"; //$NON-NLS-1$
+   public static final String WRAPPER_CLASS_PARAM = "WrapperClass"; //$NON-NLS-1$
+   public static final String SCRIPT_NAME_PARAM = "ScriptName"; //$NON-NLS-1$
+   public static final String IS_ROOT_NODE_PARAM = "IsRootNode"; //$NON-NLS-1$
 
    // Attributes ----------------------------------------------------
    
@@ -124,16 +125,16 @@
 
    public void readConfigurationParameters (ServletConfig config)
    {      
-      this.pluginName = config.getInitParameter("PluginName");
-      this.pluginVersion = config.getInitParameter("PluginVersion");
+      this.pluginName = config.getInitParameter("PluginName"); //$NON-NLS-1$
+      this.pluginVersion = config.getInitParameter("PluginVersion"); //$NON-NLS-1$
       
       this.folderName = config.getInitParameter(FOLDER_NAME_PARAM);
       this.objectName = config.getInitParameter(OBJECT_NAME_PARAM);
       this.mbeanClass = config.getInitParameter(MBEAN_CLASS_PARAM);
-      this.rootContextName = config.getInitParameter("ContextName");      
+      this.rootContextName = config.getInitParameter("ContextName");     //$NON-NLS-1$  
 
       String tmp = this.objectName;
-      if (tmp != null && !"".equals(tmp))
+      if (tmp != null && !"".equals(tmp)) //$NON-NLS-1$
       {
          // this kind of plugin is associated with a single MBean
          // which has a give JMX ObjectName
@@ -142,7 +143,7 @@
       }
 
       tmp = this.folderName;
-      if (tmp != null && !"".equals(tmp))
+      if (tmp != null && !"".equals(tmp)) //$NON-NLS-1$
       {
          // this kind of plugins is associated with one of the static folder of the tree
          //
@@ -150,7 +151,7 @@
       }
       
       tmp = config.getInitParameter(IS_ROOT_NODE_PARAM);
-      if (tmp != null && !"".equals(tmp) && "true".equalsIgnoreCase(tmp))
+      if (tmp != null && !"".equals(tmp) && "true".equalsIgnoreCase(tmp)) //$NON-NLS-1$ //$NON-NLS-2$
       {
          // this kind of plugins is associated with the root of the tree
          //
@@ -158,7 +159,7 @@
       }
       
       tmp = this.mbeanClass;
-      if (tmp != null && !"".equals(tmp))
+      if (tmp != null && !"".equals(tmp)) //$NON-NLS-1$
       {
          // this kind of plugins is associated with all MBean
          // that share a given interface
@@ -175,6 +176,8 @@
       if (this.pluginName != null)
       {
          return this.pluginName + " (Wrapped by ServletPluginHelper)";
+		 // TODO this is an identifier.  Would int'lising it break something?
+//         return I18n.gettext("{0} (Wrapped by ServletPluginHelper)", this.pluginName); //$NON-NLS-1$
       }
       else
       {
@@ -278,18 +281,18 @@
       {
          return null;
       }         
-      else if (source.toLowerCase().startsWith("http://") || 
-          source.toLowerCase().startsWith("https://"))
+      else if (source.toLowerCase().startsWith("http://") ||  //$NON-NLS-1$
+          source.toLowerCase().startsWith("https://")) //$NON-NLS-1$
       {
          return source;
       }
-      else if (source.startsWith("/"))
+      else if (source.startsWith("/")) //$NON-NLS-1$
       {
          return source; // already absolute
       }
       else
       {
-         return this.rootContextName + "/" + source;
+         return this.rootContextName + "/" + source; //$NON-NLS-1$
       }
    }
 
@@ -326,7 +329,7 @@
    }
 
    protected SimpleTreeNode createTreeNode (String name,
-                                            String description,
+                                            String description, // shown as tooltip in tree
                                             String iconUrl,
                                             String defaultUrl,
                                             TreeNodeMenuEntry[] menuEntries,
Index: console/src/main/org/jboss/console/plugins/helpers/servlet/MBeanTag.java
===================================================================
--- console/src/main/org/jboss/console/plugins/helpers/servlet/MBeanTag.java	(revision 73826)
+++ console/src/main/org/jboss/console/plugins/helpers/servlet/MBeanTag.java	(working copy)
@@ -21,13 +21,13 @@
   */
 package org.jboss.console.plugins.helpers.servlet;
 
-import org.jboss.console.plugins.helpers.jmx.Server;
-import org.jboss.mx.util.MBeanProxy;
-
 import javax.management.ObjectName;
 import javax.servlet.jsp.JspTagException;
 import javax.servlet.jsp.tagext.TagSupport;
 
+import org.jboss.console.plugins.helpers.jmx.Server;
+import org.jboss.mx.util.MBeanProxy;
+
 /**
  * <description>
  *
@@ -92,7 +92,7 @@
       }
       catch (Exception e)
       {
-         throw new JspTagException (e.toString());
+         throw new JspTagException (e);
       }
    }
 
Index: console/src/main/org/jboss/console/plugins/AOPLister.java
===================================================================
--- console/src/main/org/jboss/console/plugins/AOPLister.java	(revision 73826)
+++ console/src/main/org/jboss/console/plugins/AOPLister.java	(working copy)
@@ -33,6 +33,7 @@
 import org.jboss.aop.advice.CFlowInterceptor;
 import org.jboss.aop.introduction.InterfaceIntroduction;
 import org.jboss.aop.standalone.Package;
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.ManageableResource;
 import org.jboss.console.manager.interfaces.TreeNode;
 import org.jboss.console.plugins.helpers.AbstractPluginWrapper;
@@ -90,8 +91,8 @@
          nodes[i] = createTreeNode(
                  group, // name
                  description,
-                 "images/database.gif", // Icon URL
-                 baseUrl + "&group=" + group,
+                 "images/database.gif", // Icon URL //$NON-NLS-1$
+                 baseUrl + "&group=" + group, //$NON-NLS-1$
                  null, // menu
                  null, // sub nodes
                  null   // Sub-Resources
@@ -104,16 +105,16 @@
    {
       org.jboss.aop.metadata.SimpleMetaData metaData = advisor.getDefaultMetaData();
       return createMetaDataTree(metaData,
-              "Default metadata for " + classname,
-              "AOPDefaultMetaData.jsp?classname=" + classname);
+              I18n.gettext("Default metadata for {0}", classname), //$NON-NLS-1$
+              "AOPDefaultMetaData.jsp?classname=" + classname); //$NON-NLS-1$
    }
 
    TreeNode[] loadClassMetaData(ClassAdvisor advisor, String classname) throws Exception
    {
       org.jboss.aop.metadata.SimpleMetaData metaData = advisor.getClassMetaData();
       return createMetaDataTree(metaData,
-              "Class metadata for " + classname,
-              "AOPClassMetaData.jsp?classname=" + classname);
+              I18n.gettext("Class metadata for {0}", classname), //$NON-NLS-1$
+              "AOPClassMetaData.jsp?classname=" + classname); //$NON-NLS-1$
    }
 
    TreeNode[] loadMethodMetaData(ClassAdvisor advisor, String classname) throws Exception
@@ -128,12 +129,12 @@
          String method = (String) it.next();
          org.jboss.aop.metadata.SimpleMetaData methodData = metaData.getMethodMetaData(method);
          TreeNode[] methodNodes = createMetaDataTree(methodData,
-                 "Metadata for method " + method,
-                 "AOPMethodMetaData.jsp?classname=" + classname + "&method=" + java.net.URLEncoder.encode(method));
+                 I18n.gettext("Metadata for method {0}", method), //$NON-NLS-1$
+                 "AOPMethodMetaData.jsp?classname=" + classname + "&method=" + java.net.URLEncoder.encode(method)); //$NON-NLS-1$ //$NON-NLS-2$
          methods.add(createTreeNode(
                  method, // name
-                 "Metadata for method " + method,
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Metadata for method {0}", method), //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  methodNodes, // sub nodes
@@ -156,12 +157,12 @@
          String field = (String) it.next();
          org.jboss.aop.metadata.SimpleMetaData fieldData = metaData.getFieldMetaData(field);
          TreeNode[] fieldNodes = createMetaDataTree(fieldData,
-                 "Metadata for field " + field,
-                 "AOPFieldMetaData.jsp?classname=" + classname + "&field=" + field);
+                 I18n.gettext("Metadata for field {0}", field), //$NON-NLS-1$
+                 "AOPFieldMetaData.jsp?classname=" + classname + "&field=" + field); //$NON-NLS-1$ //$NON-NLS-2$
          fields.add(createTreeNode(
                  field, // name
-                 "Metadata for field " + field,
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Metadata for field {0}", field), //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  fieldNodes, // sub nodes
@@ -184,12 +185,12 @@
          String signature = (String)it.next();
          org.jboss.aop.metadata.SimpleMetaData constructorData = metaData.getConstructorMetaData(signature);
          TreeNode[] constructorNodes = createMetaDataTree(constructorData,
-                 "Metadata for constructor",
-                 "AOPConstructorMetaData.jsp?classname=" + classname + "&constructor=" + java.net.URLEncoder.encode(signature));
+                 I18n.gettext("Metadata for constructor"), //$NON-NLS-1$
+                 "AOPConstructorMetaData.jsp?classname=" + classname + "&constructor=" + java.net.URLEncoder.encode(signature)); //$NON-NLS-1$ //$NON-NLS-2$
          constructors.add(createTreeNode(
                  signature, // name
-                 "Metaata for constructor " + signature,
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Metadata for constructor {0}", signature), //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  constructorNodes, // sub nodes
@@ -210,9 +211,9 @@
       if (defaultMetaData != null)
       {
          nodes.add(createTreeNode(
-                 "Default",
-                 "Default metadata for for " + classname, // description
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Default"), //$NON-NLS-1$
+                 I18n.gettext("Default metadata for for {0}", classname), // description //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  defaultMetaData, // sub nodes
@@ -224,9 +225,9 @@
       if (classMetaData != null)
       {
          nodes.add(createTreeNode(
-               "Class",
-               "Class metadata for for " + classname, // description
-               "images/starfolder.gif", // Icon URL
+               I18n.gettext("Class"), //$NON-NLS-1$
+               I18n.gettext("Class metadata for for {0}", classname), // description //$NON-NLS-1$
+               "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                null,
                null, // menu
                classMetaData, // sub nodes
@@ -238,9 +239,9 @@
       if (methodMetaData != null)
       {
          nodes.add(createTreeNode(
-                 "Methods",
-                 "Method metadata for for " + classname, // description
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Methods"), //$NON-NLS-1$
+                 I18n.gettext("Method metadata for {0}", classname), // description //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  methodMetaData, // sub nodes
@@ -252,9 +253,9 @@
       if (fieldMetaData != null)
       {
          nodes.add(createTreeNode(
-                 "Fields",
-                 "Field metadata for for " + classname, // description
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Fields"), //$NON-NLS-1$
+                 I18n.gettext("Field metadata for {0}", classname), // description //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  fieldMetaData, // sub nodes
@@ -266,9 +267,9 @@
       if (constructorMetaData != null)
       {
          nodes.add(createTreeNode(
-                 "Constructors",
-                 "Constructor metadata for for " + classname, // description
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Constructors"), //$NON-NLS-1$
+                 I18n.gettext("Constructor metadata for {0}", classname), // description //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  constructorMetaData, // sub nodes
@@ -281,9 +282,9 @@
       TreeNode[] subnodes = (TreeNode[]) nodes.toArray(new TreeNode[nodes.size()]);
 
       return createTreeNode(
-              "Metadata", // name
-              "Metadata for " + classname, // description
-              "images/starfolder.gif", // Icon URL
+              I18n.gettext("Metadata"), // name //$NON-NLS-1$
+              I18n.gettext("Metadata for {0}", classname), // description //$NON-NLS-1$
+              "images/starfolder.gif", // Icon URL //$NON-NLS-1$
               null,
               null, // menu
               subnodes, // sub nodes
@@ -301,10 +302,10 @@
       {
          InterfaceIntroduction introduction = (InterfaceIntroduction) introductions.get(i);
          nodes[i] = createTreeNode(
-                 "Introduction " + i, // name
-                 "Introduction for " + advisor.getName(), // description
-                 "images/service.gif", // Icon URL
-                 "AOPIntroductionPointcut.jsp?pointcut=" + java.net.URLEncoder.encode(introduction.getName()), // Default URL
+                 I18n.gettext("Introduction {0}", i), // name //$NON-NLS-1$
+                 I18n.gettext("Introduction for {0}", advisor.getName()), // description //$NON-NLS-1$
+                 "images/service.gif", // Icon URL //$NON-NLS-1$
+                 "AOPIntroductionPointcut.jsp?pointcut=" + java.net.URLEncoder.encode(introduction.getName()), // Default URL //$NON-NLS-1$
                  null, // menu
                  null, // sub nodes
                  null   // Sub-Resources
@@ -316,7 +317,7 @@
 
    public static String shortenMethod(String classname, Method method)
    {
-      return method.toString().replaceAll(classname + "." + method.getName(), method.getName());
+      return method.toString().replaceAll(classname + "." + method.getName(), method.getName()); //$NON-NLS-1$
    }
 
    public static String shortenConstructor(String classname, Constructor constructor)
@@ -327,7 +328,7 @@
 
    public static String shortenField(String classname, Field field)
    {
-      return field.toString().replaceAll(classname + "." + field.getName(), field.getName());
+      return field.toString().replaceAll(classname + "." + field.getName(), field.getName()); //$NON-NLS-1$
    }
 
    public TreeNode[] createAdvisorNodes(ClassAdvisor advisor) throws Exception
@@ -358,11 +359,11 @@
          {
             fieldWriteNodes.add(createTreeNode(
                     shortenField(advisor.getName(), f),
-                    "Field write interceptor chain",
-                    "images/service.gif", // Icon URL
-                    "AOPFieldChain.jsp?classname=" + java.net.URLEncoder.encode(advisor.getName())
-                    + "&field=" + i 
-                    + "&mode=write",
+                    I18n.gettext("Field write interceptor chain"), //$NON-NLS-1$
+                    "images/service.gif", // Icon URL //$NON-NLS-1$
+                    "AOPFieldChain.jsp?classname=" + java.net.URLEncoder.encode(advisor.getName()) //$NON-NLS-1$
+                    + "&field=" + i  //$NON-NLS-1$
+                    + "&mode=write", //$NON-NLS-1$
                     null, // menu
                     null, // sub nodes
                     null   // Sub-Resources
@@ -373,11 +374,11 @@
          {
             fieldReadNodes.add(createTreeNode(
                     shortenField(advisor.getName(), f),
-                    "Field read interceptor chain",
-                    "images/service.gif", // Icon URL
-                    "AOPFieldChain.jsp?classname=" + java.net.URLEncoder.encode(advisor.getName())
-                    + "&field=" + i
-                    + "&mode=read",
+                    I18n.gettext("Field read interceptor chain"), //$NON-NLS-1$
+                    "images/service.gif", // Icon URL //$NON-NLS-1$
+                    "AOPFieldChain.jsp?classname=" + java.net.URLEncoder.encode(advisor.getName()) //$NON-NLS-1$
+                    + "&field=" + i //$NON-NLS-1$
+                    + "&mode=read", //$NON-NLS-1$
                     null, // menu
                     null, // sub nodes
                     null   // Sub-Resources
@@ -392,9 +393,9 @@
 	      {
 	         TreeNode[] cnodes = (TreeNode[]) fieldWriteNodes.toArray(new TreeNode[fieldWriteNodes.size()]);
 	         fieldReadWriteNodes.add(createTreeNode(
-	                 "write interceptors", // name
-	                 "field write info", // description
-	                 "images/starfolder.gif", // Icon URL
+	                 I18n.gettext("write interceptors"), // name //$NON-NLS-1$
+	                 I18n.gettext("field write info"), // description //$NON-NLS-1$
+	                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
 	                 null,
 	                 null, // menu
 	                 cnodes, // sub nodes
@@ -406,9 +407,9 @@
 	      {
 	         TreeNode[] cnodes = (TreeNode[]) fieldReadNodes.toArray(new TreeNode[fieldReadNodes.size()]);
 	         fieldReadWriteNodes.add(createTreeNode(
-	                 "read interceptors", // name
-	                 "field read info", // description
-	                 "images/starfolder.gif", // Icon URL
+	                 I18n.gettext("read interceptors"), // name //$NON-NLS-1$
+	                 I18n.gettext("field read info"), // description //$NON-NLS-1$
+	                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
 	                 null,
 	                 null, // menu
 	                 cnodes, // sub nodes
@@ -418,9 +419,9 @@
 	      
 	      TreeNode[] fieldRwNodes = (TreeNode[]) fieldReadWriteNodes.toArray(new TreeNode[fieldReadWriteNodes.size()]);
 	      nodes.add(createTreeNode(
-               "Fields", //name
-               "field info", //description
-               "images/starfolder.gif", // Icon URL
+               I18n.gettext("Fields"), //name //$NON-NLS-1$
+               I18n.gettext("field info"), //description //$NON-NLS-1$
+               "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                null,
                null, // menu
                fieldRwNodes, // sub nodes
@@ -448,11 +449,11 @@
             if (chain != null && chain.length > 0)
             {
                conNodes.add(createTreeNode(
-                       "Interceptors",
-                       "Execution Interceptors",
-                       "images/service.gif", // Icon URL
-                       "AOPConstructorChain.jsp?classname=" + java.net.URLEncoder.encode(con.getDeclaringClass().getName())
-                       + "&constructor=" + i,
+                       I18n.gettext("Interceptors"), //$NON-NLS-1$
+                       I18n.gettext("Execution Interceptors"), //$NON-NLS-1$
+                       "images/service.gif", // Icon URL //$NON-NLS-1$
+                       "AOPConstructorChain.jsp?classname=" + java.net.URLEncoder.encode(con.getDeclaringClass().getName()) //$NON-NLS-1$
+                       + "&constructor=" + i, //$NON-NLS-1$
                        null, // menu
                        null, // sub nodes
                        null   // Sub-Resources
@@ -461,9 +462,9 @@
             if (conCallers != null)
             {
                conNodes.add(createTreeNode(
-                       "constructor callers",
-                       "constructor caller interceptions",
-                       "images/starfolder.gif", // Icon URL
+                       I18n.gettext("constructor callers"), //$NON-NLS-1$
+                       I18n.gettext("constructor caller interceptions"), //$NON-NLS-1$
+                       "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                        null,
                        null, // menu
                        createConstructorConstructorCallers(i, advisor, conCallers), // sub nodes
@@ -473,9 +474,9 @@
             if (methodCallers != null)
             {
                conNodes.add(createTreeNode(
-                       "method callers",
-                       "method caller interceptions",
-                       "images/starfolder.gif", // Icon URL
+                       I18n.gettext("method callers"), //$NON-NLS-1$
+                       I18n.gettext("method caller interceptions"), //$NON-NLS-1$
+                       "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                        null,
                        null, // menu
                        createConstructorMethodCallers(i, advisor, methodCallers), // sub nodes
@@ -485,8 +486,8 @@
             TreeNode[] cnodes = (TreeNode[]) conNodes.toArray(new TreeNode[conNodes.size()]);
             constructorNodes.add(createTreeNode(
                     shortenConstructor(advisor.getName(), con), // name
-                    "constructor info", // description
-                    "images/starfolder.gif", // Icon URL
+                    I18n.gettext("constructor info"), // description //$NON-NLS-1$
+                    "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                     null,
                     null, // menu
                     cnodes, // sub nodes
@@ -498,9 +499,9 @@
       {
          TreeNode[] cnodes = (TreeNode[]) constructorNodes.toArray(new TreeNode[constructorNodes.size()]);
          nodes.add(createTreeNode(
-                 "Constructors", // name
-                 "constructor info", // description
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Constructors"), // name //$NON-NLS-1$
+                 I18n.gettext("constructor info"), // description //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  cnodes, // sub nodes
@@ -526,11 +527,11 @@
          if (method.getInterceptors() != null && method.getInterceptors().length > 0  || methodCallers != null || conCallers != null)
          {
             mNodes.add(createTreeNode(
-                    "Interceptors",
-                    "Execution Interceptors",
-                    "images/service.gif", // Icon URL
-                    "AOPMethodChain.jsp?classname=" + java.net.URLEncoder.encode(advisor.getName())
-                    + "&method=" + keys[i],
+                    I18n.gettext("Interceptors"), //$NON-NLS-1$
+                    I18n.gettext("Execution Interceptors"), //$NON-NLS-1$
+                    "images/service.gif", // Icon URL //$NON-NLS-1$
+                    "AOPMethodChain.jsp?classname=" + java.net.URLEncoder.encode(advisor.getName()) //$NON-NLS-1$
+                    + "&method=" + keys[i], //$NON-NLS-1$
                     null, // menu
                     null, // sub nodes
                     null   // Sub-Resources
@@ -539,9 +540,9 @@
          if (conCallers != null)
          {
             mNodes.add(createTreeNode(
-                    "constructor callers",
-                    "constructor caller interceptions",
-                    "images/starfolder.gif", // Icon URL
+                    I18n.gettext("constructor callers"), //$NON-NLS-1$
+                    I18n.gettext("constructor caller interceptions"), //$NON-NLS-1$
+                    "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                     null,
                     null, // menu
                     createMethodConstructorCallers(key, advisor, conCallers), // sub nodes
@@ -551,9 +552,9 @@
          if (methodCallers != null)
          {
             mNodes.add(createTreeNode(
-                    "method callers",
-                    "method caller interceptions",
-                    "images/starfolder.gif", // Icon URL
+                    I18n.gettext("method callers"), //$NON-NLS-1$
+                    I18n.gettext("method caller interceptions"), //$NON-NLS-1$
+                    "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                     null,
                     null, // menu
                     createMethodMethodCallers(key, advisor, methodCallers), // sub nodes
@@ -563,8 +564,8 @@
          TreeNode[] mnodes = (TreeNode[]) mNodes.toArray(new TreeNode[mNodes.size()]);
          methodNodes.add(createTreeNode(
                  shortenMethod(advisor.getName(), method.getAdvisedMethod()), // name
-                 "method info", // description
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("method info"), // description //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  mnodes, // sub nodes
@@ -575,9 +576,9 @@
       {
          TreeNode[] cnodes = (TreeNode[]) methodNodes.toArray(new TreeNode[methodNodes.size()]);
          nodes.add(createTreeNode(
-                 "Methods", // name
-                 "method info", // description
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Methods"), // name //$NON-NLS-1$
+                 I18n.gettext("method info"), // description //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  cnodes, // sub nodes
@@ -593,9 +594,9 @@
       {
          TreeNode[] introductionNodes = getIntroductions(advisor);
          TreeNode introductionsNode = createTreeNode(
-                 "Introductions", // name
-                 "Introductions for " + advisor.getName(), // description
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Introductions"), // name //$NON-NLS-1$
+                 I18n.gettext("Introductions for {0}", advisor.getName()), // description //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  introductionNodes, // sub nodes
@@ -620,9 +621,12 @@
             CallerMethodInfo caller = (CallerMethodInfo) values[i];
             nodes.add(createTreeNode(
                     caller.getMethod().toString(),
-                    "caller interceptions",
-                    "images/service.gif", // Icon URL
-                    "AOPConstructorMethodCallerChain.jsp?index=" + index + "&hash=" + java.net.URLEncoder.encode(Long.toString(keys[i])) + "&classname=" + java.net.URLEncoder.encode(advisor.getName()) + "&calledclassname=" + java.net.URLEncoder.encode(calledClass),
+                    I18n.gettext("caller interceptions"), //$NON-NLS-1$
+                    "images/service.gif", // Icon URL //$NON-NLS-1$
+                    "AOPConstructorMethodCallerChain.jsp?index=" + index  //$NON-NLS-1$
+                    + "&hash=" + java.net.URLEncoder.encode(Long.toString(keys[i]))  //$NON-NLS-1$
+                    + "&classname=" + java.net.URLEncoder.encode(advisor.getName())  //$NON-NLS-1$
+                    + "&calledclassname=" + java.net.URLEncoder.encode(calledClass), //$NON-NLS-1$
                     null, // menu
                     null, // sub nodes
                     null   // Sub-Resources
@@ -647,9 +651,12 @@
             CallerConstructorInfo caller = (CallerConstructorInfo) values[i];
             nodes.add(createTreeNode(
                     caller.getConstructor().toString(),
-                    "caller interceptions",
-                    "images/service.gif", // Icon URL
-                    "AOPConstructorConstructorCallerChain.jsp?index=" + index + "&hash=" + java.net.URLEncoder.encode(Long.toString(keys[i])) + "&classname=" + java.net.URLEncoder.encode(advisor.getName()) + "&calledclassname=" + java.net.URLEncoder.encode(calledClass),
+                    I18n.gettext("caller interceptions"), //$NON-NLS-1$
+                    "images/service.gif", // Icon URL //$NON-NLS-1$
+                    "AOPConstructorConstructorCallerChain.jsp?index=" + index  //$NON-NLS-1$
+                    + "&hash=" + java.net.URLEncoder.encode(Long.toString(keys[i]))  //$NON-NLS-1$
+                    + "&classname=" + java.net.URLEncoder.encode(advisor.getName())  //$NON-NLS-1$
+                    + "&calledclassname=" + java.net.URLEncoder.encode(calledClass), //$NON-NLS-1$
                     null, // menu
                     null, // sub nodes
                     null   // Sub-Resources
@@ -674,9 +681,12 @@
             CallerMethodInfo caller = (CallerMethodInfo) values[i];
             nodes.add(createTreeNode(
                     caller.getMethod().toString(),
-                    "caller interceptions",
-                    "images/service.gif", // Icon URL
-                    "AOPMethodMethodCallerChain.jsp?callinghash=" + callingHash + "&hash=" + java.net.URLEncoder.encode(Long.toString(keys[i])) + "&classname=" + java.net.URLEncoder.encode(advisor.getName()) + "&calledclassname=" + java.net.URLEncoder.encode(calledClass),
+                    I18n.gettext("caller interceptions"), //$NON-NLS-1$
+                    "images/service.gif", // Icon URL //$NON-NLS-1$
+                    "AOPMethodMethodCallerChain.jsp?callinghash=" + callingHash  //$NON-NLS-1$
+                    + "&hash=" + java.net.URLEncoder.encode(Long.toString(keys[i]))  //$NON-NLS-1$
+                    + "&classname=" + java.net.URLEncoder.encode(advisor.getName())  //$NON-NLS-1$
+                    + "&calledclassname=" + java.net.URLEncoder.encode(calledClass), //$NON-NLS-1$
                     null, // menu
                     null, // sub nodes
                     null   // Sub-Resources
@@ -701,9 +711,12 @@
             CallerConstructorInfo caller = (CallerConstructorInfo) values[i];
             nodes.add(createTreeNode(
                     caller.getConstructor().toString(),
-                    "caller interceptions",
-                    "images/service.gif", // Icon URL
-                    "AOPMethodConstructorCallerChain.jsp?callinghash=" + callingHash + "&hash=" + java.net.URLEncoder.encode(Long.toString(keys[i])) + "&classname=" + java.net.URLEncoder.encode(advisor.getName()) + "&calledclassname=" + java.net.URLEncoder.encode(calledClass),
+                    I18n.gettext("caller interceptions"), //$NON-NLS-1$
+                    "images/service.gif", // Icon URL //$NON-NLS-1$
+                    "AOPMethodConstructorCallerChain.jsp?callinghash=" + callingHash  //$NON-NLS-1$
+                    + "&hash=" + java.net.URLEncoder.encode(Long.toString(keys[i]))  //$NON-NLS-1$
+                    + "&classname=" + java.net.URLEncoder.encode(advisor.getName())  //$NON-NLS-1$
+                    + "&calledclassname=" + java.net.URLEncoder.encode(calledClass), //$NON-NLS-1$
                     null, // menu
                     null, // sub nodes
                     null   // Sub-Resources
@@ -724,9 +737,9 @@
          {
             unbounded.add(createTreeNode(
                     binding.getName(),
-                    "Unbounded Binding",
-                    "images/service.gif", // Icon URL
-                    "AOPBinding.jsp?binding=" + java.net.URLEncoder.encode(binding.getName()),
+                    I18n.gettext("Unbounded Binding"), //$NON-NLS-1$
+                    "images/service.gif", // Icon URL //$NON-NLS-1$
+                    "AOPBinding.jsp?binding=" + java.net.URLEncoder.encode(binding.getName()), //$NON-NLS-1$
                     null, // menu
                     null, // sub nodes
                     null   // Sub-Resources
@@ -749,8 +762,8 @@
          Package p = (Package) entry.getValue();
          nodes.add(createTreeNode(
                  pkgName, // name
-                 "Package " + pkgName, // description
-                 "images/starfolder.gif", // Icon URL
+                 I18n.gettext("Package {0}", pkgName), // description //$NON-NLS-1$
+                 "images/starfolder.gif", // Icon URL //$NON-NLS-1$
                  null, // Default URL
                  null, // menu
                  createAOPNodes(p), // sub nodes
@@ -765,8 +778,8 @@
          ClassAdvisor advisor = (ClassAdvisor) entry.getValue();
          nodes.add(createTreeNode(
                  classname, // name
-                 "Class " + classname, // description
-                 "images/serviceset.gif", // Icon URL
+                 I18n.gettext("Class {0}", classname), // description //$NON-NLS-1$
+                 "images/serviceset.gif", // Icon URL //$NON-NLS-1$
                  null,
                  null, // menu
                  createAdvisorNodes(advisor), // sub nodes
@@ -794,27 +807,27 @@
          TreeNode[] unbounded = getUnboundBindings();
          TreeNode[] children = new TreeNode[2];
          children[0] = createTreeNode(
-                 "Classes", // name
-                 "Display all Classes", // description
-                 "images/serviceset.gif", // Icon URL
+                 I18n.gettext("Classes"), // name //$NON-NLS-1$
+                 I18n.gettext("Display all Classes"), // description //$NON-NLS-1$
+                 "images/serviceset.gif", // Icon URL //$NON-NLS-1$
                  null, // Default URL
                  null,
                  createAOPNodes(Package.aopClassMap()), // sub nodes
                  null   // Sub-Resources
          );
          children[1] = createTreeNode(
-                 "Unbound Bindings", // name
-                 "Unbound Bindings", // description
-                 "images/serviceset.gif", // Icon URL
+                 I18n.gettext("Unbound Bindings"), // name //$NON-NLS-1$
+                 I18n.gettext("Unbound Bindings"), // description //$NON-NLS-1$
+                 "images/serviceset.gif", // Icon URL //$NON-NLS-1$
                  null, // Default URL
                  null,
                  unbounded, // sub nodes
                  null   // Sub-Resources
          );
          return createTreeNode (
-               "AOP", // name
-               "AOP Management", // description
-               "images/spirale32.gif", // Icon URL
+               I18n.gettext("AOP"), // name //$NON-NLS-1$
+               I18n.gettext("AOP Management"), // description //$NON-NLS-1$
+               "images/spirale32.gif", // Icon URL //$NON-NLS-1$
                null, // Default URL
                null,
                children,
@@ -830,23 +843,23 @@
    
    public static String outputChain(Interceptor[] chain)
    {
-      String output = "";
+      String output = ""; //$NON-NLS-1$
       for (int i = 0; i < chain.length; i++)
       {
-         output += "<tr>";
+         output += "<tr>"; //$NON-NLS-1$
          if (chain[i] instanceof AbstractAdvice)
          {
-            output +="<td><font size=\"1\">advice</font></td><td><font size=\"1\">" + chain[i].getName() + "</font></td>";
+            output +="<td><font size=\"1\">advice</font></td><td><font size=\"1\">" + chain[i].getName() + "</font></td>"; //$NON-NLS-2$
          }
          else if (chain[i] instanceof CFlowInterceptor)
          {
-            output +="<td><font size=\"1\">cflow</font></td><td><font size=\"1\">" + ((CFlowInterceptor) chain[i]).getCFlowString() + "</font></td>";
+            output +="<td><font size=\"1\">cflow</font></td><td><font size=\"1\">" + ((CFlowInterceptor) chain[i]).getCFlowString() + "</font></td>"; //$NON-NLS-2$
          }
          else
          {
-            output +="<td><font size=\"1\">interceptor</font></td><td><font size=\"1\">" + chain[i].getClass().getName() + "</font></td>";
+            output +="<td><font size=\"1\">interceptor</font></td><td><font size=\"1\">" + chain[i].getClass().getName() + "</font></td>"; //$NON-NLS-2$
          }
-         output += "</tr>";
+         output += "</tr>"; //$NON-NLS-1$
       }
       return output;
    }
@@ -867,7 +880,7 @@
 
 	  RefreshPoller()
 	  {
-		 setName("AOPListner");
+		 setName("AOPListner"); //$NON-NLS-1$
 		 setDaemon(true);
 	  }
    	 
@@ -929,10 +942,10 @@
    {
       public static ClassAdvisor getAdvisor(String classname)
       {
-         String[] name = classname.split("\\.");
+         String[] name = classname.split("\\."); //$NON-NLS-1$
          Package root = Package.aopClassMap();
          
-         if (!root.name.equals("classes"))throw new RuntimeException("Did not get expected root 'classes'"); 
+         if (!root.name.equals("classes"))throw new RuntimeException("Did not get expected root 'classes'");  //$NON-NLS-1$ //$NON-NLS-2$
          
          for (Iterator it = root.packages.entrySet().iterator() ; it.hasNext() ; )
          {
Index: console/src/main/org/jboss/console/plugins/UCLLister.java
===================================================================
--- console/src/main/org/jboss/console/plugins/UCLLister.java	(revision 73826)
+++ console/src/main/org/jboss/console/plugins/UCLLister.java	(working copy)
@@ -21,13 +21,14 @@
   */
 package org.jboss.console.plugins;
 
+import javax.management.ObjectInstance;
+
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.ManageableResource;
 import org.jboss.console.manager.interfaces.ResourceTreeNode;
 import org.jboss.console.manager.interfaces.TreeNode;
 import org.jboss.console.plugins.helpers.AbstractPluginWrapper;
 
-import javax.management.ObjectInstance;
-
 /**
  * As the number of UCL can be very big, we use a real Java class which is far
  * faster than beanshell
@@ -52,13 +53,13 @@
    
    ResourceTreeNode createUCLSubResource (ObjectInstance instance) throws Exception
    {
-      String uclName = instance.getObjectName().getKeyProperty ("UCL");
+      String uclName = instance.getObjectName().getKeyProperty ("UCL"); //$NON-NLS-1$
             
       return createResourceNode ( 
-            "UCL " + uclName, // name
-            "UCL with id " + uclName, // description
-            "images/service.gif", // Icon URL
-            "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + encode(instance.getObjectName().toString()), // Default URL
+            I18n.gettext("UCL {0}", uclName), // name //$NON-NLS-1$
+            I18n.gettext("UCL with id {0}", uclName), // description //$NON-NLS-1$
+            "images/service.gif", // Icon URL //$NON-NLS-1$
+            "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + encode(instance.getObjectName().toString()), // Default URL //$NON-NLS-1$
             null,
             null,
             null,
@@ -69,8 +70,8 @@
    ResourceTreeNode[] createUCLSubResources ()  throws Exception
    {
       ObjectInstance[] insts = 
-         getMBeansForClass("jmx.loading:*", 
-            "org.jboss.mx.loading.UnifiedClassLoader3");
+         getMBeansForClass("jmx.loading:*",  //$NON-NLS-1$
+            "org.jboss.mx.loading.UnifiedClassLoader3"); //$NON-NLS-1$
       
       ResourceTreeNode[] result = new ResourceTreeNode[insts.length];
       for (int i=0; i<result.length; i++)
@@ -86,9 +87,9 @@
       try
       {
          return createTreeNode (
-               "Unified ClassLoaders", // name
-               "Display all JBoss UCLs", // description
-               "images/recycle.gif", // Icon URL
+               I18n.gettext("Unified ClassLoaders"), // name //$NON-NLS-1$
+               I18n.gettext("Display all JBoss UCLs"), // description //$NON-NLS-1$
+               "images/recycle.gif", // Icon URL //$NON-NLS-1$
                null, // Default URL
                null,
                null, // sub nodes
Index: console/src/main/org/jboss/console/plugins/WebModuleLister.java
===================================================================
--- console/src/main/org/jboss/console/plugins/WebModuleLister.java	(revision 73826)
+++ console/src/main/org/jboss/console/plugins/WebModuleLister.java	(working copy)
@@ -23,6 +23,7 @@
 
 import javax.management.ObjectName;
 
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.ManageableResource;
 import org.jboss.console.manager.interfaces.ResourceTreeNode;
 import org.jboss.console.manager.interfaces.TreeNode;
@@ -51,7 +52,7 @@
 {
    private static final long serialVersionUID = -8019251323455453105L;
 
-   protected final static String JMX_JSR77_DOMAIN = "jboss.management.local";
+   protected final static String JMX_JSR77_DOMAIN = "jboss.management.local"; //$NON-NLS-1$
    
    public WebModuleLister () { super(); }
       
@@ -66,13 +67,13 @@
       for (int i=0; i< servletsObjectName.length; i++)
       {
          ObjectName objectName = new ObjectName(servletsObjectName[i]);
-          String name = objectName.getKeyProperty("name");
+          String name = objectName.getKeyProperty("name"); //$NON-NLS-1$
 
           servlets[i] = createResourceNode(
                   name,  // name
-               "'" + name + "' Servlet", // description
-               "images/serviceset.gif", // Icon URL
-               "Servlet.jsp?ObjectName=" + encode(objectName.toString()), // Default URL
+               I18n.gettext("''{0}'' Servlet", name), // description //$NON-NLS-1$
+               "images/serviceset.gif", // Icon URL //$NON-NLS-1$
+               "Servlet.jsp?ObjectName=" + encode(objectName.toString()), // Default URL //$NON-NLS-1$
                null,
                null, // sub nodes
                null,   // Sub-Resources
@@ -93,10 +94,10 @@
 
          return createTreeNode
             (
-               objName.getKeyProperty("name"),  // name
-               "", // description
-               "images/spirale.gif", // Icon URL
-               "WebModule.jsp?ObjectName=" + encode(objName.toString()), // Default URL
+               objName.getKeyProperty("name"),  // name //$NON-NLS-1$
+               "", // description //$NON-NLS-1$
+               "images/spirale.gif", // Icon URL //$NON-NLS-1$
+               "WebModule.jsp?ObjectName=" + encode(objName.toString()), // Default URL //$NON-NLS-1$
                null,
                null, // sub nodes
                createBeans (objName)   // Sub-Resources                  
Index: console/src/main/org/jboss/console/plugins/MBeansLister.java
===================================================================
--- console/src/main/org/jboss/console/plugins/MBeansLister.java	(revision 73826)
+++ console/src/main/org/jboss/console/plugins/MBeansLister.java	(working copy)
@@ -21,22 +21,24 @@
   */
 package org.jboss.console.plugins;
 
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import javax.management.MBeanAttributeInfo;
+import javax.management.ObjectName;
+
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.ManageableResource;
 import org.jboss.console.manager.interfaces.TreeNode;
 import org.jboss.console.manager.interfaces.TreeNodeMenuEntry;
 import org.jboss.console.manager.interfaces.impl.GraphMBeanAttributeAction;
+import org.jboss.console.manager.interfaces.impl.HttpLinkTreeAction;
 import org.jboss.console.manager.interfaces.impl.SimpleTreeNodeMenuEntryImpl;
-import org.jboss.console.manager.interfaces.impl.HttpLinkTreeAction;
 import org.jboss.console.plugins.helpers.AbstractPluginWrapper;
 import org.jboss.console.plugins.helpers.jmx.DomainData;
 import org.jboss.console.plugins.helpers.jmx.MBeanData;
 import org.jboss.console.plugins.helpers.jmx.Server;
-
-import javax.management.MBeanAttributeInfo;
-import javax.management.ObjectName;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.HashSet;
 /**
  * As the number of MBeans is very big, we use a real Java class which is far
  * faster than beanshell
@@ -60,16 +62,16 @@
 
    static
    {
-      graphableClasses.add("java.lang.Integer");
-      graphableClasses.add("java.lang.Short");
-      graphableClasses.add("java.lang.Double");
-      graphableClasses.add("java.lang.Float");
-      graphableClasses.add("java.lang.Long");
-      graphableClasses.add("int");
-      graphableClasses.add("short");
-      graphableClasses.add("double");
-      graphableClasses.add("float");
-      graphableClasses.add("long");
+      graphableClasses.add("java.lang.Integer"); //$NON-NLS-1$
+      graphableClasses.add("java.lang.Short"); //$NON-NLS-1$
+      graphableClasses.add("java.lang.Double"); //$NON-NLS-1$
+      graphableClasses.add("java.lang.Float"); //$NON-NLS-1$
+      graphableClasses.add("java.lang.Long"); //$NON-NLS-1$
+      graphableClasses.add("int"); //$NON-NLS-1$
+      graphableClasses.add("short"); //$NON-NLS-1$
+      graphableClasses.add("double"); //$NON-NLS-1$
+      graphableClasses.add("float"); //$NON-NLS-1$
+      graphableClasses.add("long"); //$NON-NLS-1$
    }
    public MBeansLister () { super(); }
 
@@ -78,20 +80,20 @@
       TreeNodeMenuEntry[] entries = null;
       if (graphableClasses.contains(attr.getType()))
       {
-         SimpleTreeNodeMenuEntryImpl entry = new SimpleTreeNodeMenuEntryImpl("graph", new GraphMBeanAttributeAction(mbeanName, attr.getName()));
-         SimpleTreeNodeMenuEntryImpl entry2 = new SimpleTreeNodeMenuEntryImpl("create monitor", new HttpLinkTreeAction(
-                 "/web-console/createThresholdMonitor.jsp?attribute=" + attr.getName() + "&objectName=" + encode(mbeanName.toString())));
-         SimpleTreeNodeMenuEntryImpl entry3 = new SimpleTreeNodeMenuEntryImpl("create snapshot", new HttpLinkTreeAction(
-                 "/web-console/createSnapshot.jsp?attribute=" + attr.getName() + "&objectName=" + encode(mbeanName.toString())));
+         SimpleTreeNodeMenuEntryImpl entry = new SimpleTreeNodeMenuEntryImpl(I18n.gettext("graph"), new GraphMBeanAttributeAction(mbeanName, attr.getName())); //$NON-NLS-1$
+         SimpleTreeNodeMenuEntryImpl entry2 = new SimpleTreeNodeMenuEntryImpl(I18n.gettext("create monitor"), new HttpLinkTreeAction( //$NON-NLS-1$
+                 "/web-console/createThresholdMonitor.jsp?attribute=" + attr.getName() + "&objectName=" + encode(mbeanName.toString())));  //$NON-NLS-1$//$NON-NLS-2$
+         SimpleTreeNodeMenuEntryImpl entry3 = new SimpleTreeNodeMenuEntryImpl(I18n.gettext("create snapshot"), new HttpLinkTreeAction( //$NON-NLS-1$
+                 "/web-console/createSnapshot.jsp?attribute=" + attr.getName() + "&objectName=" + encode(mbeanName.toString())));  //$NON-NLS-1$//$NON-NLS-2$
          entries = new TreeNodeMenuEntry[3];
          entries[0] = entry;
          entries[1] = entry2;
          entries[2] = entry3;
       }
-      else if (attr.getType().equals("String") || attr.getType().equals("java.lang.String"))
+      else if (attr.getType().equals("String") || attr.getType().equals("java.lang.String"))  //$NON-NLS-1$//$NON-NLS-2$
       {
-         SimpleTreeNodeMenuEntryImpl entry = new SimpleTreeNodeMenuEntryImpl("create monitor", new HttpLinkTreeAction(
-                 "/web-console/createStringThresholdMonitor.jsp?attribute=" + attr.getName() + "&objectName=" + encode(mbeanName.toString())));
+         SimpleTreeNodeMenuEntryImpl entry = new SimpleTreeNodeMenuEntryImpl(I18n.gettext("create monitor"), new HttpLinkTreeAction( //$NON-NLS-1$
+                 "/web-console/createStringThresholdMonitor.jsp?attribute=" + attr.getName() + "&objectName=" + encode(mbeanName.toString()))); //$NON-NLS-1$ //$NON-NLS-2$
          entries = new TreeNodeMenuEntry[1];
          entries[0] = entry;
       }
@@ -99,8 +101,8 @@
       return createTreeNode(
               attr.getName(),
               attr.getDescription(),
-              "images/container.gif",
-              "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + encode("" + mbeanName), // Default URL
+              "images/container.gif", //$NON-NLS-1$
+              "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + encode("" + mbeanName), // Default URL //$NON-NLS-1$ //$NON-NLS-2$
               entries,
               null,
               null
@@ -110,13 +112,13 @@
    }
    TreeNode createJmxMBeanSubResources (MBeanData data) throws Exception
    {
-      String name = "" + data.getObjectName();
+      String name = "" + data.getObjectName(); //$NON-NLS-1$
       String displayName = data.getName ();
             
       if (displayName == null)
       {
          // Get ride of the domain name because it is already is the header
-         int index = name.indexOf( ":" );
+         int index = name.indexOf( ":" ); //$NON-NLS-1$
          displayName = ( index >= 0 ) ? name.substring( index + 1 ) : name;
       }
 
@@ -130,8 +132,8 @@
       return createTreeNode (
             displayName, // name
             name, // description
-            "images/server.gif", // Icon URL
-            "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + encode(name), // Default URL
+            "images/server.gif", // Icon URL //$NON-NLS-1$
+            "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + encode(name), // Default URL //$NON-NLS-1$
             null,
             attrNodes,
             null
@@ -162,14 +164,14 @@
 
          TreeNodeMenuEntry[] menu = createMenus (new String[] 
             {
-               "Number of MBeans: " + data.length, null,
+               I18n.gettext("Number of MBeans: {0}", data.length), null, //$NON-NLS-1$
             }
          );
          
          domains.add(createTreeNode (
                domainName, // name
-               "MBeans for domain " + domainName, // description
-               "images/serviceset.gif", // Icon URL
+               I18n.gettext("MBeans for domain {0}", domainName), // description //$NON-NLS-1$
+               "images/serviceset.gif", // Icon URL //$NON-NLS-1$
                null, // Default URL
                menu, // menu
                subResources, // sub nodes
@@ -196,10 +198,10 @@
       try
       {
          return createTreeNode (
-               "JMX MBeans", // name
-               "Display all JMX MBeans", // description
-               "images/flash.gif", // Icon URL
-               "/jmx-console/HtmlAdaptor?action=displayMBeans", // Default URL
+               I18n.gettext("JMX MBeans"), // name //$NON-NLS-1$
+               I18n.gettext("Display all JMX MBeans"), // description //$NON-NLS-1$
+               "images/flash.gif", // Icon URL //$NON-NLS-1$
+               "/jmx-console/HtmlAdaptor?action=displayMBeans", // Default URL //$NON-NLS-1$
                null,
                createJmxDomainsSubNodes (), // sub nodes
                null   // Sub-Resources                  
Index: console/src/main/org/jboss/console/plugins/MonitorLister.java
===================================================================
--- console/src/main/org/jboss/console/plugins/MonitorLister.java	(revision 73826)
+++ console/src/main/org/jboss/console/plugins/MonitorLister.java	(working copy)
@@ -28,6 +28,7 @@
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.ManageableResource;
 import org.jboss.console.manager.interfaces.TreeNode;
 import org.jboss.console.plugins.helpers.AbstractPluginWrapper;
@@ -50,7 +51,7 @@
    {
       MBeanServer mbeanServer = getMBeanServer();
       InstanceOfQueryExp queryExp = null;
-      queryExp = new InstanceOfQueryExp("org.jboss.monitor.JBossMonitorMBean");
+      queryExp = new InstanceOfQueryExp("org.jboss.monitor.JBossMonitorMBean"); //$NON-NLS-1$
       Set monitors = mbeanServer.queryNames(null, queryExp);
       Iterator mbeans = monitors.iterator();;
       
@@ -63,26 +64,27 @@
       while( mbeans.hasNext() )
       {
          ObjectName mbean = (ObjectName)mbeans.next();
-         String monitorName = (String)mbeanServer.getAttribute(mbean, "MonitorName");
-         boolean alerted = ((Boolean)mbeanServer.invoke(mbean, "alerted", emptyArgs, emptySig)).booleanValue();
+         String monitorName = (String)mbeanServer.getAttribute(mbean, "MonitorName"); //$NON-NLS-1$
+         boolean alerted = ((Boolean)mbeanServer.invoke(mbean, "alerted", emptyArgs, emptySig)).booleanValue(); //$NON-NLS-1$
          //String image = alerted ? "images/red_bullet.gif" : "images/green_bullet.gif";
-         String image = "images/service.gif";
-         Object[] args = {"monitors", monitorName, "-service.xml"};
-         String[] signature = {"java.lang.String", "java.lang.String", "java.lang.String"};
-         Object rtn = mbeanServer.invoke(new ObjectName("jboss.admin:service=DeploymentFileRepository"), "isStored", args, signature);
+         String image = "images/service.gif"; //$NON-NLS-1$
+         Object[] args = {"monitors", monitorName, "-service.xml"}; //$NON-NLS-1$ //$NON-NLS-2$
+         String[] signature = {"java.lang.String", "java.lang.String", "java.lang.String"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+         Object rtn = mbeanServer.invoke(new ObjectName("jboss.admin:service=DeploymentFileRepository"), "isStored", args, signature); //$NON-NLS-1$ //$NON-NLS-2$
          boolean persisted = ((Boolean)rtn).booleanValue();
-         String url = "";
+         String url = ""; //$NON-NLS-1$
          if (persisted)
          {
-            url = "manageThresholdMonitor.jsp?monitorObjectName=" + encode(mbean.toString());
+            url = "manageThresholdMonitor.jsp?monitorObjectName=" + encode(mbean.toString()); //$NON-NLS-1$
          }
          else
          {
-            url = "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" +encode(mbean.toString());
+            url = "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" +encode(mbean.toString()); //$NON-NLS-1$
          }
          monitorNodes.add(createTreeNode (
                monitorName, // name
-               "Alert Monitor " + monitorName, // description
+               // TODO consider "marking" strings here (for xgettext), but only translating them when they are used on the client 
+               I18n.gettext("Alert Monitor {0}", monitorName), // description //$NON-NLS-1$
                image, // Icon URL
                url, // Default URL
                null, // menu
@@ -109,7 +111,7 @@
    {
       MBeanServer mbeanServer = getMBeanServer();
       InstanceOfQueryExp queryExp = null;
-      queryExp = new InstanceOfQueryExp("org.jboss.monitor.SnapshotRecordingMonitorMBean");
+      queryExp = new InstanceOfQueryExp("org.jboss.monitor.SnapshotRecordingMonitorMBean"); //$NON-NLS-1$
       Set monitors = mbeanServer.queryNames(null, queryExp);
       Iterator mbeans = monitors.iterator();;
 
@@ -120,12 +122,12 @@
       while( mbeans.hasNext() )
       {
          ObjectName mbean = (ObjectName)mbeans.next();
-         String monitorName = (String)mbeanServer.getAttribute(mbean, "MonitorName");
-         String url = "manageSnapshot.jsp?monitorObjectName=" + encode(mbean.toString());
-         String image = "images/service.gif";
+         String monitorName = (String)mbeanServer.getAttribute(mbean, "MonitorName"); //$NON-NLS-1$
+         String url = "manageSnapshot.jsp?monitorObjectName=" + encode(mbean.toString()); //$NON-NLS-1$
+         String image = "images/service.gif"; //$NON-NLS-1$
          monitorNodes.add(createTreeNode (
                monitorName, // name
-               "Snapshot " + monitorName, // description
+               I18n.gettext("Snapshot {0}", monitorName), // description //$NON-NLS-1$
                image, // Icon URL
                url, // Default URL
                null, // menu
@@ -153,19 +155,19 @@
       TreeNode[] webSubNodes = new TreeNode[2];
       
       webSubNodes[0] = createTreeNode(
-            "Connector scoreboard", // name
-            "JBossWeb Connectors status scoreboard", // description
-            "images/smallnet.gif", // Icon URL
-            "status", // Default URL
+            I18n.gettext("Connector scoreboard"), // name //$NON-NLS-1$
+            I18n.gettext("JBossWeb Connectors status scoreboard"), // description //$NON-NLS-1$
+            "images/smallnet.gif", // Icon URL //$NON-NLS-1$
+            "status", // Default URL //$NON-NLS-1$
             null,
             null, // sub nodes
             null   // Sub-Resources
          );
       webSubNodes[1] = createTreeNode(
-            "Full status", // name
-            "JBossWeb complete status", // description
-            "images/smallnet.gif", // Icon URL
-            "status?full=true", // Default URL
+            I18n.gettext("Full status"), // name //$NON-NLS-1$
+            I18n.gettext("JBossWeb complete status"), // description //$NON-NLS-1$
+            "images/smallnet.gif", // Icon URL //$NON-NLS-1$
+            "status?full=true", // Default URL //$NON-NLS-1$
             null,
             null, // sub nodes
             null   // Sub-Resources
@@ -183,10 +185,10 @@
          if (isActiveAlarmTablePresent())
          {
             subNodeList.add(createTreeNode(
-                  "Alarm Table", // name
-                  "Alarm Table", // description
-                  "images/smallnet.gif", // icon URL
-                  "listActiveAlarmTable.jsp", // default URL
+                  I18n.gettext("Alarm Table"), // name //$NON-NLS-1$
+                  I18n.gettext("Alarm Table"), // description //$NON-NLS-1$
+                  "images/smallnet.gif", // icon URL //$NON-NLS-1$
+                  "listActiveAlarmTable.jsp", // default URL //$NON-NLS-1$
                   null,
                   null, // sub-nodes
                   null // sub-resources
@@ -194,19 +196,19 @@
          }
          
          subNodeList.add(createTreeNode(
-               "Monitor Alerts", // name
-               "Monitor Alerts", // description
-               "images/smallnet.gif", // Icon URL
-               "listMonitors.jsp", // Default URL
+               I18n.gettext("Monitor Alerts"), // name //$NON-NLS-1$
+               I18n.gettext("Monitor Alerts"), // description //$NON-NLS-1$
+               "images/smallnet.gif", // Icon URL //$NON-NLS-1$
+               "listMonitors.jsp", // Default URL //$NON-NLS-1$
                null,
                createMonitorSubNodes(), // sub nodes
                null   // Sub-Resources
             ));
          
          subNodeList.add(createTreeNode(
-               "Snapshots", // name
-               "Snapshot Monitors", // description
-               "images/smallnet.gif", // Icon URL
+               I18n.gettext("Snapshots"), // name //$NON-NLS-1$
+               I18n.gettext("Snapshot Monitors"), // description //$NON-NLS-1$
+               "images/smallnet.gif", // Icon URL //$NON-NLS-1$
                null, // Default URL
                null,
                createSnapshotSubNodes(), // sub nodes
@@ -214,9 +216,9 @@
             ));
          
          subNodeList.add(createTreeNode(
-               "Web Status", // name
-               "JBossWeb Connectors status", // description
-               "images/smallnet.gif", // Icon URL
+               I18n.gettext("Web Status"), // name //$NON-NLS-1$
+               I18n.gettext("JBossWeb Connectors status"), // description //$NON-NLS-1$
+               "images/smallnet.gif", // Icon URL //$NON-NLS-1$
                null, // Default URL
                null,
                createWebSubNodes(), // sub nodes
@@ -227,9 +229,9 @@
          TreeNode[] subnodes = (TreeNode[]) subNodeList.toArray(new TreeNode[subNodeList.size()]);
          
          return createTreeNode (
-               "Monitoring", // name
-               "Monitoring", // description
-               "images/smallnet.gif", // Icon URL
+               I18n.gettext("Monitoring"), // name //$NON-NLS-1$
+               I18n.gettext("Monitoring"), // description //$NON-NLS-1$
+               "images/smallnet.gif", // Icon URL //$NON-NLS-1$
                null, // Default URL
                null,
                subnodes, // sub nodes
Index: console/src/main/org/jboss/console/plugins/JMSLister.java
===================================================================
--- console/src/main/org/jboss/console/plugins/JMSLister.java	(revision 73826)
+++ console/src/main/org/jboss/console/plugins/JMSLister.java	(working copy)
@@ -24,6 +24,7 @@
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
 
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.ManageableResource;
 import org.jboss.console.manager.interfaces.ResourceTreeNode;
 import org.jboss.console.manager.interfaces.TreeNode;
@@ -39,7 +40,7 @@
 {
    private static final long serialVersionUID = -2428954274429502892L;
 
-   protected final static String JMX_JSR77_DOMAIN = "jboss.management.local";
+   protected final static String JMX_JSR77_DOMAIN = "jboss.management.local"; //$NON-NLS-1$
 
    public JMSLister()
    {
@@ -51,9 +52,9 @@
       try
       {
          ObjectName objName = ((MBeanResource) resource).getObjectName();
-         SimpleTreeNode node = createTreeNode(objName.getKeyProperty("name"), // name
-               "", // description
-               "images/spirale.gif", // Icon URL
+         SimpleTreeNode node = createTreeNode(objName.getKeyProperty("name"), // name //$NON-NLS-1$
+               "", // description //$NON-NLS-1$
+               "images/spirale.gif", // Icon URL //$NON-NLS-1$
                null, // Default URL									
                null, createDestinations(), // sub nodes 
                null // Sub-Resources                 
@@ -75,10 +76,10 @@
    {
       TreeNode[] destinations = new TreeNode[2];
 
-      destinations[0] = createTreeNode("Queues", "", "images/spirale.gif", null, null, null,
-            createDestinationItems("Queue"));
-      destinations[1] = createTreeNode("Topics", "", "images/spirale.gif", null, null, null,
-            createDestinationItems("Topic"));
+      destinations[0] = createTreeNode(I18n.gettext("Queues"), "", "images/spirale.gif", null, null, null, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+            createDestinationItems("Queue")); //$NON-NLS-1$
+      destinations[1] = createTreeNode(I18n.gettext("Topics"), "", "images/spirale.gif", null, null, null, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+            createDestinationItems("Topic")); //$NON-NLS-1$
 
       return destinations;
    }
@@ -90,7 +91,7 @@
     */
    private ResourceTreeNode[] createDestinationItems(String type) throws Exception
    {
-      ObjectInstance[] insts = getMBeansForQuery("jboss.mq.destination:service=" + type + ",*", null);
+      ObjectInstance[] insts = getMBeansForQuery("jboss.mq.destination:service=" + type + ",*", null);  //$NON-NLS-1$//$NON-NLS-2$
       ResourceTreeNode[] destinations = new ResourceTreeNode[insts.length];
       //JMSDestinationManager jmsServer = (JMSDestinationManager)this.mbeanServer.getAttribute(new ObjectName("jboss.mq:service=DestinationManager"), "Interceptor");
       for (int i = 0; i < insts.length; i++)
@@ -107,21 +108,21 @@
     */
    private ResourceTreeNode createDestinationItem(ObjectName objName) throws Exception
    {
-      String destinationName = objName.getKeyProperty("name");
-      String type = objName.getKeyProperty("service");
+      String destinationName = objName.getKeyProperty("name"); //$NON-NLS-1$
+      String type = objName.getKeyProperty("service"); //$NON-NLS-1$
       String className = this.mbeanServer.getMBeanInfo(objName).getClassName();
-      String fileName = "";
-      if (type.equalsIgnoreCase("Queue"))
+      String fileName = ""; //$NON-NLS-1$
+      if (type.equalsIgnoreCase("Queue")) //$NON-NLS-1$
       {
-         fileName = "Queue.jsp";
+         fileName = "Queue.jsp"; //$NON-NLS-1$
       }
-      else if (type.equalsIgnoreCase("Topic"))
+      else if (type.equalsIgnoreCase("Topic")) //$NON-NLS-1$
       {
-         fileName = "Topic.jsp";
+         fileName = "Topic.jsp"; //$NON-NLS-1$
       }
 
       ResourceTreeNode item = this.createResourceNode(destinationName, type, //Description Tooltip
-            "images/serviceset.gif", fileName + "?ObjectName=" + encode(objName.toString()), null, //menus 
+            "images/serviceset.gif", fileName + "?ObjectName=" + encode(objName.toString()), null, //menus  //$NON-NLS-1$ //$NON-NLS-2$
             null, //sub-nodes
             null, //sub-resources
             objName.toString(), className);
Index: console/src/main/org/jboss/console/navtree/RootWrapper.java
===================================================================
--- console/src/main/org/jboss/console/navtree/RootWrapper.java	(revision 73826)
+++ console/src/main/org/jboss/console/navtree/RootWrapper.java	(working copy)
@@ -23,6 +23,7 @@
 
 import java.util.Vector;
 
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.ManageableResource;
 import org.jboss.console.manager.interfaces.TreeAction;
 import org.jboss.console.manager.interfaces.TreeInfo;
@@ -96,7 +97,7 @@
          return null;
 
       if (sons[index] == null)
-         sons[index] = new StdNodeWrapper(realSons[index], tree, "");
+         sons[index] = new StdNodeWrapper(realSons[index], tree, ""); //$NON-NLS-1$
 
       return sons[index];
    }
@@ -128,7 +129,7 @@
 
    public String toString ()
    {
-      return "JBoss Management Console";
+      return I18n.gettext("JBoss Management Console"); //$NON-NLS-1$
    }
    
    public TreeAction getAssociatedAction ()
@@ -148,7 +149,7 @@
    
    public String getPath ()
    {
-      return "";
+      return ""; //$NON-NLS-1$
    }
    // Y overrides ---------------------------------------------------
    
Index: console/src/main/org/jboss/console/navtree/AppletBrowser.java
===================================================================
--- console/src/main/org/jboss/console/navtree/AppletBrowser.java	(revision 73826)
+++ console/src/main/org/jboss/console/navtree/AppletBrowser.java	(working copy)
@@ -22,15 +22,19 @@
 package org.jboss.console.navtree;
 
 import java.net.URL;
+import java.util.Locale;
 import java.util.Properties;
 
-import javax.swing.*;
+import javax.swing.JApplet;
+import javax.swing.JFrame;
 
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.SimpleTreeNodeMenuEntry;
 import org.jboss.console.manager.interfaces.TreeAction;
 import org.jboss.console.manager.interfaces.impl.HttpLinkTreeAction;
 import org.jboss.console.remote.AppletRemoteMBeanInvoker;
 import org.jboss.console.remote.SimpleRemoteMBeanInvoker;
+import org.jboss.varia.i18n.I18nUtil;
 
 /**
  * AdminTreeBrowser container for applets
@@ -45,7 +49,7 @@
    AdminTreeBrowser treeBrowser = null;   
    AppletAdminContext ctx = null;   
    
-   public static final String RIGHT_FRAME_NAME = "right";
+   public static final String RIGHT_FRAME_NAME = "right"; //$NON-NLS-1$
    protected String sessionId = null;
    protected String pmJmxName = null;
    
@@ -59,15 +63,10 @@
       try
       {
          ctx = new AppletAdminContext ();
-         
          initAppletParams();
-         
          treeBrowser = new AdminTreeBrowser (ctx);
-         
          initComponents ();
-         
          initRefreshThread ();
-         
       }
       catch (Exception e)
       {
@@ -82,15 +81,23 @@
    
    protected void initAppletParams()
    {
-      sessionId = getParameter("SessionId");
+      sessionId = getParameter("SessionId"); //$NON-NLS-1$
       if (sessionId != null)
-         sessionId = "jsessionid=" + sessionId;
+         sessionId = "jsessionid=" + sessionId; //$NON-NLS-1$
       else
-         sessionId = "";
+         sessionId = ""; //$NON-NLS-1$
 
-      this.pmJmxName = getParameter("PMJMXName");
+      this.pmJmxName = getParameter("PMJMXName"); //$NON-NLS-1$
       if( pmJmxName == null )
-         pmJmxName = "jboss.admin:service=PluginManager";
+         pmJmxName = "jboss.admin:service=PluginManager"; //$NON-NLS-1$
+      
+      String localeName = getParameter("locale"); //$NON-NLS-1$
+      if(localeName != null)
+      {
+         Locale locale = I18nUtil.toLocale(localeName);
+         setLocale(locale);
+         I18nUtil.setLocale(locale);
+      }
    }
 
    protected void initComponents()
@@ -109,8 +116,8 @@
    {
       try
       {         
-         String strRefreshSec = getParameter("RefreshTime");
-         if (strRefreshSec != null && !"".equals(strRefreshSec))
+         String strRefreshSec = getParameter("RefreshTime"); //$NON-NLS-1$
+         if (strRefreshSec != null && !"".equals(strRefreshSec)) //$NON-NLS-1$
          {
             final long refresh = Long.parseLong(strRefreshSec);
             Thread t = new Thread ( new Runnable()
@@ -152,7 +159,7 @@
    {
       JApplet applet = new AppletBrowser();
       applet.setStub(new MainAppletStub());
-      JFrame frame = new JFrame("Administration Console");
+      JFrame frame = new JFrame(I18n.gettext("Administration Console")); //$NON-NLS-1$
       frame.getContentPane().add(applet);
       frame.setSize(600, 500);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
@@ -173,14 +180,14 @@
       {
          //webHost = getCodeBase ().toString ();   
          java.net.URL root = getCodeBase();                        
-         webHost = root.getProtocol() + ":";
+         webHost = root.getProtocol() + ":"; //$NON-NLS-1$
          if (root.getAuthority() != null && root.getAuthority().length() > 0) {
-            webHost+="//";
+            webHost+="//"; //$NON-NLS-1$
             webHost+=root.getAuthority();
          }       
          
-         if (!webHost.endsWith ("/"))
-            webHost = webHost + "/";
+         if (!webHost.endsWith ("/")) //$NON-NLS-1$
+            webHost = webHost + "/"; //$NON-NLS-1$
             
          hostname = getCodeBase ().getHost ();
       }
@@ -192,7 +199,7 @@
             System.out.println (getCodeBase().toString() + "Invoker");
             try
             {
-               invoker = new AppletRemoteMBeanInvoker (getCodeBase().toString() + "Invoker");
+               invoker = new AppletRemoteMBeanInvoker (getCodeBase().toString() + "Invoker"); //$NON-NLS-1$
             }
             catch (Exception displayed)
             {
@@ -231,9 +238,9 @@
       public java.util.Properties getJndiProperties ()
       {
          Properties props = new Properties (); // to be improved? (to read from Applet properties and pass as parameter
-         props.setProperty ("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
-         props.setProperty ("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
-         props.setProperty ("java.naming.provider.url", hostname);
+         props.setProperty ("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); //$NON-NLS-1$ //$NON-NLS-2$
+         props.setProperty ("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); //$NON-NLS-1$ //$NON-NLS-2$
+         props.setProperty ("java.naming.provider.url", hostname); //$NON-NLS-1$
          
          return props;
       }
@@ -267,16 +274,16 @@
          if (target == null)
             return null;
          
-         if (!target.toLowerCase ().startsWith ("http"))
+         if (!target.toLowerCase ().startsWith ("http")) //$NON-NLS-1$
          {
-            if (target.startsWith ("/"))
+            if (target.startsWith ("/")) //$NON-NLS-1$
                target = target.substring (1);
             target = webHost + target;
             
-            if (target.indexOf("?") >= 0)
-                target = target + "&" + sessionId;
+            if (target.indexOf("?") >= 0) //$NON-NLS-1$
+                target = target + "&" + sessionId; //$NON-NLS-1$
             else
-                target = target + ";" + sessionId;
+                target = target + ";" + sessionId; //$NON-NLS-1$
          }
          
          return target;
Index: console/src/main/org/jboss/console/manager/PluginManager.java
===================================================================
--- console/src/main/org/jboss/console/manager/PluginManager.java	(revision 73826)
+++ console/src/main/org/jboss/console/manager/PluginManager.java	(working copy)
@@ -33,6 +33,7 @@
 import javax.management.ObjectName;
 import javax.naming.InitialContext;
 
+import org.jboss.console.I18n;
 import org.jboss.console.manager.interfaces.ConsolePlugin;
 import org.jboss.console.manager.interfaces.ManageableResource;
 import org.jboss.console.manager.interfaces.ResourceTreeNode;
@@ -68,13 +69,13 @@
    protected ArrayList plugins = new ArrayList ();
    protected ManageableResource bootstrapResource = null;
 
-   public String jndiName = "console/PluginManager";
+   public String jndiName = "console/PluginManager"; //$NON-NLS-1$
 
    protected long treeVersion = 0;
    protected HashMap currentTrees = new HashMap();
 
-   protected String mainLogoUrl = "/web-console/images/jboss.gif";
-   protected String mainLinkUrl = "http://www.jboss.org/forums/";
+   protected String mainLogoUrl = "/web-console/images/jboss.gif"; //$NON-NLS-1$
+   protected String mainLinkUrl = "http://www.jboss.org/forums/"; //$NON-NLS-1$
    protected boolean enableShutdown = true;
 
    // Static --------------------------------------------------------
@@ -214,8 +215,8 @@
          {
             TreeNodeMenuEntry[] base = new TreeNodeMenuEntry[]
             {
-               new SimpleTreeNodeMenuEntryImpl ("Update tree", new RefreshTreeAction (false)),
-               new SimpleTreeNodeMenuEntryImpl ("Force update tree", new RefreshTreeAction (true)),
+               new SimpleTreeNodeMenuEntryImpl (I18n.gettext("Update tree"), new RefreshTreeAction (false)), //$NON-NLS-1$
+               new SimpleTreeNodeMenuEntryImpl (I18n.gettext("Force update tree"), new RefreshTreeAction (true)), //$NON-NLS-1$
             };
 
             if (enableShutdown)
@@ -225,19 +226,19 @@
                      base[0],
                      base[1],
                      new SeparatorTreeNodeMenuEntry (),
-                     new SimpleTreeNodeMenuEntryImpl ("Shutdown JBoss instance",
-                        new MBeanAction (new ObjectName("jboss.system:type=Server"),
-                                          "shutdown", new Object[0], new String[0])
+					 new SimpleTreeNodeMenuEntryImpl (I18n.gettext("Shutdown JBoss instance"), //$NON-NLS-1$
+                        new MBeanAction (new ObjectName("jboss.system:type=Server"), //$NON-NLS-1$
+                                          "shutdown", new Object[0], new String[0]) //$NON-NLS-1$
                      ),
-                     new SimpleTreeNodeMenuEntryImpl ("Shutdown and Restart JBoss instance",
-                        new MBeanAction (new ObjectName("jboss.system:type=Server"),
-                                          "exit", new Object[] {new Integer (10)},
-                                          new String[] {"int"})
+					 new SimpleTreeNodeMenuEntryImpl (I18n.gettext("Shutdown and Restart JBoss instance"), //$NON-NLS-1$
+                        new MBeanAction (new ObjectName("jboss.system:type=Server"), //$NON-NLS-1$
+                                          "exit", new Object[] {new Integer (10)}, //$NON-NLS-1$
+                                          new String[] {"int"}) //$NON-NLS-1$
                      ),
-                     new SimpleTreeNodeMenuEntryImpl ("HALT and Restart JBoss instance",
-                        new MBeanAction (new ObjectName("jboss.system:type=Server"),
-                                          "halt", new Object[] {new Integer (10)},
-                                          new String[] {"int"})
+					 new SimpleTreeNodeMenuEntryImpl (I18n.gettext("HALT and Restart JBoss instance"), //$NON-NLS-1$
+                        new MBeanAction (new ObjectName("jboss.system:type=Server"), //$NON-NLS-1$
+                                          "halt", new Object[] {new Integer (10)}, //$NON-NLS-1$
+                                          new String[] {"int"}) //$NON-NLS-1$
                      )
                   }
                );
@@ -470,14 +471,14 @@
    protected void initNotificationReception () throws Exception
    {
       ObjectName mbsDelegate =
-         new ObjectName ("JMImplementation:type=MBeanServerDelegate");
+         new ObjectName ("JMImplementation:type=MBeanServerDelegate"); //$NON-NLS-1$
 
       NotificationFilter filter = new NotificationFilter ()
       {
          public boolean isNotificationEnabled (Notification n)
          {
-            return ( n.getType().equals("JMX.mbean.registered") ||
-                      n.getType().equals("JMX.mbean.unregistered") );
+            return ( n.getType().equals("JMX.mbean.registered") || //$NON-NLS-1$
+                      n.getType().equals("JMX.mbean.unregistered") ); //$NON-NLS-1$
          }
       };
 
Index: console/src/main/org/jboss/console/remote/InvokerServlet.java
===================================================================
--- console/src/main/org/jboss/console/remote/InvokerServlet.java	(revision 73826)
+++ console/src/main/org/jboss/console/remote/InvokerServlet.java	(working copy)
@@ -23,7 +23,9 @@
 
 import javax.servlet.ServletException;
 
+import org.jboss.console.I18n;
 
+
 /** This servlet accepts a post containing a MarshalledInvocation, extracts
  * the Invocation object, and then routes the invocation via JMX to either:
  * 1. the MBean specified via the invokerName ini parameter
@@ -43,10 +45,10 @@
    private static org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger (InvokerServlet.class);
    /** A serialized MarshalledInvocation */
    private static String REQUEST_CONTENT_TYPE =
-   "application/x-java-serialized-object; class=org.jboss.console.remote.RemoteMBeanInvocation";
+   "application/x-java-serialized-object; class=org.jboss.console.remote.RemoteMBeanInvocation"; //$NON-NLS-1$
    /** A serialized MarshalledValue */
    private static String RESPONSE_CONTENT_TYPE =
-   "application/x-java-serialized-object; class=org.jboss.invocation.MarshalledValue";
+   "application/x-java-serialized-object; class=org.jboss.invocation.MarshalledValue"; //$NON-NLS-1$
    private javax.management.MBeanServer mbeanServer;
    
    /** Initializes the servlet.
@@ -79,15 +81,15 @@
       boolean trace = log.isTraceEnabled ();
       if( trace )
       {
-         log.trace ("processRequest, ContentLength: "+request.getContentLength ());
-         log.trace ("processRequest, ContentType: "+request.getContentType ());
+         log.trace ("processRequest, ContentLength: "+request.getContentLength ()); //$NON-NLS-1$
+         log.trace ("processRequest, ContentType: "+request.getContentType ()); //$NON-NLS-1$
       }
       
       try
       {
          response.setContentType (RESPONSE_CONTENT_TYPE);
          // See if the request already has the MarshalledInvocation
-         Object mi = request.getAttribute ("RemoteMBeanInvocation");
+         Object mi = request.getAttribute ("RemoteMBeanInvocation"); //$NON-NLS-1$
          if( mi == null )
          {
             // Get the invocation from the post
@@ -119,7 +121,7 @@
       {
          t = org.jboss.mx.util.JMXExceptionDecoder.decode (t);
          org.jboss.invocation.InvocationException appException = new org.jboss.invocation.InvocationException (t);
-         log.debug ("Invoke threw exception", t);
+         log.debug ("Invoke threw exception", t); //$NON-NLS-1$
          // Marshall the exception
          response.resetBuffer ();
          org.jboss.invocation.MarshalledValue mv = new org.jboss.invocation.MarshalledValue (appException);
@@ -152,7 +154,7 @@
     */
    public String getServletInfo ()
    {
-      return "An HTTP to JMX MBeanServer servlet";
+      return I18n.gettext("An HTTP to JMX MBeanServer servlet"); //$NON-NLS-1$
    }
    
 }

Property changes on: console/src/resources/webconsole.war
___________________________________________________________________
Name: svn:ignore
   + _*.jsp


Index: console/src/resources/webconsole.war/Servlet.jsp
===================================================================
--- console/src/resources/webconsole.war/Servlet.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/Servlet.jsp	(working copy)
@@ -18,13 +18,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Servlet</title>
+<title>${messages["JBoss Management Console - Servlet"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -34,28 +34,28 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>Servlet</h3>
-				<h4>Name</h4>
+			<h3>${messages["Servlet"]}</h3>
+				<h4>${messages["Name"]}</h4>
 					<p><%=new ObjectName(servlet.getobjectName()).getKeyProperty("name")%> </p>
-				<h4>Servlet Statistics:</h4>
+				<h4>${messages["Servlet Statistics:"]}</h4>
 					<p>&nbsp;</p>
 
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td align="center">
-                    <h4 style="text-align: center">Min (ms)</h4>
+                    <h4 style="text-align: center">${messages["Min (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Max (ms)</h4>
+                    <h4 style="text-align: center">${messages["Max (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Average (ms)</h4>
+                    <h4 style="text-align: center">${messages["Average (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Total (ms)</h4>
+                    <h4 style="text-align: center">${messages["Total (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center"># Invocations</h4>
+                    <h4 style="text-align: center">${messages["# Invocations"]}</h4>
                     </td>
                   </tr>
 				<%
@@ -81,7 +81,7 @@
                     </td>
                   </tr>
             </table>
-            <p align="center"><a href="<%=resetUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>
+            <p align="center"><a href="<%=resetUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>
 					<p>&nbsp;</p>
 			<p>&nbsp;</p>
 
@@ -94,7 +94,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPFieldMetaData.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPFieldMetaData.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPFieldMetaData.jsp	(working copy)
@@ -10,14 +10,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar"> 
@@ -34,6 +33,6 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%">
-			<h3>Metadata for field <%=field%></h3>
+			<h3>${messages["Metadata for field {0}"][param.field]}</h3>
 	    <p>&nbsp;</p>
 <%@ include file="AOPMetaData.jsp" %>
Index: console/src/resources/webconsole.war/AOPDefaultMetaData.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPDefaultMetaData.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPDefaultMetaData.jsp	(working copy)
@@ -10,14 +10,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar"> 
@@ -33,6 +32,6 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%">
-			<h3><%=classname%> Default MetaData </h3>
+			<h3><%=classname%> ${messages["Default MetaData"]} </h3>
 	    <p>&nbsp;</p>
 <%@ include file="AOPMetaData.jsp" %>
Index: console/src/resources/webconsole.war/StatelessEjb.jsp
===================================================================
--- console/src/resources/webconsole.war/StatelessEjb.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/StatelessEjb.jsp	(working copy)
@@ -1,3 +1,4 @@
+<%@page import="org.jboss.console.I18n"%>
 <%@ taglib uri="/webconsole" prefix="jb" %>
 <jb:mbean id="ejb" intf="org.jboss.management.j2ee.StatelessSessionBeanMBean" />
 <jb:mbean id="container" mbean='<%="jboss.j2ee:service=EJB,jndiName=" + (new javax.management.ObjectName(request.getParameter("ObjectName")).getKeyProperty ("name"))%>' intf="org.jboss.ejb.ContainerMBean" />
@@ -33,22 +34,22 @@
 	String start = new java.util.Date(stat.getStartTime ()).toString ();
 	String lastSample = new java.util.Date(stat.getLastSampleTime ()).toString ();
 	
-	String result = "<tr><td width=\"25%\"><font size=\"1\">" + stat.getName() + " (unit: " + stat.getUnit () + ")</font></td>" +
-	                "<td width=\"25%\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\"><tr>";
+	String result = "<tr><td width=\"25%\"><font size=\"1\">" + stat.getName() + " ("+I18n.gettext("unit: ") + stat.getUnit () + ")</font></td>" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+	                "<td width=\"25%\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\"><tr>"; //$NON-NLS-1$
 	                
 	if (stat instanceof javax.management.j2ee.statistics.CountStatistic)
 	{
-		result+= "<td width=\"33%\" align=\"center\"><font size=\"1\">" + ((javax.management.j2ee.statistics.CountStatistic)stat).getCount() + "</font></td><td width=\"33%\"></td><td width=\"34%\"></td>";
-    }
+		result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + ((javax.management.j2ee.statistics.CountStatistic)stat).getCount() + "</font></td><td width=\"33%\"></td><td width=\"34%\"></td>"; //$NON-NLS-1$ //$NON-NLS-2$
+   }
 	else if (stat instanceof javax.management.j2ee.statistics.RangeStatistic)
 	{
 		javax.management.j2ee.statistics.RangeStatistic rStat = (javax.management.j2ee.statistics.RangeStatistic)stat;
 		
-		result+= "<td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getCurrent ()  + "</font></td><td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getLowWaterMark () + "</font></td>" +
-				 "<td width=\"34%\" align=\"center\"><font size=\"1\">" + rStat.getHighWaterMark() + "</font></td>";
+		result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getCurrent ()  + "</font></td><td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getLowWaterMark () + "</font></td>" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				    "<td width=\"34%\" align=\"center\"><font size=\"1\">" + rStat.getHighWaterMark() + "</font></td>"; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 	
-	result+= "</tr></table></td><td width=\"25%\"><font size=\"1\">" + start + "</font></td><td width=\"25%\"><font size=\"1\">" + lastSample + "</font>&nbsp;</td></tr>";
+	result += "</tr></table></td><td width=\"25%\"><font size=\"1\">" + start + "</font></td><td width=\"25%\"><font size=\"1\">" + lastSample + "</font>&nbsp;</td></tr>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	
 	return result;
 
@@ -58,13 +59,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Stateless Session Bean</title>
+<title>${messages["JBoss Management Console - Stateless Session Bean"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -74,12 +75,12 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 831; height: 247">
-			<h3>Stateless Session Bean</h3>
-				<h4>Name</h4>
-					<p><%=beanMetaData.getEjbName()%> (JNDI: <%=ejbName%>)</p>
-				<h4>EJB Module</h4>
+			<h3>${messages["Stateless Session Bean"]}</h3>
+				<h4>${messages["Name"]}</h4>
+					<p><%=beanMetaData.getEjbName()%> (${messages["JNDI: "]}<%=ejbName%>)</p>
+				<h4>${messages["EJB Module"]}</h4>
 					<p><%=ejbModule %></p>
-				<h4>Bean Statistics:</h4>
+				<h4>${messages["Bean Statistics:"]}</h4>
 					<p>&nbsp;</p>
 <%
 if (ejb.isstatisticsProvider())
@@ -88,29 +89,29 @@
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Name</h4>
+                    <h4 style="text-align: center">${messages["Name"]}</h4>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Value</h4>
+                    <h4 style="text-align: center">${messages["Value"]}</h4>
                     <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">
                       <tr>
                         <td width="33%">
-                        <h4 style="text-align: center">Current</h4>
+                        <h4 style="text-align: center">${messages["Current"]}</h4>
                         </td>
                         <td width="33%">
-                        <h4 style="text-align: center">Low</h4>
+                        <h4 style="text-align: center">${messages["Low"]}</h4>
                         </td>
                         <td width="34%">
-                        <h4 style="text-align: center">High</h4>
+                        <h4 style="text-align: center">${messages["High"]}</h4>
                         </td>
                       </tr>
                     </table>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Start Time</h4>
+                    <h4 style="text-align: center">${messages["Start Time"]}</h4>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Last Sample Time</h4>
+                    <h4 style="text-align: center">${messages["Last Sample Time"]}</h4>
                     </td>
                   </tr>
 	<%
@@ -121,19 +122,19 @@
 	<%=addStatRow (stats.getRemoveCount ()) %>
 
             </table>
-            <p align="center"><a href="<%=resetUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>
+            <p align="center"><a href="<%=resetUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>
 <%
 }
 else
 {
 %>				
-					<p>none.</p>
+					<p>${messages["none."]}</p>
 <%
 }
 %>				
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
-				<h4>Invocation Statistics:</h4>
+				<h4>${messages["Invocation Statistics:"]}</h4>
 					<p>&nbsp;</p>
 <%
 	java.util.Iterator iterInvoc = invokeStats.getStats().entrySet().iterator();
@@ -145,22 +146,22 @@
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td  align="center">
-                    <h4 style="text-align: center">Method name</h4>
+                    <h4 style="text-align: center">${messages["Method name"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Min (ms)</h4>
+                    <h4 style="text-align: center">${messages["Min (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Max (ms)</h4>
+                    <h4 style="text-align: center">${messages["Max (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Average (ms)</h4>
+                    <h4 style="text-align: center">${messages["Average (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Total (ms)</h4>
+                    <h4 style="text-align: center">${messages["Total (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center"># Invocations</h4>
+                    <h4 style="text-align: center">${messages["# Invocations"]}</h4>
                     </td>
                   </tr>
 				<%
@@ -194,23 +195,23 @@
                   }
                   %>
             </table>
-            <p align="center"><a href="<%=resetInvocUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>
+            <p align="center"><a href="<%=resetInvocUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>
 <%
 	}
 	else
 	{
 %>	 
-					<p>none.</p>
+					<p>${messages["none."]}</p>
 <%
 	}
 %>
 
 					<p>&nbsp;</p>
-               <p>Actual concurrent invocations: <%=invokeStats.concurrentCalls%> (max: <%=invokeStats.maxConcurrentCalls%>)</p>
+               <p>${messages["Actual concurrent invocations: "]}<%=invokeStats.concurrentCalls%> (max: ${messages["max: "]}<%=invokeStats.maxConcurrentCalls%>)</p>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
-					<p><a href="<%=containerUrl%>">View associated container MBean</a></p>
+					<p><a href="<%=containerUrl%>">${messages["View associated container MBean"]}</a></p>
 		</div>
 		<div class="spacer"><hr/></div>
 	</div>
@@ -220,7 +221,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPConstructorChain.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPConstructorChain.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPConstructorChain.jsp	(working copy)
@@ -10,16 +10,16 @@
 %>
 <?xml version="1.0" encoding="iso-8859-1"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%@page import="org.jboss.console.I18n"%>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -42,15 +42,16 @@
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <h4 style="text-align: center"><font size="3">Constructor Chain for <%=AOPLister.shortenConstructor(classname, constructor)%></font></h4>
+                    <h4 style="text-align: center"><font size="3"><%= I18n.gettext("Constructor Chain for {0}", AOPLister.shortenConstructor(classname, constructor))  //$NON-NLS-1$
+                    %></font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td>
-                    <h4>Type</h4>
+                    <h4>${messages["Type"]}</h4>
                     </td>
                     <td>
-                    <h4>Description</h4>
+                    <h4>${messages["Description"]}</h4>
                     </td>
                   </tr>
 <%
@@ -62,7 +63,7 @@
 <% } %>
             </table>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -76,7 +77,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/createThresholdMonitor.jsp
===================================================================
--- console/src/resources/webconsole.war/createThresholdMonitor.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/createThresholdMonitor.jsp	(working copy)
@@ -47,13 +47,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Server Information</title>
+<title>${messages["JBoss Management Console - Server Information"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -63,7 +63,7 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>Create Threshold MBean Monitor</h3>
+			<h3>${messages["Create Threshold MBean Monitor"]}</h3>
 					<p>&nbsp;</p>
 <%
    if (error != null)
@@ -76,52 +76,52 @@
 <form action="CreateThresholdMonitor" method="post">
 <table cellspacing="2" cellpadding="2" border="0">
 <tr>
-    <td><b>Monitor Name</b></td>
+    <td><b>${messages["Monitor Name"]}</b></td>
     <td><input type="text" name="monitorName" size="35" value="<%=monitorName%>"></td>
-    <td><i>The name of the monitor and how it will be references within web console</i></td>
+    <td><i>${messages["The name of the monitor and how it will be references within web console"]}</i></td>
 </tr>
 <tr>
-    <td><b>Object Name</b></td>
+    <td><b>${messages["Object Name"]}</b></td>
     <td><input type="text" name="objectName" value="<%=objectName%>" size="35"></td>
-    <td><i>The MBean javax.management.ObjectName of the MBean you are monitoring</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName of the MBean you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Attribute</b></td>
+    <td><b>${messages["Attribute"]}</b></td>
     <td><input type="text" name="attribute" value="<%=attribute%>"  size="35"></td>
-    <td><i>The MBean Attribute you are monitoring</i></td>
+    <td><i>${messages["The MBean Attribute you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Threshold</b></td>
+    <td><b>${messages["Threshold"]}</b></td>
     <td><input type="text" name="threshold" size="35" value="<%=threshold%>"></td>
-    <td><i>The value that will trigger an alert when the Comparison Equation is reached for the attribute value</i></td>
+    <td><i>${messages["The value that will trigger an alert when the Comparison Equation is reached for the attribute value"]}</i></td>
 </tr>
 <tr>
-    <td><b>Time Period</b></td>
+    <td><b>${messages["Time Period"]}</b></td>
     <td><input type="text" name="period" size="35" value="<%=period%>"></td>
-    <td><i>How often should threshold be tested.</i></td>
+    <td><i>${messages["How often should threshold be tested."]}</i></td>
 </tr>
 <tr>
-    <td><b>Comparison Equation</b></td>
+    <td><b>${messages["Comparison Equation"]}</b></td>
     <td><select name="compare" id="compare" size="1">
         <option value="gt" <%=compare.equals("gt") ? "SELECTED" : ""%>>&gt;</option>
         <option value="lt" <%=compare.equals("lt") ? "SELECTED" : ""%>>&lt;</option>
         <option value="eq" <%=compare.equals("eq") ? "SELECTED" : ""%>>=</option>
         </select>
     </td>
-    <td><i>Boolean expression to use when testing threshold hit.</i></td>
+    <td><i>${messages["Boolean expression to use when testing threshold hit."]}</i></td>
 </tr>
 <tr>
-    <td><b>Persisted</b></td>
+    <td><b>${messages["Persisted"]}</b></td>
     <td><input type="checkbox" name="persisted" value="" checked></td>
-    <td><i>Should this monitor be created for next JBoss reboot?</i></td>
+    <td><i>${messages["Should this monitor be created for next JBoss reboot?"]}</i></td>
 </tr>
 <tr>
-    <td><b>Enable Monitor</b></td>
+    <td><b>${messages["Enable Monitor"]}</b></td>
     <td><input type="checkbox" name="enabled" value="" <%=enabled%>></td>
-    <td><i>Should this monitor be enabled.</i></td>
+    <td><i>${messages["Should this monitor be enabled."]}</i></td>
 </tr>
 <tr>
-    <td><b>Alerts</b></td>
+    <td><b>${messages["Alerts"]}</b></td>
     <td>
 <%
    MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
@@ -149,10 +149,10 @@
 </select>
 
     </td>
-    <td><i>Alert Listeners to trigger.</i></td>
+    <td><i>${messages["Alert Listeners to trigger."]}</i></td>
 </tr>
 </table>
-<input type="submit" value="Create">
+<input type="submit" value="${messages['Create']}">
 </form>
 		</div>
 		<div class="spacer"><hr/></div>
@@ -163,7 +163,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/SysProperties.jsp
===================================================================
--- console/src/resources/webconsole.war/SysProperties.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/SysProperties.jsp	(working copy)
@@ -2,7 +2,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - System Properties</title>
+<title>${messages["JBoss Management Console - System Properties"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
@@ -16,7 +16,7 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%;">
-			<h3>JBoss&trade; System Properties</h3>
+			<h3>${messages["JBoss&trade; System Properties"]}</h3>
 					<p>&nbsp;</p>
 					
 				<table border="1" cellpadding="1" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="85%" align="center" id="AutoNumber1">
Index: console/src/resources/webconsole.war/listActiveAlarmTable.jsp
===================================================================
--- console/src/resources/webconsole.war/listActiveAlarmTable.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/listActiveAlarmTable.jsp	(working copy)
@@ -28,14 +28,14 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-   <title>JBoss Management Console - Active Alarm Table</title>
+   <title>${messages["JBoss Management Console - Active Alarm Table"]}</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 
 <body>
 <!-- header begin -->
-   <img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+   <img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
    <div id="header">&nbsp;</div>
    <div id="navigation_bar"/>
 <!-- header end -->
@@ -43,7 +43,7 @@
    <center>
    <div id="content">
       <div class="content_block" style="width: 100%; height: 247">
-         <h3>Active Alarm Table</h3>
+         <h3>${messages["Active Alarm Table"]}</h3>
 <%
    MBeanServer server = MBeanServerLocator.locateJBoss();
    ObjectName target = ActiveAlarmTableMBean.OBJECT_NAME;
@@ -55,48 +55,50 @@
    Integer stateChanged = (Integer)stats.get(AlarmHelper.getStateAsString(Alarm.STATE_CHANGED));
    Integer stateCreated = (Integer)stats.get(AlarmHelper.getStateAsString(Alarm.STATE_CREATED));
    Integer stateNone    = (Integer)stats.get(AlarmHelper.getStateAsString(Alarm.STATE_NONE));
+	pageContext.setAttribute("stateNone", stateNone);
    Integer severityNormal   = (Integer)stats.get(AlarmHelper.getSeverityAsString(Alarm.SEVERITY_NORMAL));
    Integer severityWarning  = (Integer)stats.get(AlarmHelper.getSeverityAsString(Alarm.SEVERITY_WARNING));
    Integer severityMinor    = (Integer)stats.get(AlarmHelper.getSeverityAsString(Alarm.SEVERITY_MINOR));
    Integer severityMajor    = (Integer)stats.get(AlarmHelper.getSeverityAsString(Alarm.SEVERITY_MAJOR));
    Integer severityCritical = (Integer)stats.get(AlarmHelper.getSeverityAsString(Alarm.SEVERITY_CRITICAL));
    Integer severityUnknown  = (Integer)stats.get(AlarmHelper.getSeverityAsString(Alarm.SEVERITY_UNKNOWN));
-   int statefullCount = altab.length - stateNone.intValue();
+   int statefulCount = altab.length - stateNone.intValue();
+	pageContext.setAttribute("statefulCount", new Integer(statefulCount));
 %>
 <p>&nbsp;</p>
 <center>
-   Alarm Count: <%=altab.length%><br>
-   (Stateless: <%=stateNone%>, Statefull: <%=statefullCount%>)<br><br>
+   ${messages["Alarm Count: "]}<%=altab.length%><br>
+   ${messages["(Stateless: {0}, Stateful: {1})"][stateNone][statefulCount]}<br><br>
    <table class="data_table">
    <tr>
-      <th width="50%" align="left">Alarm State</th>
-      <th width="50%" align="left">Alarm Severity</th>
+      <th width="50%" align="left">${messages["Alarm State"]}</th>
+      <th width="50%" align="left">${messages["Alarm Severity"]}</th>
    </tr>
    <tr>
       <td>
-      NONE: <%=stateNone%><br>
-      CREATED: <%=stateCreated%><br>
-      CHANGED: <%=stateChanged%><br>
-      CLEARED: <%=stateCleared%>
+      ${messages["NONE: "]}<%=stateNone%><br>
+      ${messages["CREATED: "]}<%=stateCreated%><br>
+      ${messages["CHANGED: "]}<%=stateChanged%><br>
+      ${messages["CLEARED: "]}<%=stateCleared%>
       </td>
       <td>
-      UNKNOWN: <%=severityUnknown%><br>
-      CRITICAL: <%=severityCritical%><br>
-      MAJOR: <%=severityMajor%><br>
-      MINOR: <%=severityMinor%><br>
-      WARNING: <%=severityWarning%><br>
-      NORMAL: <%=severityNormal%>
+      ${messages["UNKNOWN: "]}<%=severityUnknown%><br>
+      ${messages["CRITICAL: "]}<%=severityCritical%><br>
+      ${messages["MAJOR: "]}<%=severityMajor%><br>
+      ${messages["MINOR: "]}<%=severityMinor%><br>
+      ${messages["WARNING: "]}<%=severityWarning%><br>
+      ${messages["NORMAL: "]}<%=severityNormal%>
       </td>
    </tr>
    </table>
  <form action="listActiveAlarmTable.jsp" method="post" align="middle">
-   <input type="submit" name="action" value="Refresh Table">
+   <input type="submit" name="action" value="${messages['Refresh Table']}">
 </form>
 </center>
 <table class="data_table" cellspacing="2" cellpadding="2" border="1" >
 <tr>
-   <th width="150">AlarmInfo</th>
-   <th>NotificationInfo</th>
+   <th width="150">${messages["AlarmInfo"]}</th>
+   <th>${messages["NotificationInfo"]}</th>
 </tr>
 <%
    for (int i = 0; i < altab.length; i++)
@@ -131,7 +133,7 @@
       ackSystem: <font color="navy"><%=ackSystem%></font>
       <form action="AcknowledgeActiveAlarms" method="post">
          <input type="hidden" name="alarmId" value="<%=alarmId%>">
-         <input type="submit" name="action" value="Ack">
+         <input type="submit" name="action" value="${messages['Ack']}">
       </form>
    </td>
    <td>
@@ -149,13 +151,13 @@
 </table>
 <form action="AcknowledgeActiveAlarms" method="post">
    <input type="hidden" name="alarmId" value="*">
-   <input type="submit" name="action" value="Acknowledge All Alarms">
+   <input type="submit" name="action" value="${messages['Acknowledge All Alarms']}">
 </form>
 <%
 }
 catch (Exception ex)
 {
-   %> ERROR in parsing <%
+   %> ${messages["ERROR in parsing"]} <%
    ex.printStackTrace();
 }
 %>
@@ -167,7 +169,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 <div id="footer">
-   <div id="credits">JBoss&trade; Management Console</div>
+   <div id="credits">${messages["JBoss&trade; Management Console"]}</div>
    <div id="footer_bar">&nbsp;</div>
 </div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/createStringThresholdMonitorSummary.jsp
===================================================================
--- console/src/resources/webconsole.war/createStringThresholdMonitorSummary.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/createStringThresholdMonitorSummary.jsp	(working copy)
@@ -48,13 +48,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Create String Monitor Summary</title>
+<title>${messages["JBoss Management Console - Create String Monitor Summary"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -64,47 +64,47 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>String MBean Monitor Created</h3>
+			<h3>${messages["String MBean Monitor Created"]}</h3>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
 <table cellspacing="2" cellpadding="2" border="0">
 <tr>
-    <td><b>Monitor Name</b></td>
+    <td><b>${messages["Monitor Name"]}</b></td>
     <td><input type="text" name="monitorName" size="35" value="<%=monitorName%>" readonly></td>
-    <td><i>The name of the monitor and how it will be references within web console</i></td>
+    <td><i>${messages["The name of the monitor and how it will be references within web console"]}</i></td>
 </tr>
 <tr>
-    <td><b>Object Name</b></td>
+    <td><b>${messages["Object Name"]}</b></td>
     <td><input type="text" name="objectName" value="<%=objectName%>" size="35" readonly></td>
-    <td><i>The MBean javax.management.ObjectName of the MBean you are monitoring</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName of the MBean you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Attribute</b></td>
+    <td><b>${messages["Attribute"]}</b></td>
     <td><input type="text" name="attribute" value="<%=attribute%>"  size="35" readonly></td>
-    <td><i>The MBean Attribute you are monitoring</i></td>
+    <td><i>${messages["The MBean Attribute you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Threshold</b></td>
+    <td><b>${messages["Threshold"]}</b></td>
     <td><input type="text" name="threshold" size="35" value="<%=threshold%>" readonly></td>
-    <td><i>The value that will trigger an alert when the Comparison Equation is reached for the attribute value</i></td>
+    <td><i>${messages["The value that will trigger an alert when the Comparison Equation is reached for the attribute value"]}</i></td>
 </tr>
 <tr>
-    <td><b>Time Period</b></td>
+    <td><b>${messages["Time Period"]}</b></td>
     <td><input type="text" name="period" size="35" value="<%=period%>" readonly></td>
-    <td><i>How often should threshold be tested.</i></td>
+    <td><i>${messages["How often should threshold be tested."]}</i></td>
 </tr>
 <tr>
-    <td><b>Equality Trigger</b></td>
+    <td><b>${messages["Equality Trigger"]}</b></td>
     <td><input type="checkbox" name="equality" value="" <%=equality%>></td>
-    <td><i>Uncheck this box if you want an alert to trigger when attribute changes from threshold value</i></td>
+    <td><i>${messages["Uncheck this box if you want an alert to trigger when attribute changes from threshold value"]}</i></td>
 </tr>
 <tr>
-    <td><b>Enable Monitor</b></td>
+    <td><b>${messages["Enable Monitor"]}</b></td>
     <td><input type="checkbox" name="enabled" value="" <%=enabled%>></td>
-    <td><i>Should this monitor be enabled.</i></td>
+    <td><i>${messages["Should this monitor be enabled."]}</i></td>
 </tr>
 <tr>
-    <td><b>Alerts</b></td>
+    <td><b>${messages["Alerts"]}</b></td>
     <td>
 <%
    MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
@@ -133,7 +133,7 @@
 </select>
 
     </td>
-    <td><i>Alert Listeners to trigger.</i></td>
+    <td><i>${messages["Alert Listeners to trigger."]}</i></td>
 </tr>
 </table>
 </form>
@@ -146,7 +146,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/manageStringThresholdMonitor.jsp
===================================================================
--- console/src/resources/webconsole.war/manageStringThresholdMonitor.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/manageStringThresholdMonitor.jsp	(working copy)
@@ -47,13 +47,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Manage Monitor</title>
+<title>${messages["JBoss Management Console - Manage Monitor"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -63,7 +63,7 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3><font color="<%=color%>">Manage String MBean Monitor</font></h3>
+			<h3><font color="<%=color%>">${messages["Manage String MBean Monitor"]}</font></h3>
 					<p>&nbsp;</p>
 <%
    if (error != null)
@@ -77,62 +77,62 @@
 <input type="hidden" name="monitorObjectName" value="<%=moname.toString()%>">
 <table cellspacing="2" cellpadding="2" border="0">
 <tr>
-    <td><b>Monitor Name</b></td>
+    <td><b>${messages["Monitor Name"]}</b></td>
     <td><input type="text" name="monitorName" size="35" value="<%=monitorName%>" readonly></td>
-    <td><i>The name of the monitor and how it will be references within web console</i></td>
+    <td><i>${messages["The name of the monitor and how it will be references within web console"]}</i></td>
 </tr>
 <tr>
-    <td><b>Monitor's Object Name</b></td>
+    <td><b>${messages["Monitor\'s Object Name"]}</b></td>
     <td><input type="text" name="monitorObjectName" size="35" value="<%=monitorObjectName%>" readonly></td>
-    <td><i>The MBean javax.management.ObjectName</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName"]}</i></td>
 </tr>
 <tr>
-    <td><b>Object Name</b></td>
+    <td><b>${messages["Object Name"]}</b></td>
     <td><input type="text" name="objectName" value="<%=observedObject.toString()%>" size="35" readonly></td>
-    <td><i>The MBean javax.management.ObjectName of the MBean you are monitoring</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName of the MBean you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Attribute</b></td>
+    <td><b>${messages["Attribute"]}</b></td>
     <td><input type="text" name="attribute" value="<%=attribute%>"  size="35" readonly></td>
-    <td><i>The MBean Attribute you are monitoring</i></td>
+    <td><i>${messages["The MBean Attribute you are monitoring"]}</i></td>
 </tr>
 <%
    if (alerted)
    {
 %>
 <tr>
-    <td><font color="red"><b>Triggered Value</b></font></td>
+    <td><font color="red"><b>${messages["Triggered Value"]}</b></font></td>
     <td><input type="text" name="trigger" value="<%=triggeredValue.toString()%>" size="35" readonly></td>
-    <td><i>The attribute value the triggered the threshold.</i></td>
+    <td><i>${messages["The attribute value the triggered the threshold."]}</i></td>
 </tr>
 <% } %>
 <tr>
-    <td><b>Threshold</b></td>
+    <td><b>${messages["Threshold"]}</b></td>
     <td><input type="text" name="threshold" size="35" value="<%=threshold%>"></td>
-    <td><i>The value that will trigger an alert when the Comparison Equation is reached for the attribute value</i></td>
+    <td><i>${messages["The value that will trigger an alert when the Comparison Equation is reached for the attribute value"]}</i></td>
 </tr>
 <tr>
-    <td><b>Time Period</b></td>
+    <td><b>${messages["Time Period"]}</b></td>
     <td><input type="text" name="period" size="35" value="<%=period%>"></td>
-    <td><i>How often should threshold be tested.</i></td>
+    <td><i>${messages["How often should threshold be tested."]}</i></td>
 </tr>
 <tr>
-    <td><b>Persist Changes</b></td>
+    <td><b>${messages["Persist Changes"]}</b></td>
     <td><input type="checkbox" name="persisted" value="" checked></td>
-    <td><i>Should changes be reflected in deployment file.</i></td>
+    <td><i>${messages["Should changes be reflected in deployment file."]}</i></td>
 </tr>
 <tr>
-    <td><b>Equality Trigger</b></td>
+    <td><b>${messages["Equality Trigger"]}</b></td>
     <td><input type="checkbox" name="equality" value="" <%=equality ? "checked" : ""%>></td>
-    <td><i>Uncheck this box if you want an alert to trigger when attribute changes from threshold value</i></td>
+    <td><i>${messages["Uncheck this box if you want an alert to trigger when attribute changes from threshold value"]}</i></td>
 </tr>
 <tr>
-    <td><b>Enable Monitor</b></td>
+    <td><b>${messages["Enable Monitor"]}</b></td>
     <td><input type="checkbox" name="enabled" value="" <%=enabled ? "checked" : ""%>></td>
-    <td><i>Should this monitor be enabled.</i></td>
+    <td><i>${messages["Should this monitor be enabled."]}</i></td>
 </tr>
 <tr>
-    <td><b>Alerts</b></td>
+    <td><b>${messages["Alerts"]}</b></td>
     <td>
 <%
    InstanceOfQueryExp queryExp = null;
@@ -160,16 +160,16 @@
 </select>
 
     </td>
-    <td><i>Alert Listeners to trigger.</i></td>
+    <td><i>${messages["Alert Listeners to trigger."]}</i></td>
 </tr>
 </table>
-<input type="submit" name="action" value="Update Monitor">
-<input type="submit" name="action" value="Remove Monitor">
+<input type="submit" name="action" value="${messages['Update Monitor']}">
+<input type="submit" name="action" value="${messages['Remove Monitor']}">
 <%
    if (alerted)
    {
 %>
-<input type="submit" name="action" value="Clear Alert">
+<input type="submit" name="action" value="${messages['Clear Alert']}">
 <%
    }
 %>
@@ -178,7 +178,7 @@
 }
 catch (Exception ex)
 {
-   %> ERROR in parsing <%
+   %> ${messages["ERROR in parsing"]} <%
    ex.printStackTrace();
 }
 %>
@@ -191,7 +191,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/TopicSubscriptions.jsp
===================================================================
--- console/src/resources/webconsole.war/TopicSubscriptions.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/TopicSubscriptions.jsp	(working copy)
@@ -4,11 +4,12 @@
 				java.util.*,
 				java.text.DateFormat"
 %>
+<%@page import="org.jboss.console.I18n"%>
 <%@ taglib uri="/webconsole" prefix="jb" %>
 <jb:mbean id="topic" intf="org.jboss.mq.server.jmx.TopicMBean"/>
 <% 	
-	String objParameter = "&ObjectName=" + URLEncoder.encode(request.getParameter("ObjectName"));
-	String myUrl = response.encodeURL(request.getRequestURI()) + "?" + objParameter;		
+	String objParameter = "&ObjectName=" + URLEncoder.encode(request.getParameter("ObjectName")); //$NON-NLS-1$ //$NON-NLS-2$
+	String myUrl = response.encodeURL(request.getRequestURI()) + "?" + objParameter;	 //$NON-NLS-1$	
 	
 	MessageCounter[] counter = topic.getMessageCounter();
 	DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM);
@@ -18,13 +19,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - JMS Topic</title>
+<title>${messages["JBoss Management Console - JMS Topic"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -39,36 +40,36 @@
 		<tr align="center" valign="bottom">
 			<td height="24">	
 				<jsp:include page="TopicNavigation.jsp" >
-					<jsp:param name="selectedTabName" value="Subscriptions"/>
+					<jsp:param name="selectedTabName" value="${messages['Subscriptions']}"/>
 				</jsp:include>
 			</td>
 		</tr>
 		<tr>
 		  <td colspan="5" valign="top" class="container">			
-			<h4>Name</h4>
+			<h4>${messages["Name"]}</h4>
 				<p><%=topic.getTopicName()%></p>																			
-			<h4>Subscriptions:</h4>
+			<h4>${messages["Subscriptions:"]}</h4>
 			<table border="1" cellpadding="0" cellspacing="0" class="data_table" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td>
-                    <h4>Subscription Name:</h4>
+                    <h4>${messages["Subscription Name:"]}</h4>
                     </td>      
                     <td>
-                    <h4>Durable:</h4>
+                    <h4>${messages["Durable:"]}</h4>
                     </td>                                     
                     <td>
-                    <h4>Message Count:</h4>
+                    <h4>${messages["Message Count:"]}</h4>
                     </td>                    
                     <td>
-                    <h4>Message Count Delta:</h4>
+                    <h4>${messages["Message Count Delta:"]}</h4>
                     </td>         
                     <td>
-                    <h4>Last Message Add Date:</h4>
+                    <h4>${messages["Last Message Add Date:"]}</h4>
                     </td>           
                   </tr>	
 <% for(int i = 0; i < counter.length; i++)
 {    
-	String lastModified = "N/A";
+	String lastModified = I18n.gettext("N/A"); //$NON-NLS-1$
 	if (counter[i].getLastUpdate() > 0)
 	{		
 		lastModified = dateFormat.format(new Date(counter[i].getLastUpdate()));
@@ -83,7 +84,7 @@
                   </tr>
 <%}%>
             </table>                    
-            <p align="center"><a href="<%=myUrl%>">Refresh</a></p>            					
+            <p align="center"><a href="<%=myUrl%>">${messages["Refresh"]}</a></p>            					
             <p>&nbsp;</p>
 			<p>&nbsp;</p>									              		
 		  </td>
@@ -100,7 +101,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPClassMetaData.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPClassMetaData.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPClassMetaData.jsp	(working copy)
@@ -10,14 +10,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar"> 
@@ -33,6 +32,6 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%">
-			<h3>Metadata for class <%= classname %></h3>
+			<h3>${messages["Metadata for class {0}"][param.classname]}</h3>
 	    <p>&nbsp;</p>
 <%@ include file="AOPMetaData.jsp" %>
Index: console/src/resources/webconsole.war/createThresholdMonitorSummary.jsp
===================================================================
--- console/src/resources/webconsole.war/createThresholdMonitorSummary.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/createThresholdMonitorSummary.jsp	(working copy)
@@ -46,13 +46,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Server Information</title>
+<title>${messages["JBoss Management Console - Server Information"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -62,52 +62,52 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>Threshold MBean Monitor Created</h3>
+			<h3>${messages["Threshold MBean Monitor Created"]}</h3>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
 <table cellspacing="2" cellpadding="2" border="0">
 <tr>
-    <td><b>Monitor Name</b></td>
+    <td><b>${messages["Monitor Name"]}</b></td>
     <td><input type="text" name="monitorName" size="35" value="<%=monitorName%>" readonly></td>
-    <td><i>The name of the monitor and how it will be references within web console</i></td>
+    <td><i>${messages["The name of the monitor and how it will be referenced within web console"]}</i></td>
 </tr>
 <tr>
-    <td><b>Object Name</b></td>
+    <td><b>${messages["Object Name"]}</b></td>
     <td><input type="text" name="objectName" value="<%=objectName%>" size="35" readonly></td>
-    <td><i>The MBean javax.management.ObjectName of the MBean you are monitoring</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName of the MBean you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Attribute</b></td>
+    <td><b>${messages["Attribute"]}</b></td>
     <td><input type="text" name="attribute" value="<%=attribute%>"  size="35" readonly></td>
-    <td><i>The MBean Attribute you are monitoring</i></td>
+    <td><i>${messages["The MBean Attribute you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Threshold</b></td>
+    <td><b>${messages["Threshold"]}</b></td>
     <td><input type="text" name="threshold" size="35" value="<%=threshold%>" readonly></td>
-    <td><i>The value that will trigger an alert when the Comparison Equation is reached for the attribute value</i></td>
+    <td><i>${messages["The value that will trigger an alert when the Comparison Equation is reached for the attribute value"]}</i></td>
 </tr>
 <tr>
-    <td><b>Time Period</b></td>
+    <td><b>${messages["Time Period"]}</b></td>
     <td><input type="text" name="period" size="35" value="<%=period%>" readonly></td>
-    <td><i>How often should threshold be tested.</i></td>
+    <td><i>${messages["How often should threshold be tested."]}</i></td>
 </tr>
 <tr>
-    <td><b>Comparison Equation</b></td>
+    <td><b>${messages["Comparison Equation"]}</b></td>
     <td><select name="compare" id="compare" size="1">
         <option value="gt" <%=compare.equals("gt") ? "SELECTED" : ""%>>&gt;</option>
         <option value="lt" <%=compare.equals("lt") ? "SELECTED" : ""%>>&lt;</option>
         <option value="eq" <%=compare.equals("eq") ? "SELECTED" : ""%>>=</option>
         </select>
     </td>
-    <td><i>Boolean expression to use when testing threshold hit.</i></td>
+    <td><i>${messages["Boolean expression to use when testing threshold hit."]}</i></td>
 </tr>
 <tr>
-    <td><b>Enable Monitor</b></td>
+    <td><b>${messages["Enable Monitor"]}</b></td>
     <td><input type="checkbox" name="enabled" value="" <%=enabled%>></td>
-    <td><i>Should this monitor be enabled.</i></td>
+    <td><i>${messages["Should this monitor be enabled."]}</i></td>
 </tr>
 <tr>
-    <td><b>Alerts</b></td>
+    <td><b>${messages["Alerts"]}</b></td>
     <td>
 <%
    MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
@@ -136,7 +136,7 @@
 </select>
 
     </td>
-    <td><i>Alert Listeners to trigger.</i></td>
+    <td><i>${messages["Alert Listeners to trigger."]}</i></td>
 </tr>
 </table>
 </form>
@@ -149,7 +149,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPMethodMethodCallerChain.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPMethodMethodCallerChain.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPMethodMethodCallerChain.jsp	(working copy)
@@ -14,14 +14,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -49,16 +48,16 @@
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <h4 style="text-align: center"><font size="3">Method Caller: <%=AOPLister.shortenMethod(classname, method)%></font></h4>
-                    <h4 style="text-align: center"><font size="3">Called Method: <%=info.method.toString()%></font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Method Caller: "]}<%=AOPLister.shortenMethod(classname, method)%></font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Called Method: "]}<%=info.getMethod().toString()%></font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td>
-                    <h4>Type</h4>
+                    <h4>${messages["Type"]}</h4>
                     </td>
                     <td>
-                    <h4>Description</h4>
+                    <h4>${messages["Description"]}</h4>
                     </td>
                   </tr>
 <%
@@ -70,7 +69,7 @@
 <% } %>
             </table>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -84,7 +83,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/index.jsp
===================================================================
--- console/src/resources/webconsole.war/index.jsp	(revision 0)
+++ console/src/resources/webconsole.war/index.jsp	(revision 0)
@@ -0,0 +1,19 @@
+<html>
+
+<head>
+<title>${messages["Administration Console"]}</title>
+</head>
+
+<frameset cols="30%,*">
+  <frame id="left" name="left" src="applet.jsp" scrolling="no" marginwidth="0" marginheight="0" style="padding-left: 8; padding-right: 0; padding-top: 8; padding-bottom: 0">
+  <frame id="right" name="right" src="ServerInfo.jsp" >
+  <noframes>
+  <body>
+
+  <p>${messages["Please use a frame-capable browser."]}</p>
+
+  </body>
+  </noframes>
+</frameset>
+
+</html>

Property changes on: console/src/resources/webconsole.war/index.jsp
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: console/src/resources/webconsole.war/manageSnapshot.jsp
===================================================================
--- console/src/resources/webconsole.war/manageSnapshot.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/manageSnapshot.jsp	(working copy)
@@ -40,13 +40,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Manage Snapshot</title>
+<title>${messages["JBoss Management Console - Manage Snapshot"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -56,7 +56,7 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>Manage Snapshot</h3>
+			<h3>${messages["Manage Snapshot"]}</h3>
 					<p>&nbsp;</p>
 <%
    if (error != null)
@@ -70,48 +70,48 @@
 <input type="hidden" name="monitorObjectName" value="<%=moname.toString()%>">
 <table cellspacing="2" cellpadding="2" border="0">
 <tr>
-    <td><b>Monitor Name</b></td>
+    <td><b>${messages["Monitor Name"]}</b></td>
     <td><input type="text" name="monitorName" size="35" value="<%=monitorName%>" readonly></td>
-    <td><i>The name of the monitor and how it will be references within web console</i></td>
+    <td><i>${messages["The name of the monitor and how it will be references within web console"]}</i></td>
 </tr>
 <tr>
-    <td><b>Monitor's Object Name</b></td>
+    <td><b>${messages['Monitor\'s Object Name']}</b></td>
     <td><input type="text" name="monitorObjectName" size="35" value="<%=monitorObjectName%>" readonly></td>
-    <td><i>The MBean javax.management.ObjectName</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName"]}</i></td>
 </tr>
 <tr>
-    <td><b>Object Name</b></td>
+    <td><b>${messages["Object Name"]}</b></td>
     <td><input type="text" name="objectName" value="<%=observedObject.toString()%>" size="35" readonly></td>
-    <td><i>The MBean javax.management.ObjectName of the MBean you are monitoring</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName of the MBean you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Attribute</b></td>
+    <td><b>${messages["Attribute"]}</b></td>
     <td><input type="text" name="attribute" value="<%=attribute%>"  size="35" readonly></td>
-    <td><i>The MBean Attribute you are monitoring</i></td>
+    <td><i>${messages["The MBean Attribute you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Time Period</b></td>
+    <td><b>${messages["Time Period"]}</b></td>
     <td><input type="text" name="period" size="35" value="<%=period%>" readonly></td>
-    <td><i>How often should threshold be tested.</i></td>
+    <td><i>${messages["How often should threshold be tested."]}</i></td>
 </tr>
 </table>
 <% if (recording)
    {
 %>
-<input type="submit" name="action" value="Stop Snapshot">
+<input type="submit" name="action" value="${messages['Stop Snapshot']}">
 <% }  else {%>
-<input type="submit" name="action" value="Start Snapshot">
+<input type="submit" name="action" value="${messages['Start Snapshot']}">
 <% } %>
-<input type="submit" name="action" value="Graph Dataset">
-<input type="submit" name="action" value="Clear Dataset">
-<input type="submit" name="action" value="Show Dataset">
-<input type="submit" name="action" value="Remove Snapshot">
+<input type="submit" name="action" value="${messages['Graph Dataset']}">
+<input type="submit" name="action" value="${messages['Clear Dataset']}">
+<input type="submit" name="action" value="${messages['Show Dataset']}">
+<input type="submit" name="action" value="${messages['Remove Snapshot']}">
 </form>
 <%
 }
 catch (Exception ex)
 {
-   %> ERROR  <%
+   %> ${messages["ERROR"]}  <%
    ex.printStackTrace();
 }
 %>
@@ -124,7 +124,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPMethodConstructorCallerChain.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPMethodConstructorCallerChain.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPMethodConstructorCallerChain.jsp	(working copy)
@@ -14,14 +14,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -49,16 +48,16 @@
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <h4 style="text-align: center"><font size="3">Method Caller: <%=AOPLister.shortenMethod(classname, method)%></font></h4>
-                    <h4 style="text-align: center"><font size="3">Called Constructor: <%=info.constructor.toString()%></font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Method Caller: "]}<%=AOPLister.shortenMethod(classname, method)%></font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Called Constructor: "]}<%=info.getConstructor().toString()%></font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td>
-                    <h4>Type</h4>
+                    <h4>${messages["Type"]}</h4>
                     </td>
                     <td>
-                    <h4>Description</h4>
+                    <h4>${messages["Description"]}</h4>
                     </td>
                   </tr>
 <%
@@ -70,7 +69,7 @@
 <% } %>
             </table>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -84,7 +83,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/Topic.jsp
===================================================================
--- console/src/resources/webconsole.war/Topic.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/Topic.jsp	(working copy)
@@ -13,13 +13,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - JMS Topic</title>
+<title>${messages["JBoss Management Console - JMS Topic"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -34,30 +34,30 @@
 		<tr align="center" valign="bottom">
 			<td height="24">
 				<jsp:include page="TopicNavigation.jsp" >
-					<jsp:param name="selectedTabName" value="JMS Topic"/>
+					<jsp:param name="selectedTabName" value="${messages['JMS Topic']}"/>
 				</jsp:include>
 			</td>
 		</tr>
 		<tr>
 		  <td colspan="5" valign="top" class="container">			
-			<h4>Name</h4>
+			<h4>${messages["Name"]}</h4>
 				<p><%=topic.getTopicName()%></p>
-			<h4>JNDI Name</h4>
+			<h4>${messages["JNDI Name"]}</h4>
 				<p><%=topic.getJNDIName()%></p>																	
-			<h4>Message statistics:</h4>
+			<h4>${messages["Message statistics:"]}</h4>
 			<table border="1" cellpadding="0" cellspacing="0" class="data_table" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td>
-                    <h4>All Message Count:</h4>
+                    <h4>${messages["All Message Count:"]}</h4>
                     </td>      
                     <td>
-                    <h4>Durable Message Count:</h4>
+                    <h4>${messages["Durable Message Count:"]}</h4>
                     </td>                                     
                     <td>
-                    <h4>Non Durable Message Count:</h4>
+                    <h4>${messages["Non Durable Message Count:"]}</h4>
                     </td>                    
                     <td>
-                    <h4>Maximum Depth:</h4>
+                    <h4>${messages["Maximum Depth:"]}</h4>
                     </td>                    
                   </tr>	
                   <tr align="center">
@@ -69,17 +69,17 @@
             </table>
             <p>&nbsp;</p>
 			<p>&nbsp;</p>
-            <h4>Subscription statistics:</h4>
+            <h4>${messages["Subscription statistics:"]}</h4>
 			<table border="1" cellpadding="0" cellspacing="0" class="data_table" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="33%" >
-                    <h4>All Subscriptions Count:</h4>
+                    <h4>${messages["All Subscriptions Count:"]}</h4>
                     </td>                    
                     <td width="33%">
-                    <h4>Durable Subcriptions Count</h4>                    
+                    <h4>${messages["Durable Subcriptions Count"]}</h4>                    
                     </td>                    
                     <td width="33%">
-                    <h4>Non Durable Subscriptions Count:</h4>
+                    <h4>${messages["Non Durable Subscriptions Count:"]}</h4>
                     </td>
                   </tr>	
                   <tr align="center">                  	
@@ -88,7 +88,7 @@
                   	<td><%=topic.getNonDurableSubscriptionsCount()%></td>
                   </tr>
             </table>
-            <p align="center"><a href="<%=myUrl%>">Refresh</a></p>            					
+            <p align="center"><a href="<%=myUrl%>">${messages["Refresh"]}</a></p>            					
             <p>&nbsp;</p>
 			<p>&nbsp;</p>						
 			              		
@@ -106,7 +106,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/createStringThresholdMonitor.jsp
===================================================================
--- console/src/resources/webconsole.war/createStringThresholdMonitor.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/createStringThresholdMonitor.jsp	(working copy)
@@ -55,13 +55,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Create String Threshold Monitor</title>
+<title>${messages["JBoss Management Console - Create String Threshold Monitor"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -71,7 +71,7 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>Create String Threshold MBean Monitor</h3>
+			<h3>${messages["Create String Threshold MBean Monitor"]}</h3>
 					<p>&nbsp;</p>
 <%
    if (error != null)
@@ -84,47 +84,47 @@
 <form action="CreateStringThresholdMonitor" method="post">
 <table cellspacing="2" cellpadding="2" border="0">
 <tr>
-    <td><b>Monitor Name</b></td>
+    <td><b>${messages["Monitor Name"]}</b></td>
     <td><input type="text" name="monitorName" size="35" value="<%=monitorName%>"></td>
-    <td><i>The name of the monitor and how it will be references within web console</i></td>
+    <td><i>${messages["The name of the monitor and how it will be references within web console"]}</i></td>
 </tr>
 <tr>
-    <td><b>Object Name</b></td>
+    <td><b>${messages["Object Name"]}</b></td>
     <td><input type="text" name="objectName" value="<%=objectName%>" size="35"></td>
-    <td><i>The MBean javax.management.ObjectName of the MBean you are monitoring</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName of the MBean you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Attribute</b></td>
+    <td><b>${messages["Attribute"]}</b></td>
     <td><input type="text" name="attribute" value="<%=attribute%>"  size="35"></td>
-    <td><i>The MBean Attribute you are monitoring</i></td>
+    <td><i>${messages["The MBean Attribute you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Threshold</b></td>
+    <td><b>${messages["Threshold"]}</b></td>
     <td><input type="text" name="threshold" size="35" value="<%=threshold%>"></td>
-    <td><i>The value that will trigger an alert when the Comparison Equation is reached for the attribute value</i></td>
+    <td><i>${messages["The value that will trigger an alert when the Comparison Equation is reached for the attribute value"]}</i></td>
 </tr>
 <tr>
-    <td><b>Time Period</b></td>
+    <td><b>${messages["Time Period"]}</b></td>
     <td><input type="text" name="period" size="35" value="<%=period%>"></td>
-    <td><i>How often should threshold be tested.</i></td>
+    <td><i>${messages["How often should threshold be tested."]}</i></td>
 </tr>
 <tr>
-    <td><b>Equality Trigger</b></td>
+    <td><b>${messages["Equality Trigger"]}</b></td>
     <td><input type="checkbox" name="equality" value="" <%=equality%>></td>
-    <td><i>Uncheck this box if you want an alert to trigger when attribute changes from threshold value</i></td>
+    <td><i>${messages["Uncheck this box if you want an alert to trigger when attribute changes from threshold value"]}</i></td>
 </tr>
 <tr>
-    <td><b>Persisted</b></td>
+    <td><b>${messages["Persisted"]}</b></td>
     <td><input type="checkbox" name="persisted" value="" checked></td>
-    <td><i>Should this monitor be created for next JBoss reboot?</i></td>
+    <td><i>${messages["Should this monitor be created for next JBoss reboot?"]}</i></td>
 </tr>
 <tr>
-    <td><b>Enable Monitor</b></td>
+    <td><b>${messages["Enable Monitor"]}</b></td>
     <td><input type="checkbox" name="enabled" value="" <%=enabled%>></td>
-    <td><i>Should this monitor be enabled.</i></td>
+    <td><i>${messages["Should this monitor be enabled?"]}</i></td>
 </tr>
 <tr>
-    <td><b>Alerts</b></td>
+    <td><b>${messages["Alerts"]}</b></td>
     <td>
 <%
    InstanceOfQueryExp queryExp = null;
@@ -151,10 +151,10 @@
 </select>
 
     </td>
-    <td><i>Alert Listeners to trigger.</i></td>
+    <td><i>${messages["Alert Listeners to trigger."]}</i></td>
 </tr>
 </table>
-<input type="submit" value="Create">
+<input type="submit" value="${messages['Create']}">
 </form>
 		</div>
 		<div class="spacer"><hr/></div>
@@ -165,7 +165,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPConstructorConstructorCallerChain.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPConstructorConstructorCallerChain.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPConstructorConstructorCallerChain.jsp	(working copy)
@@ -13,14 +13,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -48,16 +47,16 @@
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <h4 style="text-align: center"><font size="3">Constructor Caller: <%=AOPLister.shortenConstructor(classname, constructor)%></font></h4>
-                    <h4 style="text-align: center"><font size="3">Called Constructor: <%=info.constructor.toString()%></font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Constructor Caller: "]}<%=AOPLister.shortenConstructor(classname, constructor)%></font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Called Constructor: "]}<%=info.getConstructor().toString()%></font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td>
-                    <h4>Type</h4>
+                    <h4>${messages["Type"]}</h4>
                     </td>
                     <td>
-                    <h4>Description</h4>
+                    <h4>${messages["Description"]}</h4>
                     </td>
                   </tr>
 <%
@@ -69,7 +68,7 @@
 <% } %>
             </table>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -83,7 +82,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPMethodMetaData.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPMethodMetaData.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPMethodMetaData.jsp	(working copy)
@@ -10,14 +10,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar"> 
@@ -34,6 +33,6 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%">
-			<h3>Metadata for method <%=method%></h3>
+			<h3>${messages["Metadata for method {0}"][param.method]}</h3>
 	    <p>&nbsp;</p>
 <%@ include file="AOPMetaData.jsp" %>
Index: console/src/resources/webconsole.war/MdbEjb.jsp
===================================================================
--- console/src/resources/webconsole.war/MdbEjb.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/MdbEjb.jsp	(working copy)
@@ -4,6 +4,7 @@
 	 import="java.util.Iterator"
 	 import="org.jboss.invocation.InvocationStatistics"
 	 import="org.jboss.invocation.InvocationStatistics.*" %>
+<%@page import="org.jboss.console.I18n"%>
 
 <%@ taglib uri="/webconsole" prefix="jb" %>
 <jb:mbean id="ejb" intf="org.jboss.management.j2ee.MessageDrivenBeanMBean" />
@@ -44,22 +45,22 @@
    String start = new java.util.Date(stat.getStartTime ()).toString ();
    String lastSample = new java.util.Date(stat.getLastSampleTime ()).toString ();
 	
-   String result = "<tr><td width=\"25%\"><font size=\"1\">" + stat.getName() + " (unit: " + stat.getUnit () + ")</font></td>" +
-                   "<td width=\"25%\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\"><tr>";
+	String result = "<tr><td width=\"25%\"><font size=\"1\">" + stat.getName() + " ("+I18n.gettext("unit: ") + stat.getUnit () + ")</font></td>" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+                   "<td width=\"25%\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\"><tr>"; //$NON-NLS-1$
 	                
    if (stat instanceof javax.management.j2ee.statistics.CountStatistic)
    {
-      result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + ((javax.management.j2ee.statistics.CountStatistic)stat).getCount() + "</font></td><td width=\"33%\"></td><td width=\"34%\"></td>";
+      result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + ((javax.management.j2ee.statistics.CountStatistic)stat).getCount() + "</font></td><td width=\"33%\"></td><td width=\"34%\"></td>"; //$NON-NLS-1$ //$NON-NLS-2$
    }
    else if (stat instanceof javax.management.j2ee.statistics.RangeStatistic)
    {
       javax.management.j2ee.statistics.RangeStatistic rStat = (javax.management.j2ee.statistics.RangeStatistic)stat;
 		
-      result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getCurrent ()  + "</font></td><td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getLowWaterMark () + "</font></td>" +
-                "<td width=\"34%\" align=\"center\"><font size=\"1\">" + rStat.getHighWaterMark() + "</font></td>";
+      result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getCurrent ()  + "</font></td><td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getLowWaterMark () + "</font></td>" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+                "<td width=\"34%\" align=\"center\"><font size=\"1\">" + rStat.getHighWaterMark() + "</font></td>"; //$NON-NLS-1$ //$NON-NLS-2$
    }
 	
-   result += "</tr></table></td><td width=\"25%\"><font size=\"1\">" + start + "</font></td><td width=\"25%\"><font size=\"1\">" + lastSample + "</font>&nbsp;</td></tr>";
+   result += "</tr></table></td><td width=\"25%\"><font size=\"1\">" + start + "</font></td><td width=\"25%\"><font size=\"1\">" + lastSample + "</font>&nbsp;</td></tr>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	
    return result;
 }
@@ -69,13 +70,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Message Driven Bean</title>
+<title>${messages["JBoss Management Console - Message Driven Bean"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 <div id="header">
 	&nbsp;</div>
 <div id="navigation_bar">
@@ -85,12 +86,12 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 831; height: 247">
-			<h3>Message Driven Bean</h3>
-				<h4>Name</h4>
-					<p><%=beanMetaData.getEjbName()%> (JNDI: <%=ejbName%>)</p>
-				<h4>EJB Module</h4>
+			<h3>${messages["Message Driven Bean"]}</h3>
+				<h4>${messages["Name"]}</h4>
+					<p><%=beanMetaData.getEjbName()%> (${messages["JNDI: "]}<%=ejbName%>)</p>
+				<h4>${messages["EJB Module"]}</h4>
 					<p><%=ejbModule %></p>
-				<h4>Bean Statistics:</h4>
+				<h4>${messages["Bean Statistics:"]}</h4>
 					<p>&nbsp;</p>
 <%
 if (ejb.isstatisticsProvider())
@@ -99,29 +100,29 @@
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Name</h4>
+                    <h4 style="text-align: center">${messages["Name"]}</h4>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Value</h4>
+                    <h4 style="text-align: center">${messages["Value"]}</h4>
                     <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">
                       <tr>
                         <td width="33%">
-                        <h4 style="text-align: center">Current</h4>
+                        <h4 style="text-align: center">${messages["Current"]}</h4>
                         </td>
                         <td width="33%">
-                        <h4 style="text-align: center">Low</h4>
+                        <h4 style="text-align: center">${messages["Low"]}</h4>
                         </td>
                         <td width="34%">
-                        <h4 style="text-align: center">High</h4>
+                        <h4 style="text-align: center">${messages["High"]}</h4>
                         </td>
                       </tr>
                     </table>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Start Time</h4>
+                    <h4 style="text-align: center">${messages["Start Time"]}</h4>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Last Sample Time</h4>
+                    <h4 style="text-align: center">${messages["Last Sample Time"]}</h4>
                     </td>
                   </tr>
 	<%
@@ -132,19 +133,19 @@
 	<%=addStatRow (stats.getMessageCount ()) %>
 
             </table>
-            <p align="center"><a href="<%=resetUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>
+            <p align="center"><a href="<%=resetUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>
 <%
 }
 else
 {
 %>				
-					<p>none.</p>
+					<p>${messages["none."]}</p>
 <%
 }
 %>				
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
-				<h4>Invocation Statistics:</h4>
+				<h4>${messages["Invocation Statistics:"]}</h4>
 					<p>&nbsp;</p>
 <%
 	java.util.Iterator iterInvoc = invokeStats.getStats().entrySet().iterator();
@@ -156,22 +157,22 @@
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td  align="center">
-                    <h4 style="text-align: center">Method name</h4>
+                    <h4 style="text-align: center">${messages["Method name"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Min (ms)</h4>
+                    <h4 style="text-align: center">${messages["Min (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Max (ms)</h4>
+                    <h4 style="text-align: center">${messages["Max (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Average (ms)</h4>
+                    <h4 style="text-align: center">${messages["Average (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Total (ms)</h4>
+                    <h4 style="text-align: center">${messages["Total (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center"># Invocations</h4>
+                    <h4 style="text-align: center">${messages["# Invocations"]}</h4>
                     </td>
                   </tr>
 				<%
@@ -205,23 +206,23 @@
                   }
                   %>
             </table>
-            <p align="center"><a href="<%=resetInvocUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>
+            <p align="center"><a href="<%=resetInvocUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>
 <%
 	}
 	else
 	{
 %>	 
-					<p>none.</p>
+					<p>${messages["none."]}</p>
 <%
 	}
 %>
 
 					<p>&nbsp;</p>
-               <p>Actual concurrent invocations: <%=invokeStats.concurrentCalls%> (max: <%=invokeStats.maxConcurrentCalls%>)</p>
+               <p>${messages["Actual concurrent invocations: "]}<%=invokeStats.concurrentCalls%> (${messages["max: "]}<%=invokeStats.maxConcurrentCalls%>)</p>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
-					<p><a href="<%=containerUrl%>">View associated container MBean</a></p>
+					<p><a href="<%=containerUrl%>">${messages["View associated container MBean"]}</a></p>
 		</div>
 		<div class="spacer"><hr/></div>
 	</div>
@@ -231,7 +232,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPMethodChain.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPMethodChain.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPMethodChain.jsp	(working copy)
@@ -10,16 +10,16 @@
 %>
 <?xml version="1.0" encoding="iso-8859-1"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%@page import="org.jboss.console.I18n"%>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -43,15 +43,18 @@
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <h4 style="text-align: center"><font size="3">Method Chain for <%=AOPLister.shortenMethod(classname, method)%></font></h4>
+                    <h4 style="text-align: center"><font size="3">
+                    <%=I18n.gettext("Method Chain for {0}", AOPLister.shortenMethod(classname, method))  //$NON-NLS-1$
+                    %>
+                    </font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td>
-                    <h4>Type</h4>
+                    <h4>${messages["Type"]}</h4>
                     </td>
                     <td>
-                    <h4>Description</h4>
+                    <h4>${messages["Description"]}</h4>
                     </td>
                   </tr>
 <%
@@ -64,7 +67,7 @@
 
             </table>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -78,7 +81,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/WebModule.jsp
===================================================================
--- console/src/resources/webconsole.war/WebModule.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/WebModule.jsp	(working copy)
@@ -12,13 +12,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Web Module</title>
+<title>${messages["JBoss Management Console - Web Module"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -28,17 +28,21 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>Web Module: '<%=new ObjectName(webModule.getobjectName()).getKeyProperty("name")%>'</h3>
+			<%
+				String moduleName = new ObjectName(webModule.getobjectName()).getKeyProperty("name");
+				pageContext.setAttribute("moduleName", moduleName);
+			%>
+			<h3>${messages["Web Module: ''{0}''"][moduleName]}</h3>
 					<p>&nbsp;</p>
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center">
-                    <h4 style="text-align: center"><font size="3">Servlets</font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Servlets"]}</font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td width="50%" align="center" valign="top">
-                    <h4>This Web Module is composed of the following Servlets:</h4>
+                    <h4>${messages["This Web Module is composed of the following Servlets:"]}</h4>
                     <%
                         String[] namesStr = webModule.getservlets();
                         ObjectName[] names = null;
@@ -62,7 +66,7 @@
                             }
                         %>
 					</ul>
-                    <p align="left"><font size="1"><b>Number of Servlets: </b><%=(names!=null?names.length:0)%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Number of Servlets: "]}</b><%=(names!=null?names.length:0)%></font></p>
                     </td>
                   </tr>
 
@@ -71,8 +75,7 @@
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center">
-                    <h4 style="text-align: center"><font size="3">Deployment
-					Descriptor</font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Deployment Descriptor"]}</font></h4>
                     </td>
                   </tr>
                   <tr>
@@ -94,7 +97,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/createSnapshot.jsp
===================================================================
--- console/src/resources/webconsole.war/createSnapshot.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/createSnapshot.jsp	(working copy)
@@ -30,13 +30,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Create Snapshot</title>
+<title>${messages["JBoss Management Console - Create Snapshot"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -46,7 +46,7 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>Create Snapshot MBean Monitor</h3>
+			<h3>${messages["Create Snapshot MBean Monitor"]}</h3>
 					<p>&nbsp;</p>
 <%
    if (error != null)
@@ -59,27 +59,27 @@
 <form action="CreateSnapshot" method="post">
 <table cellspacing="2" cellpadding="2" border="0">
 <tr>
-    <td><b>Monitor Name</b></td>
+    <td><b>${messages["Monitor Name"]}</b></td>
     <td><input type="text" name="monitorName" size="35" value="<%=monitorName%>"></td>
-    <td><i>The name of the monitor and how it will be references within web console</i></td>
+    <td><i>${messages["The name of the monitor and how it will be references within web console"]}</i></td>
 </tr>
 <tr>
-    <td><b>Object Name</b></td>
+    <td><b>${messages["Object Name"]}</b></td>
     <td><input type="text" name="objectName" value="<%=objectName%>" size="35"></td>
-    <td><i>The MBean javax.management.ObjectName of the MBean you are monitoring</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName of the MBean you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Attribute</b></td>
+    <td><b>${messages["Attribute"]}</b></td>
     <td><input type="text" name="attribute" value="<%=attribute%>"  size="35"></td>
-    <td><i>The MBean Attribute you are monitoring</i></td>
+    <td><i>${messages["The MBean Attribute you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Time Period</b></td>
+    <td><b>${messages["Time Period"]}</b></td>
     <td><input type="text" name="period" size="35" value="<%=period%>"></td>
-    <td><i>How often should threshold be tested.</i></td>
+    <td><i>${messages["How often should threshold be tested."]}</i></td>
 </tr>
 </table>
-<input type="submit" value="Create">
+<input type="submit" value="${messages['Create']}">
 </form>
 		</div>
 		<div class="spacer"><hr/></div>
@@ -90,7 +90,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/Queue.jsp
===================================================================
--- console/src/resources/webconsole.war/Queue.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/Queue.jsp	(working copy)
@@ -10,13 +10,13 @@
 	MessageCounter counter = queue.getMessageCounter()[0];
 	
 	//check reset first
-	String doReset = request.getParameter("doReset");
-	if (doReset != null && doReset.equals("true"))
+	String doReset = request.getParameter("doReset"); //$NON-NLS-1$
+	if (doReset != null && doReset.equals("true")) //$NON-NLS-1$
     {
    	 	counter.resetCounter();
     }
     
-	String lastModified = "N/A";
+	String lastModified = I18n.gettext("N/A"); //$NON-NLS-1$
 	DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM);
 	if (counter.getLastUpdate() > 0)
 	{		
@@ -28,15 +28,16 @@
 
 <?xml version="1.0" encoding="iso-8859-1"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%@page import="org.jboss.console.I18n"%>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - JMS Queue</title>
+<title>${messages["JBoss Management Console - JMS Queue"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -48,24 +49,24 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 95%; height: 95%">
-			<h3>JMS Queue</h3>
-			<h4>Name</h4>
+			<h3>${messages["JMS Queue"]}</h3>
+			<h4>${messages["Name"]}</h4>
 				<p><%=queue.getQueueName()%></p>
-			<h4>JNDI Name</h4>
+			<h4>${messages["JNDI Name"]}</h4>
 				<p><%=queue.getJNDIName()%></p>		
-			<h4>Receiver Count</h4>
+			<h4>${messages["Receiver Count"]}</h4>
 				<p><%=queue.getReceiversCount()%></p>													
-			<h4>Message statistics:</h4>
+			<h4>${messages["Message statistics:"]}</h4>
 			<table border="1" cellpadding="0" cellspacing="0" class="data_table" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="33%" >
-                    <h4>Queue Depth:</h4>
+                    <h4>${messages["Queue Depth:"]}</h4>
                     </td>      
                     <td width="33%" >
-                    <h4>Queue Depth Delta:</h4>
+                    <h4>${messages["Queue Depth Delta:"]}</h4>
                     </td>                                     
                     <td width="33%">
-                    <h4>Maximum Depth:</h4>
+                    <h4>${messages["Maximum Depth:"]}</h4>
                     </td>                    
                   </tr>	
                   <tr align="center">
@@ -76,17 +77,17 @@
             </table>
             <p>&nbsp;</p>
 			<p>&nbsp;</p>
-            <h4>Message statistics since startup or reset:</h4>
+            <h4>${messages["Message statistics since startup or reset:"]}</h4>
 			<table border="1" cellpadding="0" cellspacing="0" class="data_table" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="33%" >
-                    <h4>Message Count:</h4>
+                    <h4>${messages["Message Count:"]}</h4>
                     </td>                    
                     <td width="33%">
-                    <h4>Message Count Delta:</h4>                    
+                    <h4>${messages["Message Count Delta:"]}</h4>                    
                     </td>                    
                     <td width="33%">
-                    <h4>Last Message Add Date:</h4>
+                    <h4>${messages["Last Message Add Date:"]}</h4>
                     </td>
                   </tr>	
                   <tr align="center">                  	
@@ -95,7 +96,7 @@
                   	<td><%=lastModified%></td>
                   </tr>
             </table>
-            <p align="center"><a href="<%=resetUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>            					
+            <p align="center"><a href="<%=resetUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>            					
             <p>&nbsp;</p>
 			<p>&nbsp;</p>						
 			              
@@ -111,7 +112,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/applet.jsp
===================================================================
--- console/src/resources/webconsole.war/applet.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/applet.jsp	(working copy)
@@ -16,6 +16,14 @@
    <param name="RefreshTime" value="">
    <param name="SessionId" value="<%=request.getSession().getId()%>">
    <param name="PMJMXName" value="jboss.admin:service=PluginManager">
+   <%-- Force applet to use server's default locale for consistency (since 
+   some strings are resolved on the server using its default locale) 
+   --%>
+   <param name="locale" value="<%= java.util.Locale.getDefault() %>">
+   <%-- This would tell the applet to use the locale chosen by the browser user, but
+   some parts of the applet currently use the server's default locale.
+   <param name="locale" value="${locale}">
+   --%>
 </applet>
 </p>
 
Index: console/src/resources/webconsole.war/J2EEApp.jsp
===================================================================
--- console/src/resources/webconsole.war/J2EEApp.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/J2EEApp.jsp	(working copy)
@@ -4,35 +4,36 @@
 
 <%
    String appName = new ObjectName(app.getobjectName()).getKeyProperty ("name");
+	pageContext.setAttribute("appName", appName);
 %>
 <html>
 <META HTTP-EQUIV="expires" CONTENT="0"/>
 <head>
-<title>J2EE Application: <%=appName%></title>
+<title>${messages["J2EE Application: {0}"][appName]}</title>
 </head>
 
   <body>
   
-  <h1><center>J2EE Application '<%=appName%>'</center></h1>
+  <h1><center>${messages["J2EE Application ''{0}''"][appName]}</center></h1>
   
   <p/>
   <p/>
   
   <table border="1">
    <tr>
-      <td><b>Management Object Name:</b></td>
+      <td><b>${messages["Management Object Name:"]}</b></td>
    </tr>
    <tr>
       <td><%=app.getobjectName()%></td>
    </tr>
    <tr>
-      <td><b>Provides Statistics:</b></td>
+      <td><b>${messages["Provides Statistics:"]}</b></td>
    </tr>
    <tr>
       <td><%=app.isstatisticsProvider()%></td>
    </tr>
    <tr>
-      <td><b>Deployment Descriptor:</b></td>
+      <td><b>${messages["Deployment Descriptor:"]}</b></td>
    </tr>
    <tr>
       <td><pre><%=org.jboss.console.plugins.helpers.servlet.ServletHelper.filter(app.getdeploymentDescriptor())%></pre></td>
Index: console/src/resources/webconsole.war/AOPConstructorMetaData.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPConstructorMetaData.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPConstructorMetaData.jsp	(working copy)
@@ -11,14 +11,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar"> 
@@ -48,6 +47,6 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%">
-			<h3>Metadata for constructor <%=con%></h3>
+			<h3>${messages["Metadata for constructor {0}"][param.constructor]}</h3>
 	    <p>&nbsp;</p>
 <%@ include file="AOPMetaData.jsp" %>
Index: console/src/resources/webconsole.war/AOPFieldChain.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPFieldChain.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPFieldChain.jsp	(working copy)
@@ -9,16 +9,16 @@
 %>
 <?xml version="1.0" encoding="iso-8859-1"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%@page import="org.jboss.console.I18n"%>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -41,15 +41,19 @@
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <h4 style="text-align: center"><font size="3">Field <%= (read) ? "Read" : "Write" %> Chain for <%=AOPLister.shortenField(classname, field)%></font></h4>
+                    <h4 style="text-align: center"><font size="3">
+                    <%= (read) ? I18n.gettext("Field Read Chain for {0}", AOPLister.shortenField(classname, field)) : //$NON-NLS-1$
+                       I18n.gettext("Field Write Chain for {0}", AOPLister.shortenField(classname, field)) //$NON-NLS-1$
+                       %>
+                    </font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td>
-                    <h4>Type</h4>
+                    <h4>${messages["Type"]}</h4>
                     </td>
                     <td>
-                    <h4>Description</h4>
+                    <h4>${messages["Description"]}</h4>
                     </td>
                   </tr>
 <%
@@ -62,7 +66,7 @@
 
             </table>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -76,7 +80,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/WEB-INF/web.xml
===================================================================
--- console/src/resources/webconsole.war/WEB-INF/web.xml	(revision 73826)
+++ console/src/resources/webconsole.war/WEB-INF/web.xml	(working copy)
@@ -1,10 +1,31 @@
 <?xml version="1.0"?>
-<!DOCTYPE web-app PUBLIC
-   "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-   "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+		 version="2.4">
+   <description>Web Admin Console</description>
+   
+	<welcome-file-list>
+		<welcome-file>index.jsp</welcome-file>
+	</welcome-file-list>
+   
+   <filter>
+   	<filter-name>I18nFilter</filter-name>
+   	<filter-class>org.jboss.varia.i18n.I18nFilter</filter-class>
+   	<init-param>
+   		<param-name>bundle</param-name>
+   		<param-value>org.jboss.console.messages</param-value>
+   	</init-param>
+   </filter>
+   <filter-mapping>
+   	<filter-name>I18nFilter</filter-name>
+   	<url-pattern>/*</url-pattern>
+   </filter-mapping>
 
-<web-app>
-   <description>Web Admin Console</description>
+   <listener>
+   	<listener-class>org.jboss.varia.i18n.I18nServletContextListener</listener-class>
+   </listener>
+
    <servlet>
       <servlet-name>J2EEFolder</servlet-name>
       <servlet-class>org.jboss.console.plugins.helpers.ServletPluginHelper</servlet-class>
@@ -325,16 +346,18 @@
       <url-pattern>/ClearMonitorAlerts</url-pattern>
    </servlet-mapping>
 
-  <servlet-mapping>
+   <servlet-mapping>
       <servlet-name>Acknowledge Active Alarms</servlet-name>
       <url-pattern>/AcknowledgeActiveAlarms</url-pattern>
    </servlet-mapping>
-   
-   <taglib>
-      <taglib-uri>/webconsole</taglib-uri>
-      <taglib-location>/WEB-INF/tlds/webconsole.tld</taglib-location>
-   </taglib>
 
+   <jsp-config>
+      <taglib>
+         <taglib-uri>/webconsole</taglib-uri>
+         <taglib-location>/WEB-INF/tlds/webconsole.tld</taglib-location>
+      </taglib>
+   </jsp-config>
+
    <!-- A security constraint that restricts access to the HTML JMX console
    to users with the role JBossAdmin. Edit the roles to what you want and
    uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
Index: console/src/resources/webconsole.war/WEB-INF/classes/Classloaders.bsh
===================================================================
--- console/src/resources/webconsole.war/WEB-INF/classes/Classloaders.bsh	(revision 73826)
+++ console/src/resources/webconsole.war/WEB-INF/classes/Classloaders.bsh	(working copy)
@@ -1,5 +1,6 @@
 import org.jboss.console.manager.interfaces.*;
 import org.jboss.console.manager.interfaces.impl.*;
+import org.jboss.console.I18n;
 import org.jboss.console.plugins.*;
 import org.jboss.console.plugins.helpers.*;
 
@@ -7,12 +8,12 @@
 
    String getVersion (PluginContext ctx)
    {
-      return "0.0a";
+      return "0.0a"; //$NON-NLS-1$
    }
    
    String getName (PluginContext ctx)
    {
-      return "UCL lister";
+      return I18n.gettext("UCL lister"); //$NON-NLS-1$
    }
 
    ResourceTreeNode createUCLSubResource (PluginContext ctx, ObjectInstance instance)
@@ -20,16 +21,16 @@
       String uclName = instance.getObjectName().getKeyProperty ("UCL");
       TreeNodeMenuEntry[] menus = ctx.createMenus (new String[] 
             {
-               "Before for UCL="+uclName, "before.html&ucl="+uclName,
+               I18n.gettext("Before for UCL={0}", uclName), "before.html&ucl="+uclName, //$NON-NLS-1$ //$NON-NLS-2$
                null,
-               "After", "test.html"
+               I18n.gettext("After"), "test.html" //$NON-NLS-1$ //$NON-NLS-2$
             });
             
       return ctx.createResourceNode ( 
-            "UCL " + uclName, // name
-            "UCL with id " + uclName, // description
-            "arrow.gif", // Icon URL
-            "mapage&ucl=" + uclName, // Default URL
+            I18n.gettext("UCL {0}", uclName), // name //$NON-NLS-1$
+            I18n.gettext("UCL with id {0}", uclName), // description //$NON-NLS-1$
+            "arrow.gif", // Icon URL //$NON-NLS-1$
+            "mapage&ucl=" + uclName, // Default URL //$NON-NLS-1$
             menus,
             null,
             null,
@@ -40,8 +41,8 @@
    ResourceTreeNode[] createUCLSubResources (PluginContext ctx) 
    {
       ObjectInstance[] insts = 
-         ctx.getMBeansForClass("jmx.loading:*", 
-            "org.jboss.mx.loading.UnifiedClassLoader2");
+         ctx.getMBeansForClass("jmx.loading:*",  //$NON-NLS-1$
+            "org.jboss.mx.loading.UnifiedClassLoader2"); //$NON-NLS-1$
       ctx.getLogger().info("TAILLE: " + insts.length);
       ResourceTreeNode[] result = new ResourceTreeNode[10];//[insts.length];
       for (int i=0; i<result.length && i<10; i++)
@@ -60,16 +61,16 @@
       {
          TreeNodeMenuEntry[] menus = ctx.createMenus (new String[] 
                {
-                  "Before", "before.html",
+                  I18n.gettext("Before"), "before.html", //$NON-NLS-1$ //$NON-NLS-2$
                   null,
-                  "After", "after.html"
+                  I18n.gettext("After"), "after.html" //$NON-NLS-1$ //$NON-NLS-2$
                });
 
          return ctx.createTreeNode (
-               "Unified ClassLoaders", // name
-               "Display all JBoss UCLs", // description
-               "http://localhost:8080/web-console/arrow.gif", // Icon URL
-               "http://www.jboss.org/", // Default URL
+               I18n.gettext("Unified ClassLoaders"), // name //$NON-NLS-1$
+               I18n.gettext("Display all JBoss UCLs"), // description //$NON-NLS-1$
+               "http://localhost:8080/web-console/arrow.gif", // Icon URL //$NON-NLS-1$
+               "http://www.jboss.org/", // Default URL //$NON-NLS-1$
                menus,
                null, // sub nodes
                createUCLSubResources (ctx)   // Sub-Resources                  
Index: console/src/resources/webconsole.war/WEB-INF/classes/JNDIView.bsh
===================================================================
--- console/src/resources/webconsole.war/WEB-INF/classes/JNDIView.bsh	(revision 73826)
+++ console/src/resources/webconsole.war/WEB-INF/classes/JNDIView.bsh	(working copy)
@@ -1,5 +1,6 @@
 import org.jboss.console.manager.interfaces.*;
 import org.jboss.console.manager.interfaces.impl.*;
+import org.jboss.console.I18n;
 import org.jboss.console.plugins.*;
 import org.jboss.console.plugins.helpers.*;
 
@@ -10,14 +11,14 @@
       try
       {
          return ctx.createResourceNode (
-               "JNDIView", // name
-               "Viewer for JNDI Tree", // description
-               "images/jndiview.gif", // Icon URL
-               "JNDIView.jsp", // Default URL
+               I18n.gettext("JNDIView"), // name //$NON-NLS-1$
+               I18n.gettext("Viewer for JNDI Tree"), // description //$NON-NLS-1$
+               "images/jndiview.gif", // Icon URL //$NON-NLS-1$
+               "JNDIView.jsp", // Default URL //$NON-NLS-1$
                null,
                null,
                null,
-               new SimpleFolderResource ("ROOT/JNDIView"));
+               new SimpleFolderResource ("ROOT/JNDIView")); //$NON-NLS-1$
       }
       catch (Exception e)
       {
Index: console/src/resources/webconsole.war/WEB-INF/classes/SystemFolder.bsh
===================================================================
--- console/src/resources/webconsole.war/WEB-INF/classes/SystemFolder.bsh	(revision 73826)
+++ console/src/resources/webconsole.war/WEB-INF/classes/SystemFolder.bsh	(working copy)
@@ -1,5 +1,6 @@
 import org.jboss.console.manager.interfaces.*;
 import org.jboss.console.manager.interfaces.impl.*;
+import org.jboss.console.I18n;
 import org.jboss.console.plugins.*;
 import org.jboss.console.plugins.helpers.*;
 
@@ -10,14 +11,14 @@
       try
       {
          return ctx.createResourceNode ( 
-               "System", // name
-               "JBoss Kernel Management", // description
-               "images/settings32.gif", // Icon URL
-               "SysProperties.jsp", // Default URL
+               I18n.gettext("System"), // name //$NON-NLS-1$
+               I18n.gettext("JBoss Kernel Management"), // description //$NON-NLS-1$
+               "images/settings32.gif", // Icon URL //$NON-NLS-1$
+               "SysProperties.jsp", // Default URL //$NON-NLS-1$
                null,
                null,
                null,
-               new SimpleFolderResource ("ROOT/System"));
+               new SimpleFolderResource ("ROOT/System")); //$NON-NLS-1$
       }
       catch (Exception e)
       {
Index: console/src/resources/webconsole.war/WEB-INF/classes/J2EEFolder.bsh
===================================================================
--- console/src/resources/webconsole.war/WEB-INF/classes/J2EEFolder.bsh	(revision 73826)
+++ console/src/resources/webconsole.war/WEB-INF/classes/J2EEFolder.bsh	(working copy)
@@ -1,5 +1,6 @@
 import org.jboss.console.manager.interfaces.*;
 import org.jboss.console.manager.interfaces.impl.*;
+import org.jboss.console.I18n;
 import org.jboss.console.plugins.*;
 import org.jboss.console.plugins.helpers.*;
 
@@ -10,14 +11,14 @@
       try
       {
          return ctx.createResourceNode ( 
-               "J2EE", // name
-               "J2EE Management", // description
-               "images/elements32.gif", // Icon URL
+               I18n.gettext("J2EE"), // name //$NON-NLS-1$
+               I18n.gettext("J2EE Management"), // description //$NON-NLS-1$
+               "images/elements32.gif", // Icon URL //$NON-NLS-1$
                null, // Default URL
                null,
                null,
                null,
-               new SimpleFolderResource ("ROOT/J2EE")).setVisibility(ResourceTreeNode.INVISIBLE_IF_SUBNODE_EXISTS);
+               new SimpleFolderResource ("ROOT/J2EE")).setVisibility(ResourceTreeNode.INVISIBLE_IF_SUBNODE_EXISTS); //$NON-NLS-1$
       }
       catch (Exception e)
       {
Index: console/src/resources/webconsole.war/EntityEjb.jsp
===================================================================
--- console/src/resources/webconsole.war/EntityEjb.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/EntityEjb.jsp	(working copy)
@@ -1,3 +1,4 @@
+<%@page import="org.jboss.console.I18n"%>
 <%@ taglib uri="/webconsole" prefix="jb" %>
 <jb:mbean id="ejb" intf="org.jboss.management.j2ee.EntityBeanMBean" />
 <jb:mbean id="container" mbean='<%="jboss.j2ee:service=EJB,jndiName=" + (new javax.management.ObjectName(request.getParameter("ObjectName")).getKeyProperty ("name"))%>' intf="org.jboss.ejb.ContainerMBean" />
@@ -33,22 +34,22 @@
 	String start = new java.util.Date(stat.getStartTime ()).toString ();
 	String lastSample = new java.util.Date(stat.getLastSampleTime ()).toString ();
 	
-	String result = "<tr><td width=\"25%\"><font size=\"1\">" + stat.getName() + " (unit: " + stat.getUnit () + ")</font></td>" +
-	                "<td width=\"25%\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\"><tr>";
+	String result = "<tr><td width=\"25%\"><font size=\"1\">" + stat.getName() + " ("+I18n.gettext("unit: ") + stat.getUnit () + ")</font></td>" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+	                "<td width=\"25%\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\"><tr>"; //$NON-NLS-1$
 	                
 	if (stat instanceof javax.management.j2ee.statistics.CountStatistic)
 	{
-		result+= "<td width=\"33%\" align=\"center\"><font size=\"1\">" + ((javax.management.j2ee.statistics.CountStatistic)stat).getCount() + "</font></td><td width=\"33%\"></td><td width=\"34%\"></td>";
-    }
+		result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + ((javax.management.j2ee.statistics.CountStatistic)stat).getCount() + "</font></td><td width=\"33%\"></td><td width=\"34%\"></td>"; //$NON-NLS-1$ //$NON-NLS-2$
+   }
 	else if (stat instanceof javax.management.j2ee.statistics.RangeStatistic)
 	{
 		javax.management.j2ee.statistics.RangeStatistic rStat = (javax.management.j2ee.statistics.RangeStatistic)stat;
 		
-		result+= "<td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getCurrent ()  + "</font></td><td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getLowWaterMark () + "</font></td>" +
-				 "<td width=\"34%\" align=\"center\"><font size=\"1\">" + rStat.getHighWaterMark() + "</font></td>";
+		result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getCurrent ()  + "</font></td><td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getLowWaterMark () + "</font></td>" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				    "<td width=\"34%\" align=\"center\"><font size=\"1\">" + rStat.getHighWaterMark() + "</font></td>"; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 	
-	result+= "</tr></table></td><td width=\"25%\"><font size=\"1\">" + start + "</font></td><td width=\"25%\"><font size=\"1\">" + lastSample + "</font>&nbsp;</td></tr>";
+	result += "</tr></table></td><td width=\"25%\"><font size=\"1\">" + start + "</font></td><td width=\"25%\"><font size=\"1\">" + lastSample + "</font>&nbsp;</td></tr>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	
 	return result;
 
@@ -58,13 +59,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Entity Bean</title>
+<title>${messages["JBoss Management Console - Entity Bean"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -74,12 +75,12 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 831; height: 247">
-			<h3>Entity Bean</h3>
-				<h4>Name</h4>
-					<p><%=beanMetaData.getEjbName()%> (JNDI: <%=ejbName%>)</p>
-				<h4>EJB Module</h4>
+			<h3>${messages["Entity Bean"]}</h3>
+				<h4>${messages["Name"]}</h4>
+					<p><%=beanMetaData.getEjbName()%> (${messages["JNDI: "]}<%=ejbName%>)</p>
+				<h4>${messages["EJB Module"]}</h4>
 					<p><%=ejbModule %></p>
-				<h4>Bean Statistics:</h4>
+				<h4>${messages["Bean Statistics:"]}</h4>
 					<p>&nbsp;</p>
 <%
 if (ejb.isstatisticsProvider())
@@ -88,29 +89,29 @@
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Name</h4>
+                    <h4 style="text-align: center">${messages["Name"]}</h4>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Value</h4>
+                    <h4 style="text-align: center">${messages["Value"]}</h4>
                     <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">
                       <tr>
                         <td width="33%">
-                        <h4 style="text-align: center">Current</h4>
+                        <h4 style="text-align: center">${messages["Current"]}</h4>
                         </td>
                         <td width="33%">
-                        <h4 style="text-align: center">Low</h4>
+                        <h4 style="text-align: center">${messages["Low"]}</h4>
                         </td>
                         <td width="34%">
-                        <h4 style="text-align: center">High</h4>
+                        <h4 style="text-align: center">${messages["High"]}</h4>
                         </td>
                       </tr>
                     </table>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Start Time</h4>
+                    <h4 style="text-align: center">${messages["Start Time"]}</h4>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Last Sample Time</h4>
+                    <h4 style="text-align: center">${messages["Last Sample Time"]}</h4>
                     </td>
                   </tr>
 	<%
@@ -122,19 +123,19 @@
 	<%=addStatRow (stats.getPooledCount ()) %>
 
             </table>
-            <p align="center"><a href="<%=resetUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>
+            <p align="center"><a href="<%=resetUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>
 <%
 }
 else
 {
 %>				
-					<p>none.</p>
+					<p>${messages["none."]}</p>
 <%
 }
 %>				
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
-				<h4>Invocation Statistics:</h4>
+				<h4>${messages["Invocation Statistics:"]}</h4>
 					<p>&nbsp;</p>
 <%
 	java.util.Iterator iterInvoc = invokeStats.getStats().entrySet().iterator();
@@ -146,22 +147,22 @@
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td  align="center">
-                    <h4 style="text-align: center">Method name</h4>
+                    <h4 style="text-align: center">${messages["Method name"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Min (ms)</h4>
+                    <h4 style="text-align: center">${messages["Min (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Max (ms)</h4>
+                    <h4 style="text-align: center">${messages["Max (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Average (ms)</h4>
+                    <h4 style="text-align: center">${messages["Average (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Total (ms)</h4>
+                    <h4 style="text-align: center">${messages["Total (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center"># Invocations</h4>
+                    <h4 style="text-align: center">${messages["# Invocations"]}</h4>
                     </td>
                   </tr>
 				<%
@@ -195,23 +196,24 @@
                   }
                   %>
             </table>
-            <p align="center"><a href="<%=resetInvocUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>
+            <p align="center"><a href="<%=resetInvocUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>
 <%
 	}
 	else
 	{
 %>	 
-					<p>none.</p>
+					<p>${messages["none."]}</p>
 <%
 	}
 %>
 
 					<p>&nbsp;</p>
-               <p>Actual concurrent invocations: <%=invokeStats.concurrentCalls%> (max: <%=invokeStats.maxConcurrentCalls%>)</p>
+               <p>${messages["Actual concurrent invocations: "]}<%=invokeStats.concurrentCalls%> 
+               (${messages["max: "]}<%=invokeStats.maxConcurrentCalls%>)</p>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
-					<p><a href="<%=containerUrl%>">View associated container MBean</a></p>
+					<p><a href="<%=containerUrl%>">${messages["View associated container MBean"]}</a></p>
 		</div>
 		<div class="spacer"><hr/></div>
 	</div>
@@ -221,7 +223,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/TopicNavigation.jsp
===================================================================
--- console/src/resources/webconsole.war/TopicNavigation.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/TopicNavigation.jsp	(working copy)
@@ -4,6 +4,6 @@
 	String objParameter = "ObjectName=" + URLEncoder.encode(request.getParameter("ObjectName")); 
 %>
 <jb:navigation selectedTabName="<%=request.getParameter("selectedTabName")%>">
-		<jb:tab name="JMS Topic" href="<%="Topic.jsp?" + objParameter%>" />
-		<jb:tab name="Subscriptions" href="<%="TopicSubscriptions.jsp?" + objParameter%>" />	
+		<jb:tab name="${messages[\"JMS Topic\"]}" href="<%="Topic.jsp?" + objParameter%>" />
+		<jb:tab name="${messages[\"Subscriptions\"]}" href="<%="TopicSubscriptions.jsp?" + objParameter%>" />	
 </jb:navigation>
\ No newline at end of file
Index: console/src/resources/webconsole.war/EJB.jsp
===================================================================
--- console/src/resources/webconsole.war/EJB.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/EJB.jsp	(working copy)
@@ -3,6 +3,7 @@
 
 <%
    String ejbName = new javax.management.ObjectName(request.getParameter("ObjectName")).getKeyProperty ("name");
+	pageContext.setAttribute("ebjName", ejbName);
    String containerUrl = "jboss.j2ee:service=EJB,jndiName=" + ejbName;
    containerUrl = java.net.URLEncoder.encode(containerUrl);
    containerUrl = "../jmx-console/HtmlAdaptor?action=inspectMBean&name=" + containerUrl;
@@ -10,32 +11,32 @@
 <html>
 <META HTTP-EQUIV="expires" CONTENT="0"/>
 <head>
-<title>EJB: <%=ejbName%></title>
+<title>${messages["EJB: {0}"][ejbName]}</title>
 </head>
 
   <body>
   
-  <h1><center>EJB '<%=ejbName%>'</center></h1>
+  <h1><center>${messages["EJB: ''{0}''"][ejbName]}</center></h1>
   
   <p/>
   <p/>
   
   <table border="1">
    <tr>
-      <td><b>Management Object Name:</b></td>
+      <td><b>${messages["Management Object Name:"]}</b></td>
    </tr>
    <tr>
       <td><%=ejb.getobjectName()%>&nbsp;</td>
    </tr>
    <tr>
-      <td><b>Provides Statistics:</b></td>
+      <td><b>${messages["Provides Statistics:"]}</b></td>
    </tr>
    <tr>
       <td><%=ejb.isstatisticsProvider()%>&nbsp;</td>
    </tr>
   </table>
 
-   <a href="<%=containerUrl%>">Visit associated container MBean...</a>
+   <a href="<%=containerUrl%>">${messages["Visit associated container MBean..."]}</a>
 
   </body>
 
Index: console/src/resources/webconsole.war/EJBModule.jsp
===================================================================
--- console/src/resources/webconsole.war/EJBModule.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/EJBModule.jsp	(working copy)
@@ -4,35 +4,36 @@
 
 <%
    String moduleName = new ObjectName(module.getobjectName()).getKeyProperty ("name");
+	pageContext.setAttribute("moduleName", moduleName);
 %>
 <html>
 <META HTTP-EQUIV="expires" CONTENT="0"/>
 <head>
-<title>EJB-Module: <%=moduleName%></title>
+<title>${messages["EJB-Module: {0}"][moduleName]}</title>
 </head>
 
   <body>
   
-  <h1><center>EJB-Module '<%=moduleName%>'</center></h1>
+  <h1><center>${messages["EJB-Module ''{0}''"][moduleName]}</center></h1>
   
   <p/>
   <p/>
   
   <table border="1">
    <tr>
-      <td><b>Management Object Name:</b></td>
+      <td><b>${messages["Management Object Name:"]}</b></td>
    </tr>
    <tr>
       <td><%=module.getobjectName()%></td>
    </tr>
    <tr>
-      <td><b>Provides Statistics:</b></td>
+      <td><b>${messages["Provides Statistics:"]}</b></td>
    </tr>
    <tr>
       <td><%=module.isstatisticsProvider()%></td>
    </tr>
    <tr>
-      <td><b>Deployment Descriptor:</b></td>
+      <td><b>${messages["Deployment Descriptor:"]}</b></td>
    </tr>
    <tr>
       <td><pre><%=org.jboss.console.plugins.helpers.servlet.ServletHelper.filter(module.getdeploymentDescriptor())%></pre></td>
Index: console/src/resources/webconsole.war/listMonitors.jsp
===================================================================
--- console/src/resources/webconsole.war/listMonitors.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/listMonitors.jsp	(working copy)
@@ -7,6 +7,7 @@
                  javax.management.ObjectName,
                  java.util.HashSet,
                  java.util.ArrayList"%>
+<%@page import="org.jboss.console.I18n"%>
  <%--
  |
  |  Author: Bill Burke    (bill@jboss.org)
@@ -22,13 +23,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Manage Monitor</title>
+<title>${messages["JBoss Management Console - Manage Monitor"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -38,72 +39,72 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>Monitors and Monitor Status</h3>
+			<h3>${messages["Monitors and Monitor Status"]}</h3>
 					<p>&nbsp;</p>
 <table cellspacing="2" cellpadding="2" border="1">
 <tr>
-    <td><b>Status</b></td>
-    <td><b>Monitor Name</b></td>
-    <td><b>Observed MBean</b></td>
-    <td><b>Observed Attribute</b></td>
+    <td><b>${messages["Status"]}</b></td>
+    <td><b>${messages["Monitor Name"]}</b></td>
+    <td><b>${messages["Observed MBean"]}</b></td>
+    <td><b>${messages["Observed Attribute"]}</b></td>
     <td>&nbsp;</td>
 </tr>
 <%
    MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
    InstanceOfQueryExp queryExp = null;
-   queryExp = new InstanceOfQueryExp("org.jboss.monitor.JBossMonitorMBean");
+   queryExp = new InstanceOfQueryExp("org.jboss.monitor.JBossMonitorMBean"); //$NON-NLS-1$
    Set monitors = mbeanServer.queryNames(null, queryExp);
    Iterator mbeans = monitors.iterator();
    boolean someAlertSet = false;
    while (mbeans.hasNext())
    {
       ObjectName moname = (ObjectName)mbeans.next();
-      String monitorName = (String)mbeanServer.getAttribute(moname, "MonitorName");
-      ObjectName observedObject = (ObjectName)mbeanServer.getAttribute(moname, "ObservedObject");
-      String attribute = (String)mbeanServer.getAttribute(moname, "ObservedAttribute");
-      boolean enabled = ((Boolean)mbeanServer.getAttribute(moname, "Enabled")).booleanValue();
+      String monitorName = (String)mbeanServer.getAttribute(moname, "MonitorName"); //$NON-NLS-1$
+      ObjectName observedObject = (ObjectName)mbeanServer.getAttribute(moname, "ObservedObject"); //$NON-NLS-1$
+      String attribute = (String)mbeanServer.getAttribute(moname, "ObservedAttribute"); //$NON-NLS-1$
+      boolean enabled = ((Boolean)mbeanServer.getAttribute(moname, "Enabled")).booleanValue(); //$NON-NLS-1$
 
-      Object[] args = {"monitors", monitorName, "-service.xml"};
-      String[] signature = {"java.lang.String", "java.lang.String", "java.lang.String"};
-      Object rtn = mbeanServer.invoke(new ObjectName("jboss.admin:service=DeploymentFileRepository"), "isStored", args, signature);
+      Object[] args = {"monitors", monitorName, "-service.xml"}; //$NON-NLS-1$ //$NON-NLS-2$
+      String[] signature = {"java.lang.String", "java.lang.String", "java.lang.String"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+      Object rtn = mbeanServer.invoke(new ObjectName("jboss.admin:service=DeploymentFileRepository"), "isStored", args, signature); //$NON-NLS-1$ //$NON-NLS-2$
       boolean persisted = ((Boolean)rtn).booleanValue();
 
       Object[] nullArgs = {};
       String[] nullSig = {};
-      boolean alerted = ((Boolean)mbeanServer.invoke(moname, "alerted", nullArgs, nullSig)).booleanValue();
+      boolean alerted = ((Boolean)mbeanServer.invoke(moname, "alerted", nullArgs, nullSig)).booleanValue(); //$NON-NLS-1$
       if (alerted) someAlertSet = true;
-      String color = "black";
-      if (!enabled) color = "grey";
-      String status = "";
+      String color = "black"; //$NON-NLS-1$
+      if (!enabled) color = "grey"; //$NON-NLS-1$
+      String status = ""; //$NON-NLS-1$
       if (alerted)
       {
-         status = "<font color=\"red\">ALERT</font>";
+         status = "<font color=\"red\">"+I18n.gettext("ALERT")+"</font>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
       }
       else if (!enabled)
       {
-         status = "<font color=\"grey\"><i>disabled</i></font>";
+         status = "<font color=\"grey\"><i>"+I18n.gettext("disabled")+"</i></font>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
       }
       else
       {
-         status = "<font color=\"green\">OK</font>";
+         status = "<font color=\"green\">"+I18n.gettext("OK")+"</font>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
       }
       String link = null;
       if (persisted)
       {
-         link = "manageThresholdMonitor.jsp?monitorObjectName=" + java.net.URLEncoder.encode(moname.toString());
+         link = "manageThresholdMonitor.jsp?monitorObjectName=" + java.net.URLEncoder.encode(moname.toString()); //$NON-NLS-1$
       }
       else
       {
-         link = "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + java.net.URLEncoder.encode(moname.toString());
+         link = "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + java.net.URLEncoder.encode(moname.toString()); //$NON-NLS-1$
       }
-      String observedMbeanLink = "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + java.net.URLEncoder.encode(observedObject.toString());
+      String observedMbeanLink = "/jmx-console/HtmlAdaptor?action=inspectMBean&name=" + java.net.URLEncoder.encode(observedObject.toString()); //$NON-NLS-1$
 %>
 <tr>
     <td><%=status%></td>
     <td><font color="<%=color%>"><%=monitorName%></font></td>
     <td><font color="<%=color%>"><a href="<%=observedMbeanLink%>"><%=observedObject.toString()%></a></font></td>
     <td><font color="<%=color%>"><%=attribute%></font></td>
-    <td><a href="<%=link%>">manage</a></td>
+    <td><a href="<%=link%>">${messages["manage"]}</a></td>
 </tr>
 <%
    }
@@ -114,14 +115,14 @@
    {
 %>
 <form action="ClearMonitorAlerts" method="post">
-<input type="submit" name="action" value="Clear All Alerts">
+<input type="submit" name="action" value="${messages['Clear All Alerts']}">
 </form>
 <%
    }
 }
 catch (Exception ex)
 {
-   %> ERROR in parsing <%
+   %> ${messages["ERROR in parsing"]} <%
    ex.printStackTrace();
 }
 %>
@@ -134,7 +135,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPIntroductionPointcut.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPIntroductionPointcut.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPIntroductionPointcut.jsp	(working copy)
@@ -11,14 +11,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -32,12 +31,12 @@
 	<center> <h4 style="text-align: center"><%=name%></h4>
 	<div id="content">
 		<div class="content_block" style="width: 100%">
-			<h3>Introduction Pointcut</h3>
+			<h3>${messages["Introduction Pointcut"]}</h3>
 	    <p>&nbsp;</p>
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <p align="left"><font size="1"><b>Class Expression: </b><%=introduction.getClassExpr()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Class Expression: "]}</b><%=introduction.getClassExpr()%></font></p>
                     </td>
                   </tr>
 <%
@@ -49,13 +48,13 @@
 %>
                   <tr>
                     <td>
-                    <p align="left"><h4>Mixin Class</h4></p>
+                    <p align="left"><h4>${messages["Mixin Class"]}</h4></p>
                     <p align="left"><font size="1"><%=mixin.getClassName()%></font></p>
-                    <p align="left"><h4>Mixin Initializer</h4></p>
+                    <p align="left"><h4>${messages["Mixin Initializer"]}</h4></p>
                     <p align="left"><font size="1"><%=initializer%></font></p>
                     </td>
                     <td>
-                    <p align="left"><h4>Interfaces</h4></p>
+                    <p align="left"><h4>${messages["Interfaces"]}</h4></p>
 <%           
 	  for (int j = 0; j < interfaces.length; j++) {
 %>
@@ -70,7 +69,7 @@
 %>
                   <tr>
                     <td colspan="2">
-                    <p align="left"><h4>Other Interfaces</h4></p>
+                    <p align="left"><h4>${messages["Other Interfaces"]}</h4></p>
 <%           
 	  for (int j = 0; j < interfaces.length; j++) {
 %>
@@ -83,7 +82,7 @@
             </table>
 					<p>&nbsp;</p>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -97,7 +96,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss™ Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/StatefulEjb.jsp
===================================================================
--- console/src/resources/webconsole.war/StatefulEjb.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/StatefulEjb.jsp	(working copy)
@@ -1,3 +1,4 @@
+<%@page import="org.jboss.console.I18n"%>
 <%@ taglib uri="/webconsole" prefix="jb" %>
 <jb:mbean id="ejb" intf="org.jboss.management.j2ee.StatefulSessionBeanMBean" />
 <jb:mbean id="container" mbean='<%="jboss.j2ee:service=EJB,jndiName=" + (new javax.management.ObjectName(request.getParameter("ObjectName")).getKeyProperty ("name"))%>' intf="org.jboss.ejb.ContainerMBean" />
@@ -33,22 +34,22 @@
 	String start = new java.util.Date(stat.getStartTime ()).toString ();
 	String lastSample = new java.util.Date(stat.getLastSampleTime ()).toString ();
 	
-	String result = "<tr><td width=\"25%\"><font size=\"1\">" + stat.getName() + " (unit: " + stat.getUnit () + ")</font></td>" +
-	                "<td width=\"25%\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\"><tr>";
+	String result = "<tr><td width=\"25%\"><font size=\"1\">" + stat.getName() + " ("+I18n.gettext("unit: ") + stat.getUnit () + ")</font></td>" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+	                "<td width=\"25%\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\"><tr>"; //$NON-NLS-1$
 	                
 	if (stat instanceof javax.management.j2ee.statistics.CountStatistic)
 	{
-		result+= "<td width=\"33%\" align=\"center\"><font size=\"1\">" + ((javax.management.j2ee.statistics.CountStatistic)stat).getCount() + "</font></td><td width=\"33%\"></td><td width=\"34%\"></td>";
-    }
+		result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + ((javax.management.j2ee.statistics.CountStatistic)stat).getCount() + "</font></td><td width=\"33%\"></td><td width=\"34%\"></td>"; //$NON-NLS-1$ //$NON-NLS-2$
+   }
 	else if (stat instanceof javax.management.j2ee.statistics.RangeStatistic)
 	{
 		javax.management.j2ee.statistics.RangeStatistic rStat = (javax.management.j2ee.statistics.RangeStatistic)stat;
 		
-		result+= "<td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getCurrent ()  + "</font></td><td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getLowWaterMark () + "</font></td>" +
-				 "<td width=\"34%\" align=\"center\"><font size=\"1\">" + rStat.getHighWaterMark() + "</font></td>";
+		result += "<td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getCurrent ()  + "</font></td><td width=\"33%\" align=\"center\"><font size=\"1\">" + rStat.getLowWaterMark () + "</font></td>" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				    "<td width=\"34%\" align=\"center\"><font size=\"1\">" + rStat.getHighWaterMark() + "</font></td>"; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 	
-	result+= "</tr></table></td><td width=\"25%\"><font size=\"1\">" + start + "</font></td><td width=\"25%\"><font size=\"1\">" + lastSample + "</font>&nbsp;</td></tr>";
+	result += "</tr></table></td><td width=\"25%\"><font size=\"1\">" + start + "</font></td><td width=\"25%\"><font size=\"1\">" + lastSample + "</font>&nbsp;</td></tr>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	
 	return result;
 
@@ -58,13 +59,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Stateful Session Bean</title>
+<title>${messages["JBoss Management Console - Stateful Session Bean"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -74,12 +75,12 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 831; height: 247">
-			<h3>Stateful Session Bean</h3>
-				<h4>Name</h4>
-					<p><%=beanMetaData.getEjbName()%> (JNDI: <%=ejbName%>)</p>
-				<h4>EJB Module</h4>
+			<h3>${messages["Stateful Session Bean"]}</h3>
+				<h4>${messages["Name"]}</h4>
+					<p><%=beanMetaData.getEjbName()%> (${messages["JNDI: "]}<%=ejbName%>)</p>
+				<h4>${messages["EJB Module"]}</h4>
 					<p><%=ejbModule %></p>
-				<h4>Bean Statistics:</h4>
+				<h4>${messages["Bean Statistics:"]}</h4>
 					<p>&nbsp;</p>
 <%
 if (ejb.isstatisticsProvider())
@@ -88,29 +89,29 @@
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Name</h4>
+                    <h4 style="text-align: center">${messages["Name"]}</h4>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Value</h4>
+                    <h4 style="text-align: center">${messages["Value"]}</h4>
                     <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3">
                       <tr>
                         <td width="33%">
-                        <h4 style="text-align: center">Current</h4>
+                        <h4 style="text-align: center">${messages["Current"]}</h4>
                         </td>
                         <td width="33%">
-                        <h4 style="text-align: center">Low</h4>
+                        <h4 style="text-align: center">${messages["Low"]}</h4>
                         </td>
                         <td width="34%">
-                        <h4 style="text-align: center">High</h4>
+                        <h4 style="text-align: center">${messages["High"]}</h4>
                         </td>
                       </tr>
                     </table>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Start Time</h4>
+                    <h4 style="text-align: center">${messages["Start Time"]}</h4>
                     </td>
                     <td width="25%" align="center">
-                    <h4 style="text-align: center">Last Sample Time</h4>
+                    <h4 style="text-align: center">${messages["Last Sample Time"]}</h4>
                     </td>
                   </tr>
 	<%
@@ -122,19 +123,19 @@
 	<%=addStatRow (stats.getPassiveCount ()) %>
 
             </table>
-            <p align="center"><a href="<%=resetUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>
+            <p align="center"><a href="<%=resetUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>
 <%
 }
 else
 {
 %>				
-					<p>none.</p>
+					<p>${messages["none."]}</p>
 <%
 }
 %>				
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
-				<h4>Invocation Statistics:</h4>
+				<h4>${messages["Invocation Statistics:"]}</h4>
 					<p>&nbsp;</p>
 <%
 	java.util.Iterator iterInvoc = invokeStats.getStats().entrySet().iterator();
@@ -146,22 +147,22 @@
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td  align="center">
-                    <h4 style="text-align: center">Method name</h4>
+                    <h4 style="text-align: center">${messages["Method name"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Min (ms)</h4>
+                    <h4 style="text-align: center">${messages["Min (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Max (ms)</h4>
+                    <h4 style="text-align: center">${messages["Max (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Average (ms)</h4>
+                    <h4 style="text-align: center">${messages["Average (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center">Total (ms)</h4>
+                    <h4 style="text-align: center">${messages["Total (ms)"]}</h4>
                     </td>
                     <td align="center">
-                    <h4 style="text-align: center"># Invocations</h4>
+                    <h4 style="text-align: center">${messages["# Invocations"]}</h4>
                     </td>
                   </tr>
 				<%
@@ -195,23 +196,23 @@
                   }
                   %>
             </table>
-            <p align="center"><a href="<%=resetInvocUrl%>">Reset Stats</a> / <a href="<%=myUrl%>">Refresh Stats</a></p>
+            <p align="center"><a href="<%=resetInvocUrl%>">${messages["Reset Stats"]}</a> / <a href="<%=myUrl%>">${messages["Refresh Stats"]}</a></p>
 <%
 	}
 	else
 	{
 %>	 
-					<p>none.</p>
+					<p>${messages["none."]}</p>
 <%
 	}
 %>
 
 					<p>&nbsp;</p>
-               <p>Actual concurrent invocations: <%=invokeStats.concurrentCalls%> (max: <%=invokeStats.maxConcurrentCalls%>)</p>
+               <p>${messages["Actual concurrent invocations: "]}<%=invokeStats.concurrentCalls%> (${messages["max: "]}<%=invokeStats.maxConcurrentCalls%>)</p>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
-					<p><a href="<%=containerUrl%>">View associated container MBean</a></p>
+					<p><a href="<%=containerUrl%>">${messages["View associated container MBean"]}</a></p>
 		</div>
 		<div class="spacer"><hr/></div>
 	</div>
@@ -221,7 +222,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPBinding.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPBinding.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPBinding.jsp	(working copy)
@@ -11,14 +11,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -33,15 +32,15 @@
    <h4 style="text-align: center"><%=name%></h4>
 	<div id="content">
 		<div class="content_block" style="width: 100%">
-			<h3>Advice Binding</h3>
+			<h3>${messages["Advice Binding"]}</h3>
 	    <p>&nbsp;</p>
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <p align="left"><font size="1"><b>Pointcut Expression: </b><%=binding.getPointcut().getExpr()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Pointcut Expression: "]}</b><%=binding.getPointcut().getExpr()%></font></p>
                     <% if (binding.getCFlowString() != null) {
                     %>
-                    <p align="left"><font size="1"><b>CFlow Expression: </b><%=binding.getCFlowString()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["CFlow Expression: "]}</b><%=binding.getCFlowString()%></font></p>
                     <% } %>
                     </td>
                   </tr>
@@ -49,7 +48,7 @@
             </table>
 					<p>&nbsp;</p>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -63,7 +62,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss™ Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/AOPConstructorMethodCallerChain.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPConstructorMethodCallerChain.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPConstructorMethodCallerChain.jsp	(working copy)
@@ -13,14 +13,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - AOP Pointcuts</title>
+<title>${messages["JBoss Management Console - AOP Pointcuts"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<link
 </head>
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -48,16 +47,16 @@
 		<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <h4 style="text-align: center"><font size="3">Constructor Caller: <%=AOPLister.shortenConstructor(classname, constructor)%></font></h4>
-                    <h4 style="text-align: center"><font size="3">Called Method: <%=info.method.toString()%></font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Constructor Caller: "]}<%=AOPLister.shortenConstructor(classname, constructor)%></font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["Called Method: "]}<%=info.getMethod().toString()%></font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td>
-                    <h4>Type</h4>
+                    <h4>${messages["Type"]}</h4>
                     </td>
                     <td>
-                    <h4>Description</h4>
+                    <h4>${messages["Description"]}</h4>
                     </td>
                   </tr>
 <%
@@ -69,7 +68,7 @@
 <% } %>
             </table>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -83,7 +82,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss Management Console</div>
+		<div id="credits">${messages["JBoss Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/manageThresholdMonitor.jsp
===================================================================
--- console/src/resources/webconsole.war/manageThresholdMonitor.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/manageThresholdMonitor.jsp	(working copy)
@@ -47,13 +47,13 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Manage Monitor</title>
+<title>${messages["JBoss Management Console - Manage Monitor"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
@@ -63,7 +63,7 @@
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3><font color="<%=color%>">Manage Threshold MBean Monitor</font></h3>
+			<h3><font color="<%=color%>">${messages["Manage Threshold MBean Monitor"]}</font></h3>
 					<p>&nbsp;</p>
 <%
    if (error != null)
@@ -77,67 +77,67 @@
 <input type="hidden" name="monitorObjectName" value="<%=moname.toString()%>">
 <table cellspacing="2" cellpadding="2" border="0">
 <tr>
-    <td><b>Monitor Name</b></td>
+    <td><b>${messages["Monitor Name"]}</b></td>
     <td><input type="text" name="monitorName" size="35" value="<%=monitorName%>" readonly></td>
-    <td><i>The name of the monitor and how it will be references within web console</i></td>
+    <td><i>${messages["The name of the monitor and how it will be references within web console"]}</i></td>
 </tr>
 <tr>
-    <td><b>Monitor's Object Name</b></td>
+    <td><b>${messages["Monitor\'s Object Name"]}</b></td>
     <td><input type="text" name="monitorObjectName" size="35" value="<%=monitorObjectName%>" readonly></td>
-    <td><i>The MBean javax.management.ObjectName</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName"]}</i></td>
 </tr>
 <tr>
-    <td><b>Object Name</b></td>
+    <td><b>${messages["Object Name"]}</b></td>
     <td><input type="text" name="objectName" value="<%=observedObject.toString()%>" size="35" readonly></td>
-    <td><i>The MBean javax.management.ObjectName of the MBean you are monitoring</i></td>
+    <td><i>${messages["The MBean javax.management.ObjectName of the MBean you are monitoring"]}</i></td>
 </tr>
 <tr>
-    <td><b>Attribute</b></td>
+    <td><b>${messages["Attribute"]}</b></td>
     <td><input type="text" name="attribute" value="<%=attribute%>"  size="35" readonly></td>
-    <td><i>The MBean Attribute you are monitoring</i></td>
+    <td><i>${messages["The MBean Attribute you are monitoring"]}</i></td>
 </tr>
 <%
    if (alerted)
    {
 %>
 <tr>
-    <td><font color="red"><b>Triggered Value</b></font></td>
+    <td><font color="red"><b>${messages["Triggered Value"]}</b></font></td>
     <td><input type="text" name="trigger" value="<%=triggeredValue.toString()%>" size="35" readonly></td>
-    <td><i>The attribute value the triggered the threshold.</i></td>
+    <td><i>${messages["The attribute value the triggered the threshold."]}</i></td>
 </tr>
 <% } %>
 <tr>
-    <td><b>Threshold</b></td>
+    <td><b>${messages["Threshold"]}</b></td>
     <td><input type="text" name="threshold" size="35" value="<%=threshold%>"></td>
-    <td><i>The value that will trigger an alert when the Comparison Equation is reached for the attribute value</i></td>
+    <td><i>${messages["The value that will trigger an alert when the Comparison Equation is reached for the attribute value"]}</i></td>
 </tr>
 <tr>
-    <td><b>Time Period</b></td>
+    <td><b>${messages["Time Period"]}</b></td>
     <td><input type="text" name="period" size="35" value="<%=period%>"></td>
-    <td><i>How often should threshold be tested.</i></td>
+    <td><i>${messages["How often should threshold be tested."]}</i></td>
 </tr>
 <tr>
-    <td><b>Comparison Equation</b></td>
+    <td><b>${messages["Comparison Equation"]}</b></td>
     <td><select name="compare" id="compare" size="1">
         <option value="gt" <%=compare == -1  ? "SELECTED" : ""%>>&gt;</option>
         <option value="lt" <%=compare == 1 ? "SELECTED" : ""%>>&lt;</option>
         <option value="eq" <%=compare == 0 ? "SELECTED" : ""%>>=</option>
         </select>
     </td>
-    <td><i>Boolean expression to use when testing threshold hit.</i></td>
+    <td><i>${messages["Boolean expression to use when testing threshold hit."]}</i></td>
 </tr>
 <tr>
-    <td><b>Persist Changes</b></td>
+    <td><b>${messages["Persist Changes"]}</b></td>
     <td><input type="checkbox" name="persisted" value="" checked></td>
-    <td><i>Should changes be reflected in deployment file.</i></td>
+    <td><i>${messages["Should changes be reflected in deployment file."]}</i></td>
 </tr>
 <tr>
-    <td><b>Enable Monitor</b></td>
+    <td><b>${messages["Enable Monitor"]}</b></td>
     <td><input type="checkbox" name="enabled" value="" <%=enabled ? "checked" : ""%>></td>
-    <td><i>Should this monitor be enabled.</i></td>
+    <td><i>${messages["Should this monitor be enabled."]}</i></td>
 </tr>
 <tr>
-    <td><b>Alerts</b></td>
+    <td><b>${messages["Alerts"]}</b></td>
     <td>
 <%
    InstanceOfQueryExp queryExp = null;
@@ -165,16 +165,16 @@
 </select>
 
     </td>
-    <td><i>Alert Listeners to trigger.</i></td>
+    <td><i>${messages["Alert Listeners to trigger."]}</i></td>
 </tr>
 </table>
-<input type="submit" name="action" value="Update Monitor">
-<input type="submit" name="action" value="Remove Monitor">
+<input type="submit" name="action" value="${messages['Update Monitor']}">
+<input type="submit" name="action" value="${messages['Remove Monitor']}">
 <%
    if (alerted)
    {
 %>
-<input type="submit" name="action" value="Clear Alert">
+<input type="submit" name="action" value="${messages['Clear Alert']}">
 <%
    }
 %>
@@ -183,7 +183,7 @@
 }
 catch (Exception ex)
 {
-   %> ERROR in parsing <%
+   %> ${messages["ERROR in parsing"]} <%
    ex.printStackTrace();
 }
 %>
@@ -196,7 +196,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/JNDIView.jsp
===================================================================
--- console/src/resources/webconsole.war/JNDIView.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/JNDIView.jsp	(working copy)
@@ -3,14 +3,14 @@
 
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - JNDI View</title>
+<title>${messages["JBoss Management Console - JNDI View"]}</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 <link rel="StyleSheet" href="css/dtree.css" type="text/css" />
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 
 		&nbsp;</div>
@@ -18,7 +18,7 @@
 	</div>
 <!-- header end -->
 <hr class="hide"/>
-			<h3>JNDI View</h3>
+			<h3>${messages["JNDI View"]}</h3>
 			<p>&nbsp;</p>
 
          <%=org.jboss.console.util.XMLToHTMLTreeBuilder.convertJNDIXML(jndiview.listXML())%>
@@ -30,7 +30,7 @@
 <!-- footer begin -->
 	<div id="footer">
 
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/index.html
===================================================================
--- console/src/resources/webconsole.war/index.html	(revision 73826)
+++ console/src/resources/webconsole.war/index.html	(working copy)
@@ -1,19 +0,0 @@
-<html>
-
-<head>
-<title>Administration Console</title>
-</head>
-
-<frameset cols="30%,*">
-  <frame id="left" name="left" src="applet.jsp" scrolling="no" marginwidth="0" marginheight="0" style="padding-left: 8; padding-right: 0; padding-top: 8; padding-bottom: 0">
-  <frame id="right" name="right" src="ServerInfo.jsp" >
-  <noframes>
-  <body>
-
-  <p>Please use a frame-capable browser.</p>
-
-  </body>
-  </noframes>
-</frameset>
-
-</html>
Index: console/src/resources/webconsole.war/AOPMetaData.jsp
===================================================================
--- console/src/resources/webconsole.war/AOPMetaData.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/AOPMetaData.jsp	(working copy)
@@ -10,16 +10,16 @@
                   </tr>
                   <tr>
                     <td>
-                    <h4>Attribute Name</h4>
+                    <h4>${messages["Attribute Name"]}</h4>
                     </td>
                     <td>
-                    <h4>Type</h4>
+                    <h4>${messages["Type"]}</h4>
                     </td>
                     <td>
-                    <h4>Value (as String)</h4>
+                    <h4>${messages["Value (as String)"]}</h4>
                     </td>
                     <td>
-                    <h4>Serialization</h4>
+                    <h4>${messages["Serialization"]}</h4>
                     </td>
                   </tr>
 <%
@@ -49,7 +49,7 @@
     {
 %>    
                   <tr>
-                     <td colspan="4">empty</td>
+                     <td colspan="4">${messages["empty"]}</td>
                   </tr>
 <%  }
     
@@ -57,7 +57,7 @@
 	
             </table>
 	    <p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -71,7 +71,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss™ Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/src/resources/webconsole.war/ServerInfo.jsp
===================================================================
--- console/src/resources/webconsole.war/ServerInfo.jsp	(revision 73826)
+++ console/src/resources/webconsole.war/ServerInfo.jsp	(working copy)
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
 <%--
  |
  |  Author: Sacha Labourey    (sacha@jboss.org)
@@ -6,87 +8,98 @@
  | See terms of license at gnu.org.
  +--%>
 <%@ taglib uri="/webconsole" prefix="jb" %>
+
 <jb:mbean id="server" mbean='jboss.system:type=Server' intf="org.jboss.system.server.ServerImplMBean" />
 <jb:mbean id="serverInfo" mbean='jboss.system:type=ServerInfo' intf="org.jboss.system.server.ServerInfoMBean" />
 <jb:mbean id="serverConfig" mbean='jboss.system:type=ServerConfig' intf="org.jboss.system.server.ServerConfigImplMBean" />
+<%@page import="org.jboss.console.I18n"%>
+<%@page import="org.jboss.varia.i18n.I18nUtil"%>
+
 <%
-   String myUrl = response.encodeURL(request.getRequestURI());
+	String myUrl = response.encodeURL(request.getRequestURI());
 %>
 <%!
 public String memSize (java.lang.Long lOctets)
 {
 	long octets = lOctets.longValue();
 	int ratio = 3*1024;
-	String unit = "";
+	String fmt = "{0} "; //$NON-NLS-1$
 	if (octets > ratio)
 	{
-	   unit = "KB";
+	   fmt = I18n.gettext("{0} KB"); //$NON-NLS-1$
 	   octets/=1024;	
 	   
 		if (octets > ratio)
 		{
-		   unit = "MB";
+		   fmt = I18n.gettext("{0} MB"); //$NON-NLS-1$
 		   octets/=1024;	
 		   
 			if (octets > ratio)
 			{
-			   unit = "GB";
+	   		fmt = I18n.gettext("{0} GB"); //$NON-NLS-1$
 			   octets/=1024;	
 			   
 				if (octets > ratio)
 				{
-				   unit = "TB";
-				   octets/=1024;	
+				   fmt = I18n.gettext("{0} TB"); //$NON-NLS-1$
+				   octets/=1024;
 				}
 			}
 		}
 	}
 	
-	return octets + " " + unit;
+	return java.text.MessageFormat.format(fmt, new Object[] {new Long(octets)});
 }
 %>
-<?xml version="1.0" encoding="iso-8859-1"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>JBoss Management Console - Server Information</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<title>${messages["JBoss Management Console - Server Information"]}</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <link rel="StyleSheet" href="css/jboss.css" type="text/css"/>
 </head>
 <body>
 <!-- header begin -->
-	<img src="images/logo.gif" alt="JBoss" id="logo" width="226" height="105" />
+	<img src="images/logo.gif" alt="${messages['JBoss']}" id="logo" width="226" height="105" />
 	<div id="header">
 		&nbsp;</div>
 	<div id="navigation_bar">
 	</div>
 <!-- header end -->
+<div id="language">
+
+<jsp:include page="localeselect.jsp">
+   <jsp:param name="from" value="ServerInfo.jsp" />	
+</jsp:include>
+
+</div>
 <hr class="hide"/>
 	<center>
 	<div id="content">
 		<div class="content_block" style="width: 100%; height: 247">
-			<h3>JBoss&trade; Application Server</h3>
+			<h3>${messages["JBoss&trade; Application Server"]}</h3>
 					<p>&nbsp;</p>
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <h4 style="text-align: center"><font size="3">JBoss</font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["JBoss"]}</font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td width="25%" align="center" valign="top">
-                    <h4>Version</h4>
-                    <p align="left"><font size="1"><b>Version: </b><%=server.getVersion()%></font></p>
-                    <p align="left"><font size="1"><b>Version Name: </b><%=server.getVersionName()%></font></p>
-                    <p align="left"><font size="1"><b>Built on: </b><%=server.getBuildDate()%></font>
+                    <p align="left"><font size="1"><b>${messages["Version: "]}</b><%=server.getVersion()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Version Name: "]}</b><%=server.getVersionName()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Built on: "]}</b><%=server.getBuildDate()%></font>
                     </td>
                     <td width="25%" align="center" valign="top">
-                    <h4>Environment</h4>
-                    <p align="left"><font size="1"><b>Start date: </b><%=server.getStartDate()%></font></p>
-                    <p align="left"><font size="1"><b>Host: </b><%=serverInfo.getHostName()%> (<%=serverInfo.getHostAddress ()%>)</font></p>
-                    <p align="left"><font size="1"><b>Base Location: </b><%=serverConfig.getServerBaseURL()%></font></p>
-                    <p align="left"><font size="1"><b>Base Location (local): </b><%=serverConfig.getServerBaseDir()%></font></p>
-                    <p align="left"><font size="1"><b>Running config: </b>'<%= serverConfig.getServerHomeDir().getName()%>'</font></td>
+                    <h4>${messages["Environment"]}</h4>
+						  <p align="left"><font size="1"><b>${messages["Start date: "]}${server.startDate}</font></p>
+                    <p align="left"><font size="1"><b>${messages["Host: "]}</b>${serverInfo.hostName} (${serverInfo.hostAddress})</font></p>
+                    <p align="left"><font size="1"><b>${messages["Default locale: "]}</b><%=java.util.Locale.getDefault()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["User locale: "]}</b><%=I18nUtil.getRequestLocale()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Base Location: "]}</b><%=serverConfig.getServerBaseURL()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Base Location (local): "]}</b><%=serverConfig.getServerBaseDir()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Running config: "]}</b>'<%= serverConfig.getServerHomeDir().getName()%>'</font></td>
                   </tr>
 	
             </table>
@@ -94,27 +107,27 @@
 				<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" align="center" id="AutoNumber1">
                   <tr>
                     <td width="50%" align="center" colspan="2">
-                    <h4 style="text-align: center"><font size="3">JVM - Hardware</font></h4>
+                    <h4 style="text-align: center"><font size="3">${messages["JVM - Hardware"]}</font></h4>
                     </td>
                   </tr>
                   <tr>
                     <td width="25%" align="center" valign="top">
-                    <h4>Hardware</h4>
-                    <p align="left"><font size="1"><b>#CPU: </b><%=serverInfo.getAvailableProcessors()%></font></p>
-                    <p align="left"><font size="1"><b>OS: </b><%=serverInfo.getOSName()%> <%=serverInfo.getOSVersion()%> (<%=serverInfo.getOSArch()%>)</font></td>
+                    <h4>${messages["Hardware"]}</h4>
+                    <p align="left"><font size="1"><b>${messages["#CPU: "]}</b><%=serverInfo.getAvailableProcessors()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["OS: "]}</b><%=serverInfo.getOSName()%> <%=serverInfo.getOSVersion()%> (<%=serverInfo.getOSArch()%>)</font></td>
                     <td width="25%" align="center" valign="top">
-                    <h4>JVM Environment</h4>
-                    <p align="left"><font size="1"><b>Free Memory: </b><%=memSize(serverInfo.getFreeMemory())%></font></p>
-                    <p align="left"><font size="1"><b>Max Memory: </b><%=memSize(serverInfo.getMaxMemory())%></font></p>
-                    <p align="left"><font size="1"><b>Total Memory: </b><%=memSize(serverInfo.getTotalMemory())%></font></p>
-                    <p align="left"><font size="1"><b>#Threads: </b><%=serverInfo.getActiveThreadCount()%></font></p>
-                    <p align="left"><font size="1"><b>JVM Version: </b><%=serverInfo.getJavaVMVersion()%> (<%=serverInfo.getJavaVMVendor()%>)</font></p>
-                    <p align="left"><font size="1"><b>JVM Name: </b><%=serverInfo.getJavaVMName()%></font></td>
+                    <h4>${messages["JVM Environment"]}</h4>
+                    <p align="left"><font size="1"><b>${messages["Free Memory: "]}</b><%=memSize(serverInfo.getFreeMemory())%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Max Memory: "]}</b><%=memSize(serverInfo.getMaxMemory())%></font></p>
+                    <p align="left"><font size="1"><b>${messages["Total Memory: "]}</b><%=memSize(serverInfo.getTotalMemory())%></font></p>
+                    <p align="left"><font size="1"><b>${messages["#Threads: "]}</b><%=serverInfo.getActiveThreadCount()%></font></p>
+                    <p align="left"><font size="1"><b>${messages["JVM Version: "]}</b><%=serverInfo.getJavaVMVersion()%> (<%=serverInfo.getJavaVMVendor()%>)</font></p>
+                    <p align="left"><font size="1"><b>${messages["JVM Name: "]}</b><%=serverInfo.getJavaVMName()%></font></td>
                   </tr>
 
             </table>
 					<p>&nbsp;</p>
-            <p align="center"> <a href="<%=myUrl%>">Refresh</a></p>
+            <p align="center"> <a href="<%=myUrl%>">${messages["Refresh"]}</a></p>
 
 					<p>&nbsp;</p>
 					<p>&nbsp;</p>
@@ -128,7 +141,7 @@
 <hr class="hide"/>
 <!-- footer begin -->
 	<div id="footer">
-		<div id="credits">JBoss&trade; Management Console</div>
+		<div id="credits">${messages["JBoss&trade; Management Console"]}</div>
 		<div id="footer_bar">&nbsp;</div>
 	</div>
 <!-- footer end -->
Index: console/build.xml
===================================================================
--- console/build.xml	(revision 73826)
+++ console/build.xml	(working copy)
@@ -81,6 +81,7 @@
       <path refid="sun.servlet.classpath"/>
       <path refid="jfreechart.jfreechart.classpath"/>
       <path refid="trove.classpath"/>
+      <path refid="jboss.web.classpath"/>
     </path>
 
     <!-- ======= -->
@@ -303,7 +304,14 @@
         <include name="org/jboss/console/**"/>
         <exclude name="org/jboss/console/text/**"/>
         <exclude name="org/jboss/console/twiddle/**"/>
+      </fileset> 
+      <!-- This might be a bit nasty -->
+      <fileset dir="${jboss.varia.root}/classes">
+        <include name="org/jboss/varia/i18n/**"/>
       </fileset>
+      <fileset dir="${build.resources}">
+        <include name="org/jboss/console/*.properties"/>
+      </fileset>
     </jar>
     <!-- Build console-mgr.sar -->
     <jar jarfile="${build.lib}/console-mgr.sar">
@@ -371,6 +379,7 @@
         <exclude name="javax/management/modelmbean/**"/>
       </zipfileset>
       <fileset dir="${build.classes}">
+        <include name="org/jboss/console/*"/>
         <include name="org/jboss/console/manager/**"/>
         <include name="org/jboss/console/plugins/**"/>
         <include name="org/jboss/console/navtree/**"/>
@@ -378,6 +387,12 @@
         <include name="org/jboss/console/manager/navtree/**"/>
         <include name="org/jboss/console/manager/**MBean.*"/>
       </fileset>
+      <fileset dir="${jboss.varia.root}/classes">
+        <include name="org/jboss/varia/i18n/**"/>
+      </fileset>
+      <fileset dir="${build.resources}">
+        <include name="org/jboss/console/*.properties"/>
+      </fileset>
     </jar>
 
     <!-- Build web-console.war -->
@@ -462,4 +477,15 @@
     description="Show this help message."
     depends="_buildmagic:help:standard"/>
 
+  <target name="deploywar"
+		  description="Executes the main target, then extracts WAR/SAR to deployment directory."
+		  depends="main">
+	<property name="outputdir" value="../build/output/jboss-5.0.0.CR1"/>
+  	<property name="deployconfig" value="default"/>
+  	<property name="deploydir" value="${outputdir}/server/${deployconfig}/deploy/management/console-mgr.sar"/>
+
+  	<unzip src="./output/lib/console-mgr.sar" dest="${deploydir}" />
+  	<unwar src="./output/lib/web-console.war" dest="${deploydir}/web-console.war" />
+  </target>
+  
 </project>

Property changes on: varia
___________________________________________________________________
Name: svn:ignore
   - output
build.log
target

   + output
build.log
target

po


Index: varia/.classpath
===================================================================
--- varia/.classpath	(revision 73826)
+++ varia/.classpath	(working copy)
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry excluding="org/jboss/jaxr/|org/jboss/jdo/castor/|org/jboss/tm/plugins/tyrex/|org/jboss/varia/stats/DataSourceInterceptor.java|org/jboss/varia/stats/DataSourceInterceptorMBean.java" kind="src" path="src/main"/>
+	<classpathentry excluding="org/jboss/test/" kind="src" path="src/test"/>
 	<classpathentry exported="true" kind="src" path="/cluster"/>
 	<classpathentry kind="src" path="/jbossmq"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
 	<classpathentry kind="lib" path="/thirdparty/apache-bsf/lib/bsf.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/hsqldb/lib/hsqldb.jar"/>
 	<classpathentry kind="lib" path="/tools/lib/ant.jar"/>
@@ -19,5 +21,8 @@
 	<classpathentry kind="lib" path="/thirdparty/juddi/lib/juddi.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/beanshell/lib/bsh.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/jboss-deployers/lib/jboss-deployers-client.jar" sourcepath="/thirdparty/jboss/jboss-deployers/lib/jboss-deployers-client-sources.jar"/>
+	<classpathentry kind="lib" path="/thirdparty/jboss/web/lib/el-api.jar" sourcepath="/thirdparty/jboss/web/lib/jbossweb-src.zip"/>
+	<classpathentry kind="lib" path="/thirdparty/sun-servlet/lib/jsp-api.jar"/>
+	<classpathentry kind="lib" path="/thirdparty/jboss/test/lib/jboss-test.jar" sourcepath="/extra/work-clebert/workspaces/jtest/jboss-test/src"/>
 	<classpathentry kind="output" path="output/eclipse-classes"/>
 </classpath>
Index: varia/src/test/org/jboss/varia/i18n/I18nUtilTest.java
===================================================================
--- varia/src/test/org/jboss/varia/i18n/I18nUtilTest.java	(revision 0)
+++ varia/src/test/org/jboss/varia/i18n/I18nUtilTest.java	(revision 0)
@@ -0,0 +1,30 @@
+package org.jboss.varia.i18n;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+
+import junit.framework.TestCase;
+
+public class I18nUtilTest extends TestCase
+{
+
+   public I18nUtilTest(String name)
+   {
+      super(name);
+   }
+
+   public void testToLocale()
+   {
+      assertEquals(Locale.ENGLISH, I18nUtil.toLocale("en")); //$NON-NLS-1$
+      assertEquals(new Locale("en", "AU", "LINUX"), I18nUtil.toLocale("en_AU_LINUX"));    //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
+      assertEquals(new Locale("en", "AU"), I18nUtil.toLocale("en_AU"));  //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+      assertEquals(new Locale("sr", "LATN"), I18nUtil.toLocale("sr_LATN"));  //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+   }
+
+   public void testMessageFormat() throws Exception
+   {
+      String result = MessageFormat.format("I''m sorry {0}, I''m afraid I can''t do that. '{'{1}'}'", "Dave", "HAL");   //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+      assertEquals("I'm sorry Dave, I'm afraid I can't do that. {HAL}", result); //$NON-NLS-1$
+   }
+
+}

Property changes on: varia/src/test/org/jboss/varia/i18n/I18nUtilTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/varia/i18n/I18nServletContextListener.java
===================================================================
--- varia/src/main/org/jboss/varia/i18n/I18nServletContextListener.java	(revision 0)
+++ varia/src/main/org/jboss/varia/i18n/I18nServletContextListener.java	(revision 0)
@@ -0,0 +1,63 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.varia.i18n;
+
+import javax.el.BeanELResolver;
+import javax.el.CompositeELResolver;
+import javax.el.ELContextEvent;
+import javax.el.ELContextListener;
+import javax.el.ELResolver;
+import javax.el.ListELResolver;
+import javax.el.MapELResolver;
+import javax.el.ResourceBundleELResolver;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import javax.servlet.jsp.JspApplicationContext;
+import javax.servlet.jsp.JspFactory;
+
+import org.jboss.logging.Logger;
+
+/**
+ * This servlet filter registers the BundleResolver with the JSP context.
+ * @see BundleResolver
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $$Revision: $$
+ */
+public class I18nServletContextListener implements ServletContextListener
+{
+   
+   private static final Logger log = Logger.getLogger(I18nServletContextListener.class);
+
+   public void contextDestroyed(ServletContextEvent arg0)
+   {
+      // nop
+   }
+
+   // may not be needed???
+//   private static ELResolver createELResolver()
+//   {
+//      CompositeELResolver resolver = new CompositeELResolver();
+//      resolver.add( new BundleResolver() );
+//      resolver.add( new MapELResolver() );
+//      resolver.add( new ListELResolver() );
+//      resolver.add( new ResourceBundleELResolver() );
+//      resolver.add( new BeanELResolver() );
+//      return resolver;
+//   }
+
+
+   public void contextInitialized(ServletContextEvent servletContextEvent)
+   {
+      ServletContext servletContext = servletContextEvent.getServletContext();
+      JspApplicationContext jspContext = JspFactory.getDefaultFactory().getJspApplicationContext(servletContext);
+      jspContext.addELResolver(new BundleResolver());
+//      jspContext.addELResolver(createELResolver());
+      log.info("BundleResolver registered: "+servletContext.getContextPath()); //$NON-NLS-1$
+   }
+
+}

Property changes on: varia/src/main/org/jboss/varia/i18n/I18nServletContextListener.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/varia/i18n/MessageFormatResolver.java
===================================================================
--- varia/src/main/org/jboss/varia/i18n/MessageFormatResolver.java	(revision 0)
+++ varia/src/main/org/jboss/varia/i18n/MessageFormatResolver.java	(revision 0)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.varia.i18n;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Resolves strings by accumulating the format arguments and then formatting 
+ * the pattern and its arguments with MessageFormat when toString() is called.  
+ * If no arguments are supplied, the pattern string is simply returned verbatim.
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $$Revision: $$
+ */
+public class MessageFormatResolver
+{
+   private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(MessageFormatResolver.class);
+   
+   private final String pattern;
+
+   private final List<Object> args = new ArrayList<Object>();
+
+   public MessageFormatResolver(String pattern)
+   {
+      log.trace("<init>('"+pattern+"')"); //$NON-NLS-1$ //$NON-NLS-2$
+      this.pattern = pattern;
+   }
+
+   public void addArg(Object arg)
+   {
+      log.trace("addArg(["+arg.getClass().getName()+"] '"+arg+"')"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+      args.add(arg);
+   }
+
+   public String toString()
+   {
+      if (args.size() == 0)
+         return pattern;
+      return MessageFormat.format(pattern, args.toArray());
+   }
+
+}
\ No newline at end of file

Property changes on: varia/src/main/org/jboss/varia/i18n/MessageFormatResolver.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/varia/i18n/FallbackResourceBundle.java
===================================================================
--- varia/src/main/org/jboss/varia/i18n/FallbackResourceBundle.java	(revision 0)
+++ varia/src/main/org/jboss/varia/i18n/FallbackResourceBundle.java	(revision 0)
@@ -0,0 +1,51 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.varia.i18n;
+
+import java.util.Enumeration;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * This decorator ResourceBundle quietly falls back on the key when 
+ * a key is missing from the underlying resource bundle, since English
+ * strings may appear in the resource bundle, but otherwise should come 
+ * from the source code.
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $Revision: $
+ */
+class FallbackResourceBundle extends ResourceBundle
+{
+
+   private final ResourceBundle bundle;
+
+   public FallbackResourceBundle(ResourceBundle bundle)
+   {
+      this.bundle = bundle;
+      
+   }
+
+   @Override
+   public Enumeration<String> getKeys()
+   {
+      return bundle.getKeys();
+   }
+
+   @Override
+   protected Object handleGetObject(String key)
+   {
+      try
+      {
+         return bundle.getObject(key);
+      }
+      catch (MissingResourceException e)
+      {
+         return key;
+      }
+   }
+
+}

Property changes on: varia/src/main/org/jboss/varia/i18n/FallbackResourceBundle.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/varia/i18n/I18nFilter.java
===================================================================
--- varia/src/main/org/jboss/varia/i18n/I18nFilter.java	(revision 0)
+++ varia/src/main/org/jboss/varia/i18n/I18nFilter.java	(revision 0)
@@ -0,0 +1,172 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.varia.i18n;
+
+import java.io.IOException;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.logging.Logger;
+
+
+/**
+ * This servlet filter is responsible for 
+ * (a) keeping the request locale in a thread-local for later use 
+ * by i18n classes, and 
+ * (b) loading the localised resource bundle for the current request, 
+ * and storing it as a request attribute 'messages' to allow EL lookups 
+ * such as ${messages["my key"]}. 
+ * 
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $Revision: $
+ */
+public class I18nFilter implements Filter
+{
+
+   static final Logger log = Logger.getLogger(I18nFilter.class);
+   private String bundleName = null;
+
+   public void destroy()
+   {
+      // nop
+   }
+
+   
+   public void init(FilterConfig config) throws ServletException
+   {
+      String bundle = config.getInitParameter("bundle"); //$NON-NLS-1$
+      setBundleName(bundle);
+      log.debug("Using bundle "+bundle+" for "+config.getServletContext().getContextPath()); //$NON-NLS-1$ //$NON-NLS-2$
+   }
+   
+   private void setBundleName(String bundleName)
+   {
+      this.bundleName = bundleName;
+   }
+
+   public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException,
+         ServletException
+   {
+      HttpServletRequest httpReq = (HttpServletRequest)req;
+      HttpServletResponse httpResp = (HttpServletResponse) resp;
+      String path = httpReq.getServletPath();
+      String uri;
+      if(httpReq.getQueryString() == null)
+         uri = httpReq.getRequestURI();
+      else
+         uri = httpReq.getRequestURI()+"?"+httpReq.getQueryString(); //$NON-NLS-1$
+      if(log.isTraceEnabled())
+      {
+         log.trace("doFilter called for "+uri); //$NON-NLS-1$
+      }
+      //I18nUtil.reloadBundlesHack();
+      ResourceBundle bundle;
+      Locale localeFromCookie = null;
+      Cookie[] cookies = httpReq.getCookies();
+      if (cookies != null)
+      {
+         for (int i = 0; i < cookies.length; i++)
+         {
+            Cookie cookie = cookies[i];
+            if("locale".equals(cookie.getName())) //$NON-NLS-1$
+            {
+               localeFromCookie = I18nUtil.toLocale(cookie.getValue());
+               if(log.isTraceEnabled())
+               {
+                  log.trace("Using locale from cookie: "+localeFromCookie); //$NON-NLS-1$
+               }
+            }
+         }
+      }
+      final Locale locale;
+      if (localeFromCookie != null)
+      {
+         locale = localeFromCookie;
+      }
+      else
+      {
+         //      req.getLocales()
+         locale = req.getLocale();
+      }
+      try 
+      {
+    	  bundle = ResourceBundle.getBundle(bundleName, locale);
+          if(locale.getLanguage().equals(Locale.ENGLISH.getLanguage()))
+          {
+             if(log.isTraceEnabled())
+             {
+                log.trace("locale is "+locale+"; using FallbackResourceBundle"); //$NON-NLS-1$ //$NON-NLS-2$
+             }
+             bundle = new FallbackResourceBundle(bundle);
+          }
+      } 
+      catch (MissingResourceException e) 
+      {
+         if(locale.getLanguage().equals(Locale.ENGLISH.getLanguage()))
+         {
+            if(log.isTraceEnabled())
+            {
+               log.trace("locale is "+locale+"; using IdentityResourceBundle"); //$NON-NLS-1$ //$NON-NLS-2$
+            }
+            bundle = new IdentityResourceBundle();
+         }
+         else
+         {
+            if(log.isTraceEnabled())
+            {
+               log.trace("locale is "+locale+"; using MungingResourceBundle"); //$NON-NLS-1$ //$NON-NLS-2$
+            }
+            bundle = new MungingResourceBundle(locale);
+         }
+      }
+
+      req.setCharacterEncoding("UTF-8"); //$NON-NLS-1$
+      resp.setCharacterEncoding("UTF-8"); //$NON-NLS-1$
+      bundle = LoggingResourceBundle.wrap(bundle, bundleName, locale);
+      req.setAttribute("messages", bundle); //$NON-NLS-1$
+      I18nUtil.setRequestLocale(locale);
+      httpReq.getSession().setAttribute("locale", locale); //$NON-NLS-1$
+      HttpServletRequestWrapper wrapReq = new HttpServletRequestWrapper(httpReq)
+      {
+         public Locale getLocale() { return locale; }
+      };
+      if (path != null && path.endsWith(".html")) //$NON-NLS-1$
+      {
+         String jsp;
+         if(path.endsWith("/index.html")) //$NON-NLS-1$
+         {
+            jsp = "."; //$NON-NLS-1$
+         }
+         else
+         {
+            int slash = path.lastIndexOf('/');
+            jsp = path.substring(slash+1, path.length()-".html".length())+".jsp"; //$NON-NLS-1$ //$NON-NLS-2$
+         }
+         
+         httpResp.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
+         httpResp.addHeader("Location", jsp); //$NON-NLS-1$
+      }
+      else
+      {
+         chain.doFilter(wrapReq, resp);
+      }
+      I18nUtil.clearRequestLocale();
+   }
+
+}

Property changes on: varia/src/main/org/jboss/varia/i18n/I18nFilter.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/varia/i18n/MungingResourceBundle.java
===================================================================
--- varia/src/main/org/jboss/varia/i18n/MungingResourceBundle.java	(revision 0)
+++ varia/src/main/org/jboss/varia/i18n/MungingResourceBundle.java	(revision 0)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.varia.i18n;
+
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.NoSuchElementException;
+import java.util.ResourceBundle;
+
+/**
+ * Decorates an underlying ResourceBundle so that missing keys are handled 
+ * by munging the (English) key instead of throwing MissingResourceException. 
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $$Revision: $$
+ */
+class MungingResourceBundle extends ResourceBundle
+{
+
+   private final Locale locale;
+
+   public MungingResourceBundle(Locale locale)
+   {
+      this.locale = locale;
+   }
+
+   @Override
+   public Enumeration<String> getKeys()
+   {
+      return new Enumeration<String>()
+      {
+         public boolean hasMoreElements()
+         {
+            return false;
+         }
+         public String nextElement()
+         {
+            throw new NoSuchElementException();
+         }
+      };
+   }
+
+   @Override
+   protected Object handleGetObject(String key)
+   {
+      return I18nUtil.munge(key, locale);
+   }
+
+}

Property changes on: varia/src/main/org/jboss/varia/i18n/MungingResourceBundle.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/varia/i18n/LoggingResourceBundle.java
===================================================================
--- varia/src/main/org/jboss/varia/i18n/LoggingResourceBundle.java	(revision 0)
+++ varia/src/main/org/jboss/varia/i18n/LoggingResourceBundle.java	(revision 0)
@@ -0,0 +1,71 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.varia.i18n;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Simply decorates a ResourceBundle to add debug logging of contained keys and lookups.
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $$Revision: $$
+ */
+public class LoggingResourceBundle extends ResourceBundle
+{
+   private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LoggingResourceBundle.class);
+
+   private final ResourceBundle original;
+
+   private String locale;
+
+   public static ResourceBundle wrap(ResourceBundle original, String bundleName, Locale locale)
+   {
+      if (log.isTraceEnabled())
+         return new LoggingResourceBundle(original, bundleName, locale);
+      else
+         return original;
+   }
+
+   private LoggingResourceBundle(ResourceBundle original, String bundleName, Locale locale)
+   {
+      this.original = original;
+      this.locale = locale.toString();
+      List<String> keys = new ArrayList<String>();
+      for (Enumeration<String> e = original.getKeys(); e.hasMoreElements();)
+      {
+         String key = e.nextElement();
+         keys.add(key);
+      }
+      log.trace(bundleName+" keys: "+keys); //$NON-NLS-1$
+   }
+
+   @Override
+   public Enumeration<String> getKeys()
+   {
+      return original.getKeys();
+   }
+
+   @Override
+   protected Object handleGetObject(String key)
+   {
+      log.trace("get: \"" + key + '"'); //$NON-NLS-1$
+      try
+      {
+         return original.getObject(key);
+      }
+      catch (MissingResourceException e)
+      {
+         log.warn("get FAILED in [" + locale + "]: \"" + key + '"'); //$NON-NLS-1$ //$NON-NLS-2$
+         throw e;
+      }
+   }
+
+}

Property changes on: varia/src/main/org/jboss/varia/i18n/LoggingResourceBundle.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/varia/i18n/BundleResolver.java
===================================================================
--- varia/src/main/org/jboss/varia/i18n/BundleResolver.java	(revision 0)
+++ varia/src/main/org/jboss/varia/i18n/BundleResolver.java	(revision 0)
@@ -0,0 +1,154 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.varia.i18n;
+
+import java.beans.FeatureDescriptor;
+import java.util.Iterator;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.ELResolver;
+import javax.el.PropertyNotFoundException;
+import javax.el.PropertyNotWritableException;
+
+/**
+ * A resolver for the unified JSP expression language (EL) which handles 
+ * objects of type ResourceBundle and uses {@link java.text.MessageFormat} for 
+ * string formatting.  
+ * <p>
+ * As with {@link javax.el.ResourceBundleELResolver},  
+ * the "property" name is treated as a key of the ResourceBundle, but 
+ * any subsequent properties are used as arguments to 
+ * {@link java.text.MessageFormat#format(Object)}.  If there is only one 
+ * property, it is used as a key to the ResourceBundle, but the string is 
+ * <b>not</b> passed through MessageFormat.  Thus strings which 
+ * don't require formatting aren't subject to MessageFormat's confusing 
+ * quoting rules.  This is <i>intended</i> to make translator's jobs easier. 
+ * <p>
+ * Similar to {@link javax.el.ResourceBundleELResolver}, missing resources 
+ * will be replaced by the resource key, surrounded by question marks, rather
+ * than throwing an exception.
+ * <p>
+ * For example, assuming "messages" resolves to a ResourceBundle: 
+ * <pre>${messages["There are ''{0}'' bytes free; total memory is ''{1}''"][freeMem][totalMem]}</pre>
+ * will look up the key <code>"There are ''{0}'' bytes free; total memory is ''{1}''"</code> and format
+ * the resulting string with the arguments <code>freeMem</code> and <code>totalMem</code>, ie:
+ * <pre>MessageFormat.format(messages.getString("There are ''{0}'' bytes free; total memory is ''{1}''"), freeMem, totalMem)</pre>
+ * <p>
+ * <pre>${messages["I'm sorry Dave, I'm afraid I can't do that"]}</pre>
+ * will look up the key in the resource bundle without requiring that the apostrophes be doubled:
+ * <pre>messages.getString("I'm sorry Dave, I'm afraid I can't do that")</pre>
+ * @see javax.el.ResourceBundleELResolver
+ * @see java.text.MessageFormat
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $$Revision: $$
+ */
+public class BundleResolver extends ELResolver
+{
+   private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(BundleResolver.class);
+
+   @Override
+   public Class<?> getCommonPropertyType(ELContext elContext, Object base)
+   {
+      if (base instanceof ResourceBundle)
+      {
+         return String.class;
+      }
+      else if (base instanceof MessageFormatResolver)
+      {
+         return Object.class;
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+   @Override
+   public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext elContext, Object base)
+   {
+      return null; // we accept any string as a ResourceBundle key, and any object as a MessageFormat arg.
+   }
+
+   @Override
+   public Class<?> getType(ELContext elContext, Object base, Object property) throws NullPointerException,
+         PropertyNotFoundException, ELException
+   {
+      getValue(elContext, base, property); // sets propertyResolved if appropriate
+      if (elContext.isPropertyResolved())
+      {
+         return MessageFormatResolver.class;
+      }
+      else
+      {
+         return null;
+      }
+   }
+   
+   private static String describe(Object arg)
+   {
+      if(arg == null)
+         return null;
+      return "["+arg.getClass().getName()+"] '"+arg+"'";   //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+   }
+
+   @Override
+   public Object getValue(ELContext elContext, Object base, Object property) throws NullPointerException,
+         PropertyNotFoundException, ELException
+   {
+      log.debug("getValue("+describe(base)+", "+describe(property)+")");   //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+      if (base instanceof ResourceBundle)
+      {
+         elContext.setPropertyResolved(true);
+         ResourceBundle bundle = (ResourceBundle) base;
+         String s;
+         try
+         {
+            s = bundle.getString(property.toString());
+         }
+         catch (MissingResourceException e)
+         {
+            s = I18nUtil.munge(property.toString(), I18nUtil.getRequestLocale());
+//            s = I18nUtil.munge(property.toString(), bundle.getLocale());
+         }
+         return new MessageFormatResolver(s);
+      }
+      else if (base instanceof MessageFormatResolver)
+      {
+         elContext.setPropertyResolved(true);
+         MessageFormatResolver res = (MessageFormatResolver) base;
+         res.addArg(property);
+         return res;
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+   @Override
+   public boolean isReadOnly(ELContext elContext, Object base, Object property) throws NullPointerException,
+         PropertyNotFoundException, ELException
+   {
+      getValue(elContext, base, property); // sets propertyResolved if appropriate
+      return true;
+   }
+
+   @Override
+   public void setValue(ELContext elContext, Object base, Object property, Object value) throws NullPointerException,
+         PropertyNotFoundException, PropertyNotWritableException, ELException
+   {
+      getValue(elContext, base, property); // sets propertyResolved if appropriate
+      if (elContext.isPropertyResolved())
+      {
+         throw new PropertyNotWritableException();
+      }
+   }
+
+}

Property changes on: varia/src/main/org/jboss/varia/i18n/BundleResolver.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/varia/i18n/IdentityResourceBundle.java
===================================================================
--- varia/src/main/org/jboss/varia/i18n/IdentityResourceBundle.java	(revision 0)
+++ varia/src/main/org/jboss/varia/i18n/IdentityResourceBundle.java	(revision 0)
@@ -0,0 +1,43 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.varia.i18n;
+
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
+import java.util.ResourceBundle;
+
+/**
+ * This ResourceBundle simply maps keys to themselves.
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $$Revision: $$
+ */
+class IdentityResourceBundle extends ResourceBundle
+{
+
+   @Override
+   public Enumeration<String> getKeys()
+   {
+      return new Enumeration<String>()
+      {
+         public boolean hasMoreElements()
+         {
+            return false;
+         }
+         public String nextElement()
+         {
+            throw new NoSuchElementException();
+         }
+      };
+   }
+
+   @Override
+   protected Object handleGetObject(String key)
+   {
+      return key;
+   }
+
+}

Property changes on: varia/src/main/org/jboss/varia/i18n/IdentityResourceBundle.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/varia/i18n/I18nUtil.java
===================================================================
--- varia/src/main/org/jboss/varia/i18n/I18nUtil.java	(revision 0)
+++ varia/src/main/org/jboss/varia/i18n/I18nUtil.java	(revision 0)
@@ -0,0 +1,188 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.varia.i18n;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.jboss.logging.Logger;
+
+/**
+ * 
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $$Revision: $$
+ */
+public class I18nUtil
+{
+   private static final Logger log = Logger.getLogger(I18nUtil.class);
+   // see reloadBundlesHack().
+   private static boolean warnedAboutReload = false;
+   private static Locale defaultLocale;
+
+   public static String munge(String englishKey, Locale locale)
+   {
+      return "???[" + locale + "]" + englishKey + "???"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+   }
+   
+   public static Locale toLocale(String name)
+   {
+      int firstUnderscore = name.indexOf('_');
+      if (firstUnderscore < 0)
+      {
+         return new Locale(name);
+      }
+      String lang = name.substring(0, firstUnderscore);
+      int secondUnderscore = name.indexOf('_', firstUnderscore+1);
+      if (secondUnderscore < 0)
+      {
+         String country = name.substring(firstUnderscore+1);
+         return new Locale(lang, country);
+      }
+      String country = name.substring(firstUnderscore+1, secondUnderscore);
+      String variant = name.substring(secondUnderscore+1);
+      
+      return new Locale(lang, country, variant);
+   }
+   
+   public static Locale getRequestLocale() 
+   {
+      Locale locale = requestLocale.get();
+      if (locale == null)
+      {
+         // This could happen if we are running in the applet, not the web server.
+         // Just fall back on the JVM's default locale.
+         log.debug("unknown locale for request; using default"); //$NON-NLS-1$
+         if (defaultLocale != null)
+            locale = defaultLocale;
+         else
+            locale = Locale.getDefault();
+      }
+      return locale;
+   }
+
+   public static String gettext(String englishKey, String baseName)
+   {
+      Locale locale = getRequestLocale();
+      
+      try
+      {
+         ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale);
+         if (bundle != null)
+         {
+            try
+            {
+               return bundle.getString(englishKey);
+            }
+            catch (java.util.MissingResourceException e)
+            {
+               if(locale.getLanguage().equals(Locale.ENGLISH.getLanguage()))
+               {
+                  return englishKey;
+               }
+               else
+               {
+//                  return munge(englishKey, bundle.getLocale());
+                  return munge(englishKey, locale);
+               }
+            }
+         }
+         return munge(englishKey, locale);
+      }
+      catch (MissingResourceException e)
+      {
+         return munge(englishKey, locale);
+      }
+   }
+
+   // A hack to force all ResourceBundles to be reloaded at dev-time
+   // from here: http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=7&t=019653
+   static void reloadBundlesHack()
+   {
+      if (!warnedAboutReload)
+      {
+         log.warn("Clearing ResourceBundles: this hurts performance, and should not be enabled in production");
+         warnedAboutReload = true;
+      }
+      try
+      {
+         clearMap(ResourceBundle.class, null, "cacheList"); //$NON-NLS-1$
+         clearClassLoaderCache();
+      }
+      catch (Exception e)
+      {
+         log.warn("Could not reload resource bundles", e);
+      }
+   }
+
+   private static void clearClassLoaderCache()
+   {
+      ClassLoader loader = Thread.currentThread().getContextClassLoader();
+      // no need for compilation here.
+      Class<?> cl = loader.getClass();
+
+      try
+      {
+         if ("org.jboss.web.tomcat.service.WebAppClassLoader".equals(cl.getName())) //$NON-NLS-1$
+         {
+            cl = cl.getSuperclass();
+         }
+         if ("org.apache.catalina.loader.WebappClassLoader".equals(cl.getName())) //$NON-NLS-1$
+         {
+            clearMap(cl, loader, "resourceEntries"); //$NON-NLS-1$
+         }
+         else if ("org.jboss.classloader.spi.base.BaseClassLoader".equals(loader.getParent().getClass().getName())) //$NON-NLS-1$
+         {
+        	 // apparently not needed
+//        	 cl = loader.getParent().getClass();
+//             clearMap(cl, loader.getParent(), "resourceCache"); //$NON-NLS-1$
+         }
+         else
+         {
+            log.info("classloader " + cl.getName() + " is unknown. Parent is "+loader.getParent().getClass().getName());
+         }
+      }
+      catch (Exception e)
+      {
+         log.warn("couldn't clear classloader cache", e);
+      }
+   }
+
+   private static void clearMap(Class<?> cl, Object obj, String name) throws NoSuchFieldException, IllegalAccessException,
+         NoSuchMethodException, InvocationTargetException
+   {
+      Field field = cl.getDeclaredField(name);
+      field.setAccessible(true);
+
+      Object cache = field.get(obj);
+      Class<?> ccl = cache.getClass();
+      Method clearMethod = ccl.getMethod("clear", (Class[]) null); //$NON-NLS-1$
+      clearMethod.invoke(cache, (Object[]) null);
+   }
+
+   static final ThreadLocal<Locale> requestLocale = new ThreadLocal<Locale>();
+
+   static void clearRequestLocale()
+   {
+      I18nUtil.requestLocale.remove();
+   }
+
+   public static void setRequestLocale(final Locale locale)
+   {
+      I18nUtil.requestLocale.set(locale);
+   }
+
+   public static void setLocale(Locale locale)
+   {
+      // not allowed in unsigned applet, so we simulate it:
+//      Locale.setDefault(locale);
+      defaultLocale = locale;
+   }
+}

Property changes on: varia/src/main/org/jboss/varia/i18n/I18nUtil.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Index: varia/src/main/org/jboss/jmx/console/I18n.java
===================================================================
--- varia/src/main/org/jboss/jmx/console/I18n.java	(revision 0)
+++ varia/src/main/org/jboss/jmx/console/I18n.java	(revision 0)
@@ -0,0 +1,32 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.jmx.console;
+
+import java.text.MessageFormat;
+
+import org.jboss.varia.i18n.I18nUtil;
+
+/**
+ * Convenience class for accessing the JMX console's resource bundle.
+ * @author <a href="mailto:sflaniga@redhat.com">Sean Flanigan</a>
+ * @version $$Revision: $$
+ */
+public class I18n
+{
+   public static final String BUNDLE = "org.jboss.jmx.console.messages"; //$NON-NLS-1$
+   public static String gettext(String englishKey)
+   {
+      return I18nUtil.gettext(englishKey, BUNDLE);
+   }
+
+   public static String gettext(String englishKey, Object arg)
+   {
+      return MessageFormat.format(gettext(englishKey), arg);
+   }
+
+
+}

Property changes on: varia/src/main/org/jboss/jmx/console/I18n.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain


Property changes on: varia/src/resources/jmx/html
___________________________________________________________________
Name: svn:ignore
   + _*.jsp

po


Index: varia/src/resources/jmx/html/cluster/bootstrap.html
===================================================================
--- varia/src/resources/jmx/html/cluster/bootstrap.html	(revision 73826)
+++ varia/src/resources/jmx/html/cluster/bootstrap.html	(working copy)
@@ -1,69 +0,0 @@
-<html>
-<head>
-   <title>Cluster View Bootstrap</title>
-   <link rel="stylesheet" href="../style_master.css" type="text/css">
-</head>
-
-<table>
-   <tr>
-      <td width="250" ><img src="../images/logo.gif" align="left" border="0" alt=""></td>
-      <td><h1>JBoss Cluster Bootstrap</h1></td>
-   </tr>
-</table>
-<hr>
-<body>
-The cluster nodes to view need to be specified via some bootstrap mechanism.
-This can be done using any of the following methods.
-
-<h1>Bootstrap Using Naming Discovery</h1>
-This determines the cluster entry point by doing an HAJNDI naming service
-discovery query. The query may be restricted to a given partition name by
-specifying the name in the PartitionName field.
-If not specified than the first partition to respond will be choosen.
-<form action="ClusteredConsole?action=bootstrap" method="post" target="ClusterIndex">
-	<input type="hidden" name="bootstrap" value="discovery">
-	<table cellspacing="2" cellpadding="2" border="0">
-	<tr>
-		<td>PartitionName:</td><td><input type="text" name="partition" size="40"></td>
-	</tr>
-	<tr>
-		<td>DiscoveryName:</td><td><input type="text" name="discoveryGroup" size="40" value="230.0.0.4"></td>
-	</tr>
-	<tr>
-		<td>DiscoveryPort:</td><td><input type="text" name="discoveryPort" size="40" value="1102"></td>
-	</tr>
-	<tr>
-		<td>DiscoveryTimeout:</td><td><input type="text" name="discoveryTimeout" size="40" value="5000"></td>
-	</tr>
-	<tr>
-		<td><input type="reset" name="reset" value="Clear"></td>
-		<td><input type="submit" name="submit" value="Bootstrap"></td>
-	</tr>
-	</table>
-</form>
-
-<h1>Bootstrap Using a Hostname</h1>
-This determines the cluster entry point(s) by querying the JNDI service
-on the indicated server for the available cluster paritition services.
-Any cluster to which the server belongs will serve as an entry point for
-determining the members of the cluster. To query the server hosting the
-jmx-console application use "locahost" for the hostname.
-<form action="ClusteredConsole" method="post" target="ClusterIndex">
-	<input type="hidden" name="bootstrap" value="byhost">
-	<table cellspacing="2" cellpadding="2" border="0">
-	<tr>
-		<td>Hostname:</td><td><input type="text" name="hostname" value="localhost" size="40"></td>
-	</tr>
-	<tr>
-		<td>Port:</td><td><input type="text" name="port" value="1099" size="40"></td>
-	</tr>
-	<tr>
-		<td><input type="reset" name="reset" value="Clear"></td>
-		<td><input type="submit" name="submit" value="Bootstrap"></td>
-	</tr>
-	</table>
-</form>
-
-</body>
-</html>
-
Index: varia/src/resources/jmx/html/cluster/index.jsp
===================================================================
--- varia/src/resources/jmx/html/cluster/index.jsp	(revision 73432)
+++ varia/src/resources/jmx/html/cluster/index.jsp	(working copy)
@@ -2,5 +2,5 @@
 <frameset  cols="20%, *">
     <frame name="ClusterIndex" src="ClusteredConsole?action=index" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
     <frame name="ClusterNodeView" src="bootstrap.html" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
-	<noframes>A frames enabled browser is required for the cluster view</noframes>
+	<noframes>${messages["A frames enabled browser is required for the cluster view"]}</noframes>
 </frameset>
Index: varia/src/resources/jmx/html/cluster/clusterView.jsp
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: varia/src/resources/jmx/html/cluster/bootstrap.jsp
===================================================================
--- varia/src/resources/jmx/html/cluster/bootstrap.jsp	(revision 73432)
+++ varia/src/resources/jmx/html/cluster/bootstrap.jsp	(working copy)
@@ -1,65 +1,65 @@
 <html>
 <head>
-   <title>Cluster View Bootstrap</title>
+   <title>${messages["Cluster View Bootstrap"]}</title>
    <link rel="stylesheet" href="../style_master.css" type="text/css">
 </head>
 
 <table>
    <tr>
       <td width="250" ><img src="../images/logo.gif" align="left" border="0" alt=""></td>
-      <td><h1>JBoss Cluster Bootstrap</h1></td>
+      <td><h1>${messages["JBoss Cluster Bootstrap"]}</h1></td>
    </tr>
 </table>
 <hr>
 <body>
-The cluster nodes to view need to be specified via some bootstrap mechanism.
-This can be done using any of the following methods.
+${messages["The cluster nodes to view need to be specified via some bootstrap mechanism.
+This can be done using any of the following methods."]}
 
-<h1>Bootstrap Using Naming Discovery</h1>
-This determines the cluster entry point by doing an HAJNDI naming service
+<h1>${messages["Bootstrap Using Naming Discovery"]}</h1>
+${messages["This determines the cluster entry point by doing an HAJNDI naming service
 discovery query. The query may be restricted to a given partition name by
 specifying the name in the PartitionName field.
-If not specified than the first partition to respond will be choosen.
+If not specified than the first partition to respond will be choosen."]}
 <form action="ClusteredConsole?action=bootstrap" method="post" target="ClusterIndex">
 	<input type="hidden" name="bootstrap" value="discovery">
 	<table cellspacing="2" cellpadding="2" border="0">
 	<tr>
-		<td>PartitionName:</td><td><input type="text" name="partition" size="40"></td>
+		<td>${messages["PartitionName:"]}</td><td><input type="text" name="partition" size="40"></td>
 	</tr>
 	<tr>
-		<td>DiscoveryName:</td><td><input type="text" name="discoveryGroup" size="40" value="230.0.0.4"></td>
+		<td>${messages["DiscoveryName:"]}</td><td><input type="text" name="discoveryGroup" size="40" value="230.0.0.4"></td>
 	</tr>
 	<tr>
-		<td>DiscoveryPort:</td><td><input type="text" name="discoveryPort" size="40" value="1102"></td>
+		<td>${messages["DiscoveryPort:"]}</td><td><input type="text" name="discoveryPort" size="40" value="1102"></td>
 	</tr>
 	<tr>
-		<td>DiscoveryTimeout:</td><td><input type="text" name="discoveryTimeout" size="40" value="5000"></td>
+		<td>${messages["DiscoveryTimeout:"]}</td><td><input type="text" name="discoveryTimeout" size="40" value="5000"></td>
 	</tr>
 	<tr>
-		<td><input type="reset" name="reset" value="Clear"></td>
-		<td><input type="submit" name="submit" value="Bootstrap"></td>
+		<td><input type="reset" name="reset" value="${messages['Clear']}"></td>
+		<td><input type="submit" name="submit" value="${messages['Bootstrap']}"></td>
 	</tr>
 	</table>
 </form>
 
-<h1>Bootstrap Using a Hostname</h1>
-This determines the cluster entry point(s) by querying the JNDI service
+<h1>${messages["Bootstrap Using a Hostname"]}</h1>
+${messages['This determines the cluster entry point(s) by querying the JNDI service
 on the indicated server for the available cluster paritition services.
 Any cluster to which the server belongs will serve as an entry point for
 determining the members of the cluster. To query the server hosting the
-jmx-console application use "locahost" for the hostname.
+jmx-console application use "locahost" for the hostname.']}
 <form action="ClusteredConsole" method="post" target="ClusterIndex">
 	<input type="hidden" name="bootstrap" value="byhost">
 	<table cellspacing="2" cellpadding="2" border="0">
 	<tr>
-		<td>Hostname:</td><td><input type="text" name="hostname" value="localhost" size="40"></td>
+		<td>${messages["Hostname:"]}</td><td><input type="text" name="hostname" value="localhost" size="40"></td>
 	</tr>
 	<tr>
-		<td>Port:</td><td><input type="text" name="port" value="1099" size="40"></td>
+		<td>${messages["Port:"]}</td><td><input type="text" name="port" value="1099" size="40"></td>
 	</tr>
 	<tr>
-		<td><input type="reset" name="reset" value="Clear"></td>
-		<td><input type="submit" name="submit" value="Bootstrap"></td>
+		<td><input type="reset" name="reset" value="${messages['Clear']}"></td>
+		<td><input type="submit" name="submit" value="${messages['Bootstrap']}"></td>
 	</tr>
 	</table>
 </form>
Index: varia/src/resources/jmx/html/cluster/index.html
===================================================================
--- varia/src/resources/jmx/html/cluster/index.html	(revision 73826)
+++ varia/src/resources/jmx/html/cluster/index.html	(working copy)
@@ -1,6 +0,0 @@
-<!-- frames -->
-<frameset  cols="20%, *">
-    <frame name="ClusterIndex" src="ClusteredConsole?action=index" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
-    <frame name="ClusterNodeView" src="bootstrap.html" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
-	<noframes>A frames enabled browser is required for the cluster view</noframes>
-</frameset>
Index: varia/src/resources/jmx/html/inspectMBean.jsp
===================================================================
--- varia/src/resources/jmx/html/inspectMBean.jsp	(revision 73826)
+++ varia/src/resources/jmx/html/inspectMBean.jsp	(working copy)
@@ -1,6 +1,7 @@
 <?xml version="1.0"?>
 <%@page contentType="text/html"
    import="java.net.*,java.util.*,javax.management.*,javax.management.modelmbean.*,
+   org.jboss.jmx.console.I18n,
    org.jboss.jmx.adaptor.control.Server,
    org.jboss.jmx.adaptor.control.AttrResultInfo,
    org.jboss.jmx.adaptor.model.*,
@@ -9,6 +10,7 @@
    java.lang.reflect.Array,
            java.io.StringWriter"
 %>
+<%@page isELIgnored="false" %>
 <%! 
     private static final Comparator MBEAN_FEATURE_INFO_COMPARATOR = new Comparator()
     {
@@ -29,13 +31,13 @@
       }
     };
 
-    String sep = System.getProperty("line.separator", "\n");
+    String sep = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
 
     public String fixDescription(String desc)
     {
-      if (desc == null || desc.equals(""))
+      if (desc == null || desc.equals("")) //$NON-NLS-1$
       {
-        return "(no description)";
+        return I18n.gettext("(no description)"); //$NON-NLS-1$
       }
       return desc;
     }
@@ -60,8 +62,8 @@
    }
    public String quoteName(String name)
    {
-      String sname = name.replace("\"", "&quot;");
-      sname = name.replace("\'", "&apos;");
+      String sname = name.replace("\"", "&quot;"); //$NON-NLS-1$ //$NON-NLS-2$
+      sname = name.replace("\'", "&apos;"); //$NON-NLS-1$ //$NON-NLS-2$
       return sname;
    }
 
@@ -73,7 +75,7 @@
 
 <html>
 <head>
-   <title>MBean Inspector</title>
+   <title>${messages["MBean Inspector"]}</title>
    <link rel="stylesheet" href="style_master.css" type="text/css" />
    <meta http-equiv="cache-control" content="no-cache" />
 </head>
@@ -104,7 +106,7 @@
 
 <img src="images/logo.gif" align="right" border="0" alt="" />
 
-<h1>JMX MBean View</h1>
+<h1>${messages["JMX MBean View"]}</h1>
 
 <h3><%= objectNameString %></h3>
 
@@ -114,8 +116,8 @@
 %>
    <table class="ObjectName" cellspacing="0" cellpadding="5">
    <tr>
-      <td class="nameh" rowspan="<%= size + 1 %>">Name</td>
-      <td class='sep'>Domain</td>
+      <td class="nameh" rowspan="<%= size + 1 %>">${messages["Name"]}</td>
+      <td class='sep'>${messages["Domain"]}</td>
       <td class='sep'><%= objectName.getDomain() %></td>
    </tr>
 <%
@@ -133,9 +135,9 @@
    }
 %>
    <tr>
-      <td class='nameh'>Java Class</td>
+      <td class='nameh'>${messages["Java Class"]}</td>
       <td colspan="3"><jsp:getProperty name='mbeanData' property='className'/></td></tr>
-      <tr><td class='nameh'>Description</td>
+      <tr><td class='nameh'>${messages["Description"]}</td>
       <td colspan="3" class="adescription">
          <%= fixDescription(mbeanInfo.getDescription())%>
       </td>
@@ -143,9 +145,9 @@
 </table>
 
 <p>
-<a href='HtmlAdaptor?action=displayMBeans'>Back to Agent View</a>
+<a href='HtmlAdaptor?action=displayMBeans'>${messages["Back to Agent View"]}</a>
 &emsp;
-<a href='HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(request.getParameter("name")) %>'>Refresh MBean View</a>
+<a href='HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(request.getParameter("name")) %>'>${messages["Refresh MBean View"]}</a>
 </p>
 
 <form method="post" action="HtmlAdaptor">
@@ -154,11 +156,11 @@
    <table class="AttributesClass" cellspacing="0" cellpadding="5">
       <tr class="AttributesHeader">
       <th width="25%">
-         <span class='aname'>Attribute Name</span> <span class='aaccess'>(Access)</span><br/>
-         <span class='atype'>Type</span> <br/>
-         <span class='adescription'>Description</span> <br/>
+         <span class='aname'>${messages["Attribute Name"]}</span> <span class='aaccess'>${messages["(Access)"]}</span><br/>
+         <span class='atype'>${messages["Type"]}</span> <br/>
+         <span class='adescription'>${messages["Description"]}</span> <br/>
       </th>
-      <th width="75%" class='aname'>Attribute Value</th>
+      <th width="75%" class='aname'>${messages["Attribute Value"]}</th>
       </tr>
 <%
    boolean hasWriteable = false;
@@ -169,7 +171,7 @@
       String attrType = attrInfo.getType();
       AttrResultInfo attrResult = Server.getMBeanAttributeResultInfo(objectNameString, attrInfo);
       String attrValue = attrResult.getAsText();
-      String access = "";
+      String access = ""; //$NON-NLS-1$
       if( attrInfo.isReadable() )
          access += "R";
       if( attrInfo.isWritable() )
@@ -189,16 +191,16 @@
 <%
       if( attrInfo.isWritable() )
       {
-         String readonly = attrResult.editor == null ? "readonly='readonly'" : "";
-         if( attrType.equals("boolean") || attrType.equals("java.lang.Boolean") )
+         String readonly = attrResult.editor == null ? "readonly='readonly'" : ""; //$NON-NLS-1$ //$NON-NLS-2$
+         if( attrType.equals("boolean") || attrType.equals("java.lang.Boolean") ) //$NON-NLS-1$ //$NON-NLS-2$
          {
             // Boolean true/false radio boxes
             Boolean value = Boolean.valueOf(attrValue);
-            String trueChecked = (value == Boolean.TRUE ? "checked='checked'" : "");
-            String falseChecked = (value == Boolean.FALSE ? "checked='checked'" : "");
+            String trueChecked = (value == Boolean.TRUE ? "checked='checked'" : ""); //$NON-NLS-1$ //$NON-NLS-2$
+            String falseChecked = (value == Boolean.FALSE ? "checked='checked'" : ""); //$NON-NLS-1$ //$NON-NLS-2$
 %>
-            <input type="radio" name="<%= attrName %>" value="True" <%=trueChecked%>/>True
-            <input type="radio" name="<%= attrName %>" value="False" <%=falseChecked%>/>False
+            <input type="radio" name="<%= attrName %>" value="True" <%=trueChecked%>/>${messages["True"]}
+            <input type="radio" name="<%= attrName %>" value="False" <%=falseChecked%>/>${messages["False"]}
 <%
          }
          else if( attrInfo.isReadable() )
@@ -244,15 +246,15 @@
             }
          }
          // Array of some objects
-         else if( attrType.startsWith("["))
+         else if( attrType.startsWith("[")) //$NON-NLS-1$
          {
             Object arrayObject = Server.getMBeanAttributeObject(objectNameString, attrName);
             if (arrayObject != null) {
-               out.print("<pre>");
+               out.print("<pre>"); //$NON-NLS-1$
                for (int i = 0; i < Array.getLength(arrayObject); ++i) {
                   out.println(fixValue(Array.get(arrayObject,i)));
                }
-               out.print("</pre>");
+               out.print("</pre>"); //$NON-NLS-1$
             } 
             
          }
@@ -271,7 +273,7 @@
          {
 %>
             <br />
-            <a href="HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(attrValue) %>">View MBean</a>
+            <a href="HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(attrValue) %>">${messages["View MBean"]}</a>
 <%
          }
       }
@@ -286,7 +288,7 @@
 %>
    <tr>
       <td colspan='2'>
-         <input class='applyb' type="submit" value="Apply Changes" />
+         <input class='applyb' type="submit" value="${messages['Apply Changes']}" />
       </td>
    </tr>
 <%
@@ -302,12 +304,12 @@
 <table class="AttributesClass" cellspacing="0" cellpadding="5">
    <tr class="AttributesHeader">
    <th width="25%">
-      <span class='aname'>Operation Name</span><br/>
-      <span class='atype'>Return Type</span> <br/>
-      <span class='adescription'>Description</span> <br/>
+      <span class='aname'>${messages["Operation Name"]}</span><br/>
+      <span class='atype'>${messages["Return Type"]}</span> <br/>
+      <span class='adescription'>${messages["Description"]}</span> <br/>
    </th>
    <th width="75%">
-      <span class='aname'>Parameters</span>
+      <span class='aname'>${messages["Parameters"]}</span>
    </th>
    </tr>
 <%
@@ -318,8 +320,8 @@
       if (opInfo instanceof ModelMBeanOperationInfo)
       {
          Descriptor desc = ((ModelMBeanOperationInfo)opInfo).getDescriptor();
-         String role = (String)desc.getFieldValue("role");
-         if ("getter".equals(role) || "setter".equals(role))
+         String role = (String)desc.getFieldValue("role"); //$NON-NLS-1$
+         if ("getter".equals(role) || "setter".equals(role)) //$NON-NLS-1$ //$NON-NLS-2$
          {
             accept = false;
          }
@@ -353,7 +355,7 @@
                String ptype = paramInfo.getType();
                if( pname == null || pname.length() == 0 || pname.equals(ptype) )
                {
-                  pname = "arg"+p;
+                  pname = "arg"+p; //$NON-NLS-1$
                }
                String pdesc = fixDescription(paramInfo.getDescription());
 %>
@@ -363,12 +365,12 @@
          <span class='atype'><%= ptype %></span> <br/>
          <span class='adescription'><%= pdesc %></span> <br/>
 <%
-                if( ptype.equals("boolean") || ptype.equals("java.lang.Boolean") )
+                if( ptype.equals("boolean") || ptype.equals("java.lang.Boolean") ) //$NON-NLS-1$ //$NON-NLS-2$
                 {
                    // Boolean true/false radio boxes
 %>
-            <input type="radio" name="arg<%= p%>" value="True" checked='checked'>True
-            <input type="radio" name="arg<%= p%>" value="False" />False
+            <input type="radio" name="arg<%= p%>" value="True" checked='checked'>${messages["True"]}
+            <input type="radio" name="arg<%= p%>" value="False" />${messages["False"]}
 <%
                  }
                  else
@@ -387,7 +389,7 @@
 <%
          } // has parameter list
 %>
-      <input type="submit" value="Invoke" />
+      <input type="submit" value="${messages['Invoke']}" />
       </form>
 
 </td></tr>
Index: varia/src/resources/jmx/html/displayMBeans.jsp
===================================================================
--- varia/src/resources/jmx/html/displayMBeans.jsp	(revision 73826)
+++ varia/src/resources/jmx/html/displayMBeans.jsp	(working copy)
@@ -2,40 +2,42 @@
 <%@page contentType="text/html"
    import="java.net.*,java.util.*,org.jboss.jmx.adaptor.model.*,java.io.*"
 %>
+<%@page isELIgnored="false" %>
 <!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
 <head>
-   <title>JBoss JMX Management Console</title>
+   <title>${messages["JBoss JMX Management Console"]}</title>
    <link rel="stylesheet" href="style_master.css" type="text/css" />
    <meta http-equiv="cache-control" content="no-cache" />
 </head>
 <body>
-   <img src="images/logo.gif" align="right" border="0" alt="logo" />
+   <img src="images/logo.gif" align="right" border="0" alt="${messages['logo']}" />
    <%
-   	String hostname = "";
+   	String hostname = ""; //$NON-NLS-1$
    	try {
    		hostname = InetAddress.getLocalHost().getHostName();
    	} catch (IOException e) {
    	}
    %>
-   <h1>JMX Agent View</h1>
+   <h1>${messages["JMX Agent View"]}</h1>
    <h3><%=hostname%></h3>
 
 <form action="HtmlAdaptor?action=displayMBeans" method="post" name="applyFilter" id="applyFilter">
-ObjectName Filter (e.g. "jboss:*", "*:service=invoker,*"): <br />
-<input type="text" name="filter" size="40" value="<%= request.getAttribute("filter")%>" /> <%
- 	if (request.getAttribute("filterError") != null) {
-		out.println("<span class='error'>"+request.getAttribute("filterError")+"</span>");
+${messages['ObjectName Filter (e.g. "jboss:*", "*:service=invoker,*")']}: <br />
+<input type="text" name="filter" size="40" value="<%= request.getAttribute("filter") //$NON-NLS-1$
+%>" /> <%
+ 	if (request.getAttribute("filterError") != null) { //$NON-NLS-1$
+		out.println("<span class='error'>"+request.getAttribute("filterError")+"</span>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
  	}
  %>
   <br/>
-<input type="submit" name="apply" value="Apply Filter" />
-<input type="button" onClick="javascript:location='HtmlAdaptor?filter='" value="Clear Filter" />
+<input type="submit" name="apply" value="${messages['Apply Filter']}" />
+<input type="button" onClick="javascript:location='HtmlAdaptor?filter='" value="${messages['Clear Filter']}" />
 
 <%
-	for (Iterator mbeans = (Iterator) request.getAttribute("mbeans"); mbeans
+	for (Iterator mbeans = (Iterator) request.getAttribute("mbeans"); mbeans //$NON-NLS-1$
 			.hasNext();) {
 		DomainData domainData = (DomainData) mbeans.next();
 %>
Index: varia/src/resources/jmx/html/displayOpResult.jsp
===================================================================
--- varia/src/resources/jmx/html/displayOpResult.jsp	(revision 73826)
+++ varia/src/resources/jmx/html/displayOpResult.jsp	(working copy)
@@ -4,6 +4,7 @@
    		   java.beans.PropertyEditor,
    		   org.jboss.util.propertyeditor.PropertyEditors"
 %>
+<%@page isELIgnored="false" %>
 
 <!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -11,7 +12,7 @@
 
 <html>
 <head>
-   <title>Operation Results</title>
+   <title>${messages["Operation Results"]}</title>
    <link rel="stylesheet" href="style_master.css" type="text/css" />
    <meta http-equiv="cache-control" content="no-cache" />
 </head>
@@ -19,30 +20,35 @@
 
 <jsp:useBean id='opResultInfo' type='org.jboss.jmx.adaptor.control.OpResultInfo' scope='request'/>
 
-         <img src="images/logo.gif" align="right" border="0" alt="logo" />
-         <h1>JMX MBean Operation Result</h1>
-         <h3><%= request.getParameter("name") %></h3>
-         <h3>Operation <code><%= opResultInfo.name%>()</code></h3>
+         <img src="images/logo.gif" align="right" border="0" alt="${messages['logo']}" />
+         <h1>${messages["JMX MBean Operation Result"]}</h1>
+         <h3><%= request.getParameter("name")  //$NON-NLS-1$
+         %></h3>
+         <% pageContext.setAttribute("opName", opResultInfo.name); //$NON-NLS-1$
+         %>
+         <h3>${messages["Operation <code>{0}()</code>"][opName]}</h3>
 
 <p>
-<a href='HtmlAdaptor?action=displayMBeans'>Back to Agent View</a>
+<a href='HtmlAdaptor?action=displayMBeans'>${messages["Back to Agent View"]}</a>
 &emsp;
-<a href='HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(request.getParameter("name")) %>'>Back to MBean View</a>
+<a href='HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(request.getParameter("name"))  //$NON-NLS-1$
+%>'>${messages["Back to MBean View"]}</a>
 &emsp;
 <a href=
 <%
-	out.print("'HtmlAdaptor?action=invokeOpByName");
-	out.print("&amp;name=" + URLEncoder.encode(request.getParameter("name")));
-	out.print("&amp;methodName=" + opResultInfo.name );
+	out.print("'HtmlAdaptor?action=invokeOpByName"); //$NON-NLS-1$
+	out.print("&amp;name=" + URLEncoder.encode(request.getParameter("name"))); //$NON-NLS-1$ //$NON-NLS-2$
+	out.print("&amp;methodName=" + opResultInfo.name ); //$NON-NLS-1$
 
 	for (int i=0; i<opResultInfo.args.length; i++)
     {
-		out.print("&amp;argType=" + opResultInfo.signature[i]);
-		out.print("&amp;arg" + i + "=" + opResultInfo.args[i]);
+		out.print("&amp;argType=" + opResultInfo.signature[i]); //$NON-NLS-1$
+		out.print("&amp;arg" + i + "=" + opResultInfo.args[i]); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
-	out.println("'>Reinvoke MBean Operation");
-%>
+	out.print("'"); //$NON-NLS-1$
+%>>
+${messages["Reinvoke MBean Operation"]}
 </a>
 </p>
 
@@ -52,7 +58,7 @@
    if( opResultInfo.result == null )
    {
 %>
-   Operation completed successfully without a return value.
+   ${messages["Operation completed successfully without a return value."]}
 <%
    }
    else
@@ -67,12 +73,12 @@
          opResultString = opResultInfo.result.toString();
       }
 
-      boolean hasPreTag = opResultString.startsWith("<pre>");
+      boolean hasPreTag = opResultString.startsWith("<pre>"); //$NON-NLS-1$
       if( hasPreTag == false )
-         out.println("<pre>");
+         out.println("<pre>"); //$NON-NLS-1$
       out.println(opResultString);
       if( hasPreTag == false )
-         out.println("</pre>");
+         out.println("</pre>"); //$NON-NLS-1$
    }
 %>
    </span>
Index: varia/src/resources/jmx/jmx-console-web.xml
===================================================================
--- varia/src/resources/jmx/jmx-console-web.xml	(revision 73826)
+++ varia/src/resources/jmx/jmx-console-web.xml	(working copy)
@@ -1,23 +1,39 @@
 <?xml version="1.0"?>
-<!DOCTYPE web-app PUBLIC
-   "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-   "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+		 version="2.4">
+   <description>The standard web descriptor for the html adaptor</description>
+   <filter>
+   	<filter-name>I18nFilter</filter-name>
+   	<filter-class>org.jboss.varia.i18n.I18nFilter</filter-class>
+   	<init-param>
+   		<param-name>bundle</param-name>
+   		<param-value>org.jboss.jmx.console.messages</param-value>
+   	</init-param>
+   </filter>
+   <filter-mapping>
+   	<filter-name>I18nFilter</filter-name>
+   	<url-pattern>/*</url-pattern>
+   </filter-mapping>
 
-<web-app>
-   <description>The standard web descriptor for the html adaptor</description>
+   <listener>
+   	<listener-class>org.jboss.varia.i18n.I18nServletContextListener</listener-class>
+   </listener>
+   
    <!--
     <filter>
       <filter-name>JmxOpsAccessControlFilter</filter-name>
       <filter-class>org.jboss.jmx.adaptor.html.JMXOpsAccessControlFilter</filter-class>
       <init-param>
+		  <description>Comma-delimited Roles that define the JMX Operation denoting updation of Attributes</description>
         <param-name>updateAttributes</param-name>
         <param-value>UpdateAttributeRole</param-value>
-        <description>Comma-delimited Roles that define the JMX Operation denoting updation of Attributes</description>
       </init-param>
       <init-param>
+		  <description>Comma-delimited Roles that define the JMX Operation denoting Invocation of Operations</description>
         <param-name>invokeOp</param-name>
         <param-value>InvokeOpRole</param-value>
-        <description>Comma-delimited Roles that define the JMX Operation denoting Invocation of Operations</description>
       </init-param>
    </filter>
    <filter-mapping>
@@ -33,11 +49,11 @@
       <servlet-name>ClusteredConsoleServlet</servlet-name>
       <servlet-class>org.jboss.jmx.adaptor.html.ClusteredConsoleServlet</servlet-class>
       <init-param>
+		  <description>The JGroups protocol stack config</description>
          <param-name>jgProps</param-name>
          <param-value>UDP(ip_mcast=true;ip_ttl=16;loopback=false;mcast_addr=${jboss.partition.udpGroup:228.1.2.3};mcast_port=${jboss.jmxconsolepartition.mcast_port:46666}):
 org.jboss.jmx.adaptor.control.FindView
          </param-value>
-         <description>The JGroups protocol stack config</description>
       </init-param>
    </servlet>
    <servlet>
Index: varia/build.xml
===================================================================
--- varia/build.xml	(revision 73826)
+++ varia/build.xml	(working copy)
@@ -395,17 +395,34 @@
       </fileset>
     </jar>
 
+   <!-- varia-i18n.jar 
+   <jar jarfile="${build.lib}/varia-i18n.jar"
+     manifest="${build.etc}/default.mf">
+     <fileset dir="${build.classes}">
+       <include name="org/jboss/varia/i18n/**"/>
+     </fileset>
+      <fileset dir="${build.resources}/i18n">
+        <include name="**"/>
+      </fileset>
+   </jar>
+   -->
+
     <!-- jmx-console.war -->
     <war warfile="${build.lib}/jmx-console.war"
       webxml="${source.resources}/jmx/jmx-console-web.xml">
       <webinf dir="${source.resources}/jmx/web-inf"/>
       <classes dir="${build.classes}">
+        <include name="org/jboss/varia/i18n/**"/>
         <include name="org/jboss/jmx/adaptor/**"/>
         <exclude name="org/jboss/jmx/adaptor/snmp/**"/>
+         <include name="org/jboss/jmx/console/**"/>
       </classes>
       <classes dir="${source.resources}/jmx">
         <include name="*.properties"/>
       </classes>
+      <classes dir="${source.resources}/i18n">
+        <include name="**/*.properties"/>
+      </classes>
       <fileset dir="${source.resources}/jmx/html"/>
     </war>
 
@@ -751,4 +768,14 @@
     description="Show this help message."
     depends="_buildmagic:help:standard"/>
 
+  <target name="deploywar"
+		  description="Executes the main target, then extracts WAR to deployment directory."
+		  depends="main">
+	  <property name="outputdir" value="../build/output/jboss-5.0.0.CR1"/>
+  	<property name="deployconfig" value="default"/>
+  	<property name="deploydir" value="${outputdir}/server/${deployconfig}/deploy"/>
+
+  	<unwar src="./output/lib/jmx-console.war" dest="${deploydir}/jmx-console.war" />
+  </target>
+  
 </project>
