diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/Action.java b/webconsole/src/main/java/org/apache/felix/webconsole/Action.java
index fa6119d..f22c737 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/Action.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/Action.java
@@ -30,10 +30,9 @@
  * <p>
  * <strong>NOTE: This interface is just an intermediate solution for making the
  * web console extensible. Future releases of the web console will remove this
- * and the {@link Render} interfaces and use the
- * <code>javax.servlet.Servlet</code> interface with predefined service
- * registration properties instead.</strong>
- * 
+ * interface and use the <code>javax.servlet.Servlet</code> interface with
+ * predefined service registration properties instead.</strong>
+ *
  * @deprecated This interface will be removed when <a
  *             href="https://issues.apache.org/jira/browse/FELIX-574">FELIX-574</a>
  *             will be implemented.
@@ -41,6 +40,9 @@
 public interface Action
 {
 
+    /**
+     * The name of the service used when registered in the OSGi framework.
+     */
     static final String SERVICE = Action.class.getName();
 
     /**
@@ -50,9 +52,19 @@
     static final String ATTR_REDIRECT_PARAMETERS = "redirectParameters";
 
 
+    /**
+     * Retrieves the name of the action (alias)
+     *
+     * @return the name
+     */
     String getName();
 
 
+    /**
+     * This method is actually unused
+     *
+     * @return label?
+     */
     String getLabel();
 
 
@@ -65,11 +77,11 @@
      *
      * @return <code>true</code> the client should be redirected after the
      *      action has been taken. <code>false</code> if this method also
-     *      provided response to the client and nore more processing is
+     *      provided response to the client and no more processing is
      *      required.
      *
-     * @throws IOException May be thrown if an I/O error occurrs
-     * @throws ServletException May be thrown if another error occurrs while
+     * @throws IOException May be thrown if an I/O error occurs
+     * @throws ServletException May be thrown if another error occurs while
      *      processing the action. The <code>rootCause</code> of the exception
      *      should contain the cause of the error.
      */
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/AttachmentProvider.java b/webconsole/src/main/java/org/apache/felix/webconsole/AttachmentProvider.java
index 385a9ac..530e8a8 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/AttachmentProvider.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/AttachmentProvider.java
@@ -25,7 +25,7 @@
 /**
  * This is an optional extension of the {@link ConfigurationPrinter}.
  * If a configuration printer implements this interface, the printer
- * can add additional attamchemtns to the output of the configuration rendering.
+ * can add additional attachments to the output of the configuration rendering.
  *
  * Currently this is only supported for the ZIP mode.
  *
@@ -42,7 +42,7 @@
      * The returned list should contain URLs pointing to the
      * attachments for this mode.
      * @param mode The render mode.
-     * @return An array of urls or null.
+     * @return An array of URLs or null.
      */
     URL[] getAttachments(String mode);
 }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/BrandingPlugin.java b/webconsole/src/main/java/org/apache/felix/webconsole/BrandingPlugin.java
index 96f73fd..d28edbd 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/BrandingPlugin.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/BrandingPlugin.java
@@ -31,6 +31,8 @@
      * Returns an indicative name of the branding plugin. This value is used
      * as the Window/Page title together with the title of the respective
      * plugin.
+     * 
+     * @return the name of the branding plugin
      */
     String getBrandName();
 
@@ -38,6 +40,8 @@
     /**
      * Returns the name of the product in which the web console is contained
      * and to which the web console is branded.
+     *
+     * @return the product name
      */
     String getProductName();
 
@@ -45,6 +49,8 @@
     /**
      * Returns an (absolute) URL to a web site representing the product to
      * which the web console is branded.
+     *
+     * @return the product URL
      */
     String getProductURL();
 
@@ -52,12 +58,16 @@
     /**
      * Returns an absolute path to an image to be rendered as the logo of the
      * branding product.
+     *
+     * @return a path to an image - usually the product logo
      */
     String getProductImage();
 
 
     /**
      * Returns the name of the branding product vendor.
+     *
+     * @return the product vendor
      */
     String getVendorName();
 
