diff --git a/webconsole-l10n/de/pom.xml b/webconsole-l10n/de/pom.xml
new file mode 100644
index 0000000..27db4fa
--- /dev/null
+++ b/webconsole-l10n/de/pom.xml
@@ -0,0 +1,105 @@
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>felix-parent</artifactId>
+        <version>2.1</version>
+        <relativePath>../pom/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>org.apache.felix.webconsole.l10n.de</artifactId>
+    <packaging>bundle</packaging>
+    <version>0.0.1-SNAPSHOT</version>
+
+    <name>Apache Felix Web Management Console - German Localization</name>
+    <description>
+        German localization of the Web Management Console. This bundle
+        attaches as a fragment to the  Web Based Management Console for
+        OSGi Frameworks. See
+        http://felix.apache.org/site/apache-felix-web-console.html for more
+        information on this bundle.
+    </description>
+    
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/felix/trunk/webconsole-l10n/de</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/trunk/webconsole-l10n/de</developerConnection>
+        <url>http://svn.apache.org/viewvc/felix/trunk/webconsole-l10n/de</url>
+    </scm>
+
+    <build>
+        <plugins>
+            <!-- translate UTF-8 encoded properties files to ISO-8859-1 -->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>native2ascii-maven-plugin</artifactId>
+                <version>1.0-beta-1</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>native2ascii</goal>
+                        </goals>
+                        <configuration>
+                            <encoding>UTF-8</encoding>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>2.3.6</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>
+                            ${project.artifactId}
+                        </Bundle-SymbolicName>
+                        <Bundle-Vendor>
+                            The Apache Software Foundation
+                        </Bundle-Vendor>
+                        <Bundle-DocURL>
+                            http://felix.apache.org/site/apache-felix-web-console.html
+                        </Bundle-DocURL>
+                        <Fragment-Host>
+                            org.apache.felix.webconsole
+                        </Fragment-Host>
+                        <_removeheaders>
+                            Embed-Dependency,Private-Package,Include-Resource
+                        </_removeheaders>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <includes>
+                        <include>src/**</include>
+                    </includes>
+                    <excludes>
+                        <exclude>src/main/appended-resources/**</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/webconsole-l10n/de/src/main/appended-resources/META-INF/DEPENDENCIES b/webconsole-l10n/de/src/main/appended-resources/META-INF/DEPENDENCIES
new file mode 100644
index 0000000..b73c783
--- /dev/null
+++ b/webconsole-l10n/de/src/main/appended-resources/META-INF/DEPENDENCIES
@@ -0,0 +1,20 @@
+I. Included Third-Party Software
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+Licensed under the Apache License 2.0.
+
+This product includes icons from the Silk Icon set
+(http://www.famfamfam.com/lab/icons/silk/)
+Copyright (c) 2006 Mark James
+Licensed under the Creative Commons Attribution 2.5 License
+
+
+II. Used Third-Party Software
+
+-
+
+III. License Summary
+
+- Apache License 2.0
+- Creative Commons Attribution 2.5 License
diff --git a/webconsole-l10n/de/src/main/appended-resources/META-INF/LICENSE b/webconsole-l10n/de/src/main/appended-resources/META-INF/LICENSE
new file mode 100644
index 0000000..22146c8
--- /dev/null
+++ b/webconsole-l10n/de/src/main/appended-resources/META-INF/LICENSE
@@ -0,0 +1,221 @@
+
+
+APACHE FELIX OSGI WEB CONSOLE GERMAN TRANSLATIONS SUBCOMPONENTS: 
+
+The Apache Felix OSGi Web Console includes a number of subcomponents with
+separate copyright notices and license terms. Your use of the source
+code for the these subcomponents is subject to the terms and
+conditions of the following licenses. 
+
+
+For the Silk Icons component:
+
+Creative Commons
+Creative Commons Legal Code
+
+Attribution 2.5
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL
+SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT
+RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS.
+CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND
+DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS
+PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR
+OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS
+LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE
+BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED
+HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+a. "Collective Work" means a work, such as a periodical issue, anthology or
+   encyclopedia, in which the Work in its entirety in unmodified form, along
+   with a number of other contributions, constituting separate and independent
+   works in themselves, are assembled into a collective whole. A work that
+   constitutes a Collective Work will not be considered a Derivative Work (as
+   defined below) for the purposes of this License.
+b. "Derivative Work" means a work based upon the Work or upon the Work and
+   other pre-existing works, such as a translation, musical arrangement,
+   dramatization, fictionalization, motion picture version, sound recording, art
+   reproduction, abridgment, condensation, or any other form in which the Work
+   may be recast, transformed, or adapted, except that a work that constitutes a
+   Collective Work will not be considered a Derivative Work for the purpose of
+   this License. For the avoidance of doubt, where the Work is a musical
+   composition or sound recording, the synchronization of the Work in
+   timed-relation with a moving image ("synching") will be considered a
+   Derivative Work for the purpose of this License.
+c. "Licensor" means the individual or entity that offers the Work under the
+   terms of this License.
+d. "Original Author" means the individual or entity who created the Work.
+e. "Work" means the copyrightable work of authorship offered under the terms
+   of this License.
+f. "You" means an individual or entity exercising rights under this License
+   who has not previously violated the terms of this License with respect to the
+   Work, or who has received express permission from the Licensor to exercise
+   rights under this License despite a previous violation.
+
+2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or
+restrict any rights arising from fair use, first sale or other limitations on
+the exclusive rights of the copyright owner under copyright law or other
+applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor
+hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the
+duration of the applicable copyright) license to exercise the rights in the Work
+as stated below:
+
+a. to reproduce the Work, to incorporate the Work into one or more Collective
+   Works, and to reproduce the Work as incorporated in the Collective Works;
+b. to create and reproduce Derivative Works;
+c. to distribute copies or phonorecords of, display publicly, perform
+   publicly, and perform publicly by means of a digital audio transmission the
+   Work including as incorporated in Collective Works;
+d. to distribute copies or phonorecords of, display publicly, perform
+   publicly, and perform publicly by means of a digital audio transmission
+   Derivative Works.
+e. For the avoidance of doubt, where the work is a musical composition:
+      i. Performance Royalties Under Blanket Licenses. Licensor waives the
+         exclusive right to collect, whether individually or via a performance
+         rights society (e.g. ASCAP, BMI, SESAC), royalties for the public
+         performance or public digital performance (e.g. webcast) of the Work.
+     ii. Mechanical Rights and Statutory Royalties. Licensor waives the
+         exclusive right to collect, whether individually or via a music rights
+         agency or designated agent (e.g. Harry Fox Agency), royalties for any
+         phonorecord You create from the Work ("cover version") and distribute,
+         subject to the compulsory license created by 17 USC Section 115 of the
+         US Copyright Act (or the equivalent in other jurisdictions).
+f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt,
+   where the Work is a sound recording, Licensor waives the exclusive right to
+   collect, whether individually or via a performance-rights society (e.g.
+   SoundExchange), royalties for the public digital performance (e.g. webcast)
+   of the Work, subject to the compulsory license created by 17 USC Section 114
+   of the US Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether now known or
+hereafter devised. The above rights include the right to make such modifications
+as are technically necessary to exercise the rights in other media and formats.
+All rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions.The license granted in Section 3 above is expressly made subject
+to and limited by the following restrictions:
+
+a. You may distribute, publicly display, publicly perform, or publicly
+   digitally perform the Work only under the terms of this License, and You must
+   include a copy of, or the Uniform Resource Identifier for, this License with
+   every copy or phonorecord of the Work You distribute, publicly display,
+   publicly perform, or publicly digitally perform. You may not offer or impose
+   any terms on the Work that alter or restrict the terms of this License or the
+   recipients' exercise of the rights granted hereunder. You may not sublicense
+   the Work. You must keep intact all notices that refer to this License and to
+   the disclaimer of warranties. You may not distribute, publicly display,
+   publicly perform, or publicly digitally perform the Work with any
+   technological measures that control access or use of the Work in a manner
+   inconsistent with the terms of this License Agreement. The above applies to
+   the Work as incorporated in a Collective Work, but this does not require the
+   Collective Work apart from the Work itself to be made subject to the terms of
+   this License. If You create a Collective Work, upon notice from any Licensor
+   You must, to the extent practicable, remove from the Collective Work any
+   credit as required by clause 4(b), as requested. If You create a Derivative
+   Work, upon notice from any Licensor You must, to the extent practicable,
+   remove from the Derivative Work any credit as required by clause 4(b), as
+   requested.
+b. If you distribute, publicly display, publicly perform, or publicly
+   digitally perform the Work or any Derivative Works or Collective Works, You
+   must keep intact all copyright notices for the Work and provide, reasonable
+   to the medium or means You are utilizing: (i) the name of the Original Author
+   (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author
+   and/or Licensor designate another party or parties (e.g. a sponsor institute,
+   publishing entity, journal) for attribution in Licensor's copyright notice,
+   terms of service or by other reasonable means, the name of such party or
+   parties; the title of the Work if supplied; to the extent reasonably
+   practicable, the Uniform Resource Identifier, if any, that Licensor specifies
+   to be associated with the Work, unless such URI does not refer to the
+   copyright notice or licensing information for the Work; and in the case of a
+   Derivative Work, a credit identifying the use of the Work in the Derivative
+   Work (e.g., "French translation of the Work by Original Author," or
+   "Screenplay based on original Work by Original Author"). Such credit may be
+   implemented in any reasonable manner; provided, however, that in the case of
+   a Derivative Work or Collective Work, at a minimum such credit will appear
+   where any other comparable authorship credit appears and in a manner at least
+   as prominent as such other comparable authorship credit.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
+THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING
+THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT
+LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR
+PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY,
+OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME
+JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH
+EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN
+NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
+INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS
+LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+a. This License and the rights granted hereunder will terminate automatically
+   upon any breach by You of the terms of this License. Individuals or entities
+   who have received Derivative Works or Collective Works from You under this
+   License, however, will not have their licenses terminated provided such
+   individuals or entities remain in full compliance with those licenses.
+   Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+b. Subject to the above terms and conditions, the license granted here is
+   perpetual (for the duration of the applicable copyright in the Work).
+   Notwithstanding the above, Licensor reserves the right to release the Work
+   under different license terms or to stop distributing the Work at any time;
+   provided, however that any such election will not serve to withdraw this
+   License (or any other license that has been, or is required to be, granted
+   under the terms of this License), and this License will continue in full
+   force and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+a. Each time You distribute or publicly digitally perform the Work or a
+   Collective Work, the Licensor offers to the recipient a license to the Work
+   on the same terms and conditions as the license granted to You under this
+   License.
+b. Each time You distribute or publicly digitally perform a Derivative Work,
+   Licensor offers to the recipient a license to the original Work on the same
+   terms and conditions as the license granted to You under this License.
+c. If any provision of this License is invalid or unenforceable under
+   applicable law, it shall not affect the validity or enforceability of the
+   remainder of the terms of this License, and without further action by the
+   parties to this agreement, such provision shall be reformed to the minimum
+   extent necessary to make such provision valid and enforceable.
+d. No term or provision of this License shall be deemed waived and no breach
+   consented to unless such waiver or consent shall be in writing and signed by
+   the party to be charged with such waiver or consent.
+e. This License constitutes the entire agreement between the parties with
+   respect to the Work licensed here. There are no understandings, agreements or
+   representations with respect to the Work not specified here. Licensor shall
+   not be bound by any additional provisions that may appear in any
+   communication from You. This License may not be modified without the mutual
+   written agreement of the Licensor and You.
+
+Creative Commons is not a party to this License, and makes no warranty
+whatsoever in connection with the Work. Creative Commons will not be liable to
+You or any party on any legal theory for any damages whatsoever, including
+without limitation any general, special, incidental or consequential damages
+arising in connection to this license. Notwithstanding the foregoing two (2)
+sentences, if Creative Commons has expressly identified itself as the Licensor
+hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is
+licensed under the CCPL, neither party will use the trademark "Creative Commons"
+or any related trademark or logo of Creative Commons without the prior written
+consent of Creative Commons. Any permitted use will be in compliance with
+Creative Commons' then-current trademark usage guidelines, as may be published
+on its website or otherwise made available upon request from time to time.
+
+Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/webconsole-l10n/de/src/main/appended-resources/META-INF/NOTICE b/webconsole-l10n/de/src/main/appended-resources/META-INF/NOTICE
new file mode 100644
index 0000000..65c6af4
--- /dev/null
+++ b/webconsole-l10n/de/src/main/appended-resources/META-INF/NOTICE
@@ -0,0 +1,4 @@
+This product includes icons from the Silk Icon set
+(http://www.famfamfam.com/lab/icons/silk/)
+Copyright (c) 2006 Mark James
+Licensed under the Creative Commons Attribution 2.5 License
diff --git a/webconsole-l10n/de/src/main/resources/OSGI-INF/l10n/bundle_de.properties b/webconsole-l10n/de/src/main/resources/OSGI-INF/l10n/bundle_de.properties
new file mode 100644
index 0000000..a3e84cc
--- /dev/null
+++ b/webconsole-l10n/de/src/main/resources/OSGI-INF/l10n/bundle_de.properties
@@ -0,0 +1,256 @@
+#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
+#
+# Translations requiring non-ISO-8859-1 encoding are placed in the
+# src/main/native2ascii/OSGI-INF/l10n folder and are converted using said
+# plugin while building the bundle
+#
+
+# Common UI
+reload=Aktualisieren
+change=Wechseln
+abort=Abbrechen
+back=Zurück
+id=Id
+type=Typ
+type_s=Typ(en)
+bundle=Bundle
+version=Version
+help=Hilfe
+start=Starten
+stop=Stoppen
+save=Speichern
+reset=Zurücksetzen
+delete=Löschen
+refresh=Aktualisieren
+
+# VMStat plugin
+vmstat.pluginTitle=System Information
+vmstat.stopped=Framework ist gestoppt.
+vmstat.restarting=Framework wurde neu gestartet. Bitte warten ...
+vmstat.reloading.in=Starte neu in 
+vmstat.running=System ist aktiv!
+vmstat.sl.title=Start Level Information:
+vmstat.sl.system=System Start Level
+vmstat.sl.bundle=Default Bundle Start Level
+vmstat.info.title=Server Information:
+vmstat.lastStarted=Letzter Start
+vmstat.upTime=Betriebszeit
+vmstat.upTime.format.days=Tage
+vmstat.framework=Framework
+vmstat.shutdown.in=Stoppe in 
+vmstat.java.title=Java Information:
+vmstat.java.runtime=Java Runtime
+vmstat.java.jvm=Java Virtual Machine
+vmstat.processors=Anzahl Prozessoren
+vmstat.mem.total=Total Hauptspeicher
+vmstat.mem.used=Benutzter Hauptspeicher
+vmstat.mem.free=Freier Hauptspeicher
+vmstat.gc.title=Garbage Collection
+vmstat.gc.button=Starte
+
+# Services plugin
+services.pluginTitle=Dienste
+services.details.hide=Verstecke Details
+services.details.tip=Details
+services.statusline=Dienst Information: total {0} Dienst(e).
+services.caption=Dienste
+services.usingBundles=Nutzende Bundles
+
+# Log plugin
+logs.pluginTitle=Log Service
+log.status.ok=Log Service ist aktiv.
+log.status.missing=Log Service ist nicht installiert/aktiv.
+log.severity.label=Minimaler Level:
+log.received=Empfangen
+log.level=Level
+log.message=Meldung
+log.service=Dienst
+log.exception=Exception
+log.level.error=Fehler
+log.level.warn=Warnungen
+log.level.info=Informationen
+log.level.debug=Debug
+log.traces=Exception Details:
+log.traces.full=Kompletter Trace
+log.traces.min=Nur Beschreibung 
+
+# Bundles plugin
+bundles.pluginTitle=Bundles
+bundles.statline=Bundle information: {0} Bundles total, {1} aktive Bundles, {2} aktive Fragmente, {3} aufgelöste Bundles, {4} installierte Bundles.
+bundles.install_or_update=Installieren oder Aktualisieren
+bundles.install_update=Installieren/Aktualisieren...
+bundles.refreshPkg=Packages aktualisieren
+bundles.name=Name
+bundles.name.symb=Symbolischer Name
+bundles.category=Kategorie
+bundles.status=Status
+bundles.actions=Aktionen
+# bundle details
+bundles.location=Bundle Location
+bundles.lastMod=Letzte Bundle Status Änderung
+bundles.doc=Bundle Dokumentation
+bundles.vendor=Vendor
+bundles.copyright=Copyright
+bundles.description=Beschreibung
+bundles.startlevel=Start Level
+bundles.classpath=Bundle Classpath
+bundles.pkg.exported=Exportierte Packages
+bundles.pkg.imported=Importierte Packages
+bundles.pkg.importingBundles=Importierende Bundles
+bundles.manifest.headers=Manifest Headers
+bundles.hosts=Host Bundles
+bundles.framents=Gebundene Fragmente
+# actions
+bundles.update=Aktualisieren
+bundles.uninstall=Deinstallieren
+bundles.refreshImports=Package Imports aktualisieren
+# upload form
+bundles.upload.caption=Bundles hochladen / installieren
+bundles.upload.start=Start Bundle
+bundles.upload.level=Start Level
+# filter
+bundles.filter.apply=Filter anwenden
+bundles.filter.clear=Filter löschen
+bundles.filter.help=Ein String oder regulärer Ausdruck, der mit den folgenden Feldern verglichen wird: Bundle Id, Name, symbolischer Name oder Version. Wenn "Filter All" verwendet wird, muss der Wert ein gültier LDAP String sein.
+bundles.filter.ldap=Filter auf Header anwenden
+bundles.filter.ldap.tip=Wenn angeklickt wird ein Vergleich gegen *alle* Bundle Manifest Header durchgeführt. Der Ausdruck muss ein gültiger OSGi Filter sein.
+# states
+bundles.state.1=Deinstalliert
+bundles.state.2=Installiert
+bundles.state.4=Aufgelöst
+bundles.state.8=Am Starten
+bundles.state.16=Am Stoppen
+bundles.state.32=Aktiv
+bundles.state.unknown=Unbekannter Status: {0}
+bundles.state.fragment=Fragment
+# action error
+bundles.error.title=Ein Fehler ist aufgetreten während der Ausführung der Bundle Operation!
+
+
+# Configuration plugin
+configMgr.pluginTitle=Konfiguration
+config.status.ok=Configuration Admin Dienst ist aktiv.
+config.status.missing=Configuration Admin Dienst ist nicht installiert/aktiv.
+config.properties=Eigenschaften
+config.properties.enter=Bitte Name-Wert Paare als Konfiguration eingeben
+config.info.title=Konfigurations Eigenschaften
+config.info.pid=Identität (PID)
+config.info.fpid=Factory Identität (Factory PID)
+config.info.binding=Gebundenes Bundle
+config.info.unbound=Ungebundene oder neue Konfiguration 
+config.unbind.btn=Lösen
+config.unbind.tip=Konfiguration vom Bundle lösen
+config.del.ask=Sind Sie sicher, dass Sie diese Konfiguration löschen wollen ?
+config.del.config=Konfiguration: 
+config.del.bundle=Bundle: 
+config.unbind.ask=Sind Sie sicher, dass Sie diese Konfiguration vom Bundle lösen wollen ?
+config.factories.title=Factory Konfigurationen
+config.configurations.title=Konfigurationen
+config.create.tip=Erstelle eine neue Factory Konfiguration
+config.edit.tip=Konfiguration bearbeiten
+config.title.actions=Aktionen
+config.title.bundle=Bundle
+config.title.name=Name
+
+# License plugin
+licenses.pluginTitle=Lizenzen
+license.status.ok=Die folgenden Bundles enthalten Lizenz Informationen.
+license.status.none=Keine Bundles mit Lizenz Informationen installiert
+license.resources=Bundle Resourcen: 
+license.resources.embedded=Eingebettet {0}: 
+
+# Configuration Status plugin
+configStatus.pluginTitle=Configuration Status
+configStatus.wait=Bitte warten...
+configStatus.wait.msg=Laden...
+
+# 404 plugin not found
+404=\
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="refresh" content="3;URL={0}" />\
+<title>404 Öffnen der Seite fehlgeschlagen</title>\
+</head><body>\
+<p>Die angeforderte Seite wurde nicht gefunden. Wenn Sie sich nicht innerhalb von 3 Sekunden an die Web-Konsole weitergeleitet werden, klicken Sie bitte <a href="{0}">hier</a></p>\
+</body></html>
+
+# localized configuration meta-data
+metadata.name=Apache Felix OSGi Management Console
+metadata.description=Konfiguration der Apache Felix OSGi Management Console.
+
+metadata.manager.root.name=Root URI
+metadata.manager.root.description=Pfad zur OSGi Management Console.
+
+metadata.http.service.filter.name=Http Service Selector
+metadata.http.service.filter.description=\
+ Der Http Service Selector is ein OSGi Filter um den Http Service auszuwälhen\
+ bei dem die Web Console registriert wird. Der angegebene Wert (falls nicht\
+ leer) wird mit dem interface Term kombiniert um den effetiven Filter\
+ in der Art (&(objectClass=org.osgi.service.http.HttpService)(selector)) zu\
+ erhalten. Bitte weder führende noch abschliessende Klammer eingeben. Beispiel:\
+ Um an den Http Service mit der service ID 15 anzubinden, is "service.id=15"\
+ (ohne Anführungsstriche) einzugeben. Standardmässig (wenn diese Property nicht\
+ gesetzt ist oder einen leeren Wert hat) registriert sich die Web Console mit\
+ irgendeinem Http Service, der verfügbar ist.
+
+metadata.default.render.name=Standard Seite
+metadata.default.render.description=Name der Standard Site wenn die OSGi \
+ Management Console aufgerufen wird.
+
+metadata.realm.name=Realm
+metadata.realm.description=Name einer HTTP Basic Authentication Realm.
+
+metadata.username.name=Benutzer Name
+metadata.username.description=The name des Benutzers, dem Zugriff auf die \
+ OSGi Management Console gewährt wird. Wenn diese Property leer ist oder nicht \
+ gesetzt, ist die Authentisierung deaktiviert. Diese Property wird nicht \
+ verwendet falls ein WebConsoleSecurityProvider service für die Authentisierung \
+ verwendet wird.
+
+metadata.password.name=Password
+metadata.password.description=Das Password für den Zugriff des angegebenen \
+ Benutzers auf die OSGi Management Console. Diese Property wird nicht \
+ verwendet falls ein WebConsoleSecurityProvider service für die Authentisierung \
+ verwendet wird.
+
+metadata.category.name=Standard Kategorie
+metadata.category.description=Die Standard Kategorie (Menu) for plugins, \
+ die nicht mit der felix.webconsole.category service property registriert \
+ sind oder die AbstractWebConsole.getCategory() Methode überschreiben. Der \
+ Standardwert ist "Main".
+
+metadata.plugins.name=Plugins
+metadata.plugins.description=Aktive Plugins auswählen
+
+metadata.loglevel.name=Log Level
+metadata.loglevel.description=Logging Level
+
+metadata.locale.name=Locale
+metadata.locale.description=Feste Einstellung der Lokalisierung der OSGi \
+ Management console. Falls diese Property nicht gesetzt ist, wird die \
+ Lokalisierung anhand des Requests eingestellt.
+ 
+# https://issues.apache.org/jira/browse/FELIX-3491
+bundles.success.title=Erfolg
+bundles.success.text=Der Vorgang wurde erfolgreich.
diff --git a/webconsole-l10n/de/src/main/resources/res/flags/de.gif b/webconsole-l10n/de/src/main/resources/res/flags/de.gif
new file mode 100644
index 0000000..75728dd
--- /dev/null
+++ b/webconsole-l10n/de/src/main/resources/res/flags/de.gif
Binary files differ