@@ -65,6 +75,8 @@
     /**
      * Returns an (absolute) URL to the web site of the branding product
      * vendor.
+     *
+     * @return the URL of the product vendor
      */
     String getVendorURL();
 
@@ -72,6 +84,8 @@
     /**
      * Returns an absolute path to an image to be rendered as the logo of the
      * branding product vendor.
+     *
+     * @return the company logo
      */
     String getVendorImage();
 
@@ -79,6 +93,8 @@
     /**
      * Returns the absolute path to an icon to be used as the web console
      * "favicon".
+     *
+     * @return path to an image, that is shown as favorite icon in the web browser
      */
     String getFavIcon();
 
@@ -86,6 +102,8 @@
     /**
      * Returns the absolute path to a CSS file to be used as the main CSS for
      * the basic admin site.
+     *
+     * @return a path to a custom CSS. Used to override the default web console styling
      */
     String getMainStyleSheet();
 }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java b/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java
index 390fe6a..dd428ff 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java
@@ -70,14 +70,17 @@
     /**
      * Returns a human readable title string to be placed in front of the configuration
      * report generated by the {@link #printConfiguration(PrintWriter)} method.
+     *
+     * @return the configuration title
      */
     String getTitle();
 
-
     /**
      * Prints the configuration report to the given <code>printWriter</code>.
      * Implementations are free to print whatever information they deem useful.
-     * The <code>printWriter</code> may be flushed but must not be closed.
+     * 
+     * @param printWriter where to write the configuration data. It might be flushed,
+     * but must not be closed.
      */
     void printConfiguration( PrintWriter printWriter );
 }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/DefaultVariableResolver.java b/webconsole/src/main/java/org/apache/felix/webconsole/DefaultVariableResolver.java
index 3985535..baf7f67 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/DefaultVariableResolver.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/DefaultVariableResolver.java
@@ -37,24 +37,46 @@
     private static final long serialVersionUID = 4148807223433047780L;
 
 
+    /**
+     * Creates a new variable resolver with default capacity.
+     */
     public DefaultVariableResolver()
     {
         super();
     }
 
 
+    /**
+     * Creates a new variable resolver and initializes both - capacity & load factor
+     * 
+     * @param initialCapacity  the initial capacity of the variable container
+     * @param loadFactor the load factor of the variable container
+     * @see HashMap#HashMap(int, float)
+     */
     public DefaultVariableResolver( final int initialCapacity, final float loadFactor )
     {
         super( initialCapacity, loadFactor );
     }
 
 
+    /**
+     * Creates a new variable resolver with specified initial capacity
+     * 
+     * @param initialCapacity  the initial capacity of the variable container
+     * @see HashMap#HashMap(int)
+     */
     public DefaultVariableResolver( final int initialCapacity )
     {
         super( initialCapacity );
     }
 
 
+    /**
+     * Creates a new variable resolver copying the variables from the given map.
+     * 
+     * @param source  the map whose variables are to be placed in this resolver.
+     * @see HashMap#HashMap(Map)
+     */
     public DefaultVariableResolver( final Map source )
     {
         super( source );
diff --git a/webconsole/src/main/resources/OSGI-INF/l10n/bundle_de.properties b/webconsole/src/main/resources/OSGI-INF/l10n/bundle_de.properties
new file mode 100644
index 0000000..5b03068
--- /dev/null
+++ b/webconsole/src/main/resources/OSGI-INF/l10n/bundle_de.properties
@@ -0,0 +1,82 @@
+#Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# German (de) translations of the Web Console strings
+#
+
+Web\ Console = Netz Konsole
+
+#
+# BundlesServlet.java
+Upload / Install Bundles = Hochladen und Installieren von Bundles
+Start\ Bundle = Bundle Starten
+Start\ Level = Start Level
+Install\ or\ Update = Installieren oder Aktualisieren
+
+bundle = Bundle
+Bundle\ information = Bundle Information 
+in\ total = insgesamt 
+all = alle
+active = aktiv
+active\ fragments = aktive Fragment(e) 
+resolved = aufgel�st
+installed = installiert
+
+Installed = Installiert 
+Fragment = Fragment
+Resolved = Aufgel&ouml;st
+Starting = Am Starten
+Active = Aktiv
+Stopping = Am Stoppen
+Uninstalled = Deinstalliert
+Unknown = Unbekannter Status
+
+Symbolic\ Name = Symbolischer Name 
+# Version = 
+# Bundle\ Location =  
+Last\ Modification = Letzte &Auml;nderung
+Bundle\ Documentation = Dokumentation
+# Vendor = 
+# Copyright = 
+Description = Beschreibung
+Start\ Level = Start Level
+# Bundle\ Classpath = 
+Exported\ Packages = Exportierte Packages 
+Imported\ Packages = Importierte Packages
+Importing\ Bundles = Importierende Bundles
+# Manifest\ Headers = 
+# Host\ Bundles = 
+Fragments\ Attached = Gebundene Fragmente 
+Overwritten\ by\ Boot\ Delegation = &Uuml;berschrieben von Boot Delegation 
+but\ is\ not\ required = aber nicht ben&ouml;tigt 
+from = von
+Cannot\ be\ resolved = kann nicht aufgel&ouml;st werden 
+and\ overwritten\ by\ Boot\ Delegation = und &uuml;berschrieben von Boot Delegation
+
+#
+# bundles.js
+Id = ID
+# Name = Name
+# Status = 
+Actions = Aktionen 
+
+Reload = Neu laden
+Install/Update... = Installieren/Aktualisieren...
+Refresh\ Packages = Packages neu binden
+
+Details = Einzelheiten
+Back = Zur&uuml;ck
+Hide\ Details = Einzelheiten verstecken
\ No newline at end of file
diff --git a/webconsole/src/main/resources/OSGI-INF/l10n/bundle_en.properties b/webconsole/src/main/resources/OSGI-INF/l10n/bundle_en.properties
new file mode 100644
index 0000000..c9b01a4
--- /dev/null
+++ b/webconsole/src/main/resources/OSGI-INF/l10n/bundle_en.properties
@@ -0,0 +1,87 @@
+#Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# Web Console strings for reference all strings here are commented.
+# This file may be used to produce a translation of the strings
+#
+# Note that properties files are ISO-8859-1 encoded. To provide translations
+# for languages requiring different character encodings, you may use the
+# native2ascii Maven Plugin from http://mojo.codehaus.org/native2ascii-maven-plugin/
+# to translate the natively encoded files to ISO-8859-1 during bundle build
+#
+
+#
+# BundlesServlet.java
+
+# Upload / Install Bundles = 
+# Start\ Bundle = 
+# Start\ Level = 
+# Install\ or\ Update =
+
+# bundle = 
+# Bundle information = 
+# in\ total = 
+# all = 
+# active = 
+# active\ fragments = 
+# resolved = 
+# installed = 
+
+# Installed = 
+# Fragment = 
+# Resolved = 
+# Starting = 
+# Active = 
+# Stopping = 
+# Uninstalled = 
+# Unknown = 
+ 
+# Symbolic\ Name = 
+# Version = 
+# Bundle\ Location = 
+# Last\ Modification = 
+# Bundle\ Documentation = 
+# Vendor = 
+# Copyright = 
+# Description = 
+# Start\ Level = 
+# Bundle\ Classpath = 
+# Exported\ Packages = 
+# Imported\ Packages = 
+# Importing\ Bundles = 
+# Manifest\ Headers = 
+# Host\ Bundles = 
+# Fragments\ Attached =
+# Overwritten\ by\ Boot\ Delegation =  
+# but\ is\ not\ required = 
+# from = 
+# Cannot\ be\ resolved = 
+# and\ overwritten\ by\ Boot\ Delegation = 
+
+#
+# bundles.js
+# Id = 
+# Name = 
+# Status = 
+# Actions = 
+
+# Reload = 
+# Install/Update... = 
+# Refresh Packages = 
+
+# Details = 
+# Back = 
+# Hide Details = 
\ No newline at end of file
