diff --git a/webconsole-l10n/bg/pom.xml b/webconsole-l10n/bg/pom.xml
new file mode 100644
index 0000000..bfebde4
--- /dev/null
+++ b/webconsole-l10n/bg/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.bg</artifactId>
+    <packaging>bundle</packaging>
+    <version>0.0.1-SNAPSHOT</version>
+
+    <name>Apache Felix Web Management Console - Bulgarian Localization</name>
+    <description>
+        Bulgarian 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/bg</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/trunk/webconsole-l10n/bg</developerConnection>
+        <url>http://svn.apache.org/viewvc/felix/trunk/webconsole-l10n/bg</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/bg/src/main/appended-resources/META-INF/DEPENDENCIES b/webconsole-l10n/bg/src/main/appended-resources/META-INF/DEPENDENCIES
new file mode 100644
index 0000000..b73c783
--- /dev/null
+++ b/webconsole-l10n/bg/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/bg/src/main/appended-resources/META-INF/LICENSE b/webconsole-l10n/bg/src/main/appended-resources/META-INF/LICENSE
new file mode 100644
index 0000000..b3d162d
--- /dev/null
+++ b/webconsole-l10n/bg/src/main/appended-resources/META-INF/LICENSE
@@ -0,0 +1,221 @@
+
+
+APACHE FELIX OSGI WEB CONSOLE BULGARIAN 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/bg/src/main/appended-resources/META-INF/NOTICE b/webconsole-l10n/bg/src/main/appended-resources/META-INF/NOTICE
new file mode 100644
index 0000000..65c6af4
--- /dev/null
+++ b/webconsole-l10n/bg/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/bg/src/main/resources/OSGI-INF/l10n/bundle_bg.properties b/webconsole-l10n/bg/src/main/resources/OSGI-INF/l10n/bundle_bg.properties
new file mode 100644
index 0000000..fbf4136
--- /dev/null
+++ b/webconsole-l10n/bg/src/main/resources/OSGI-INF/l10n/bundle_bg.properties
@@ -0,0 +1,250 @@
+﻿#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
+# native2ascii -encoding utf-8 bundle_bg.raw_properties bundle_bg.properties
+
+
+# Common UI
+reload=Презареждане
+change=Промяна
+abort=Отказ
+back=Назад
+id=Id
+type=Тип
+type_s=Тип(ове)
+bundle=Бъндъл
+version=Версия
+help=Помощ
+start=Стартиране
+stop=Спиране
+save=Запазване
+reset=Ресетване
+delete=Изтриване
+refresh=Обновяване
+
+# VMStat plugin
+vmstat.pluginTitle=Системна информация
+vmstat.stopped=Системата е спряна
+vmstat.restarting=Системата се рестартир. Моля изчакайте...
+vmstat.reloading.in=Презареждане след ...
+vmstat.running=Системата е в готовност
+vmstat.sl.title=Информация за стартово ниво
+vmstat.sl.system=Системно стартово ниво
+vmstat.sl.bundle=Подразбиращо се стартово ниво за бъндъли
+vmstat.info.title=Информация за системата:
+vmstat.lastStarted=Последно стартиране
+vmstat.upTime=Активно от
+vmstat.upTime.format.days=дни
+vmstat.framework=Framework
+vmstat.shutdown.in=Изключване след
+vmstat.java.title=Java информация:
+vmstat.java.runtime=Java Runtime
+vmstat.java.jvm=Java Virtual Machine
+vmstat.processors=Брой процесори
+vmstat.mem.total=Общо памет
+vmstat.mem.used=Използвана памет
+vmstat.mem.free=Свободна памет
+vmstat.gc.title=Изчистване на паметта
+vmstat.gc.button=Изчистване
+
+# Services plugin
+services.pluginTitle=Услуги
+services.details.hide=Скриване на детайлите
+services.details.tip=Детайли
+services.statusline=Информация за услугите: {0} услуги.
+services.caption=Услуги
+services.usingBundles=Използващи бъндъли
+services.info.name=Използвани услуги
+services.info.descr=Тази услуга се използва от избраният бъндъл. Кликнете за да видите повече детайли в плъгин "Услуги"
+services.info.key=Услуга #{0} от тип(ове) {1}
+
+
+# Log plugin
+logs.pluginTitle=Журнал
+log.status.ok=Log Service е активен.
+log.status.missing=Няма активен Log Service.
+log.severity.label=Макс. ниво:
+log.received=Получен
+log.level=Ниво
+log.message=Съобщение
+log.service=Service
+log.exception=Изключение
+log.level.error=ГРЕШКА
+log.level.warn=ПРЕДУПР
+log.level.info=ИНФО
+log.level.debug=ДЕТАЙЛИ
+log.traces=Изглед изключения:
+log.traces.full=Пълен
+log.traces.min=Само съобщение
+
+# Bundles plugin
+bundles.pluginTitle=Бъндъли
+bundles.statline=Информация за бъндълите: {0} бъндъли общо, {1} активни, {2} активни фрагменти, {3} resolved, {4} инсталирани.
+bundles.install_or_update=Инсталиране/обновяване
+bundles.install_update=Инсталиране/обновяване...
+bundles.refreshPkg=Обновяване пакети
+bundles.name=Име
+bundles.name.symb=Символно име
+bundles.category=Категория
+bundles.status=Статус
+bundles.actions=Действия
+# bundle details
+bundles.location=Bundle Location
+bundles.lastMod=Последна промяна
+bundles.doc=Документация
+bundles.vendor=Производител
+bundles.copyright=Copyright
+bundles.description=Описание
+bundles.startlevel=Стартово ниво
+bundles.classpath=Bundle Classpath
+bundles.pkg.exported=Предотставяни пакети
+bundles.pkg.imported=Използвани пакети
+bundles.pkg.importingBundles=Използващи бъндъли
+bundles.manifest.headers=Manifest Headers
+bundles.hosts=Host Bundles
+bundles.framents=Закачени фрагменти
+# actions
+bundles.update=Обновяване
+bundles.uninstall=Премахване
+bundles.refreshImports=Обновяване на използваните пакети
+# upload form
+bundles.upload.caption=Качване/инсталиране на бъндъли
+bundles.upload.start=Стартиране
+bundles.upload.level=Стартиращо ниво
+# filter
+bundles.filter.apply=Прилагане филтър
+bundles.filter.clear=Изчистване филтър
+bundles.filter.help=Низ или регулярен израз, който се съдържа в ID-то, името, символното име или версията на бъндъла.
+bundles.filter.ldap=Филтриране всичко
+bundles.filter.ldap.tip=Когато натиснете този бутон се прилага допълнително филтриране, спрямо *всички* хедъри на бундълите. Очаква се изразът в полето да бъде валиден OSGi LDAP филтър.
+# states
+bundles.state.1=Деинсталиран
+bundles.state.2=Инсталиран
+bundles.state.4=Ресолвнат
+bundles.state.8=Стартиран
+bundles.state.16=Спрян
+bundles.state.32=Активен
+bundles.state.unknown=Непознат статус: {0}
+bundles.state.fragment=Фрагмент
+# action error
+bundles.error.title=Грешка при изпълнение на операцията!
+
+
+# Configuration plugin
+configMgr.pluginTitle=Конфигурации
+config.status.ok=Configuration Admin Service е достъпен.
+config.status.missing=Няма Configuration Admin Service
+config.properties=Настройки
+config.properties.enter=Въведете двойка ключ-стойност от конфигурационните настройки
+config.info.title=Конфигурационна информация
+config.info.pid=Persistent Identity (PID)
+config.info.fpid=Factory Persistent Identifier (Factory PID)
+config.info.binding=Configuration Binding
+config.info.unbound=Unbound or new configuration 
+config.unbind.btn=Unbind
+config.unbind.tip=Unbind Configuration from Bundle
+config.del.ask=Сигурни ли сте, че изката да изтриете тази конфигурация ?
+config.del.config=Конфигурация: 
+config.del.bundle=Бъндъл: 
+config.unbind.ask=Are you sure to unbind this configuration ?
+config.factories.title=Factory Конфигурации
+config.configurations.title=Конфигурации
+config.create.tip=Създаване на нова factory конфигурация
+config.edit.tip=Редактиране на стойностите на конфигурацията
+config.title.actions=Действия
+config.title.bundle=Бъндъл
+config.title.name=Име
+config.bind.error=Грешка: PID "{0}" е асоцииран с "{1}" но улугата е регистриране от бъндъл "{2}"
+
+# License plugin
+licenses.pluginTitle=Лицензи
+license.status.ok=Следните бъндъли съдържат лицензионна информация.
+license.status.none=Няма бъндъли съдържащо лицензионна информация
+license.resources=Ресурси на бъндъла: 
+license.resources.embedded=Вградени ресурси от {0}: 
+
+# Configuration Status plugin
+configStatus.pluginTitle=Конфиг. статус
+configStatus.wait=Моля изчакайте...
+configStatus.wait.msg=Зареждане...
+
+# 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 Not Found</title>\
+</head><body>\
+<p>Страницата, която търсите (вече) липсва. След 3 секунди ще бъдете препратени автоматично към Уеб конзолата. Ако това не се случи, моля кликнете <a href="{0}">тук</a></p>\
+</body></html>
+
+
+# localized configuration meta-data
+metadata.name=Apache Felix OSGi Административна конзола
+metadata.description=Конфигурация на административната конзола
+
+metadata.manager.root.name=Начало
+metadata.manager.root.description=Адрес на сървъра, през който става достъпна административаната конзола
+
+metadata.http.service.filter.name=Избор на Http
+metadata.http.service.filter.description=\
+ Този атрибут е OSGi филтер, който се използва за избор на HTTP сървър, който административната\
+ конзола използва. Стойността на атрибута, ако е зададен се комбинира със стандартният филтър\
+ за идентификация на услугата: (&(objectClass=org.osgi.service.http.HttpService)(selector))\
+ Този атрибут не трабва да има скоби, нито в края, нито в началото, например за да избере\
+ услуга с ID 15, тогава селекторът е 'service.id=15' (без кавичките). По подразбиране\
+ стойността на този атрибут е празна, което означава че административната конзола ще използа\
+ всеки HTTP сървър.
+
+metadata.default.render.name=Главна добавка
+metadata.default.render.description=Името на страницата, която се показва по подразбиране при отваряне на административната конзола.
+
+metadata.realm.name=Realm
+metadata.realm.description=Името на  HTTP Authentication Realm.
+
+metadata.username.name=Потребител
+metadata.username.description=Името на потребителя, който се използва за вход.\
+ За да забраните логването задайте празна стойност на това поле.\
+ Този атрибут се игнорира ако се използва външен WebConsoleSecurityProvider за авторизация.
+
+metadata.password.name=Парола
+metadata.password.description=Паролата която се изисква от потребителя, за да се позволи той да използва административната конзола.\
+ Този атрибут се игнорира ако се използва външен WebConsoleSecurityProvider за авторизация.
+
+metadata.plugins.name=Добавки
+metadata.plugins.description=Изберете активните добавки
+
+metadata.loglevel.name=Ниво на логване
+metadata.loglevel.description=Ниво на логване
+
+metadata.locale.name=Език
+metadata.locale.description=Ако е зададен, този атрибут указва езика използван от административната конзола.\
+ В противен случай той се избира автоматично в зависимост от настройките на Web Browser-a.
+
+
+# https://issues.apache.org/jira/browse/FELIX-3491
+bundles.success.title=Успех
+bundles.success.text=Операцията е изпълнена успешно
diff --git a/webconsole-l10n/bg/src/main/resources/res/flags/bg.gif b/webconsole-l10n/bg/src/main/resources/res/flags/bg.gif
new file mode 100644
index 0000000..11cf8ff
--- /dev/null
+++ b/webconsole-l10n/bg/src/main/resources/res/flags/bg.gif
Binary files differ
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
diff --git a/webconsole-l10n/ru/pom.xml b/webconsole-l10n/ru/pom.xml
new file mode 100644
index 0000000..d59d7cd
--- /dev/null
+++ b/webconsole-l10n/ru/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.ru</artifactId>
+    <packaging>bundle</packaging>
+    <version>0.0.1-SNAPSHOT</version>
+
+    <name>Apache Felix Web Management Console - Russian Localization</name>
+    <description>
+        Russian 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/ru</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/trunk/webconsole-l10n/ru</developerConnection>
+        <url>http://svn.apache.org/viewvc/felix/trunk/webconsole-l10n/ru</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/ru/src/main/appended-resources/META-INF/DEPENDENCIES b/webconsole-l10n/ru/src/main/appended-resources/META-INF/DEPENDENCIES
new file mode 100644
index 0000000..b73c783
--- /dev/null
+++ b/webconsole-l10n/ru/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/ru/src/main/appended-resources/META-INF/LICENSE b/webconsole-l10n/ru/src/main/appended-resources/META-INF/LICENSE
new file mode 100644
index 0000000..6555e6d
--- /dev/null
+++ b/webconsole-l10n/ru/src/main/appended-resources/META-INF/LICENSE
@@ -0,0 +1,221 @@
+
+
+APACHE FELIX OSGI WEB CONSOLE RUSSIAN 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/ru/src/main/appended-resources/META-INF/NOTICE b/webconsole-l10n/ru/src/main/appended-resources/META-INF/NOTICE
new file mode 100644
index 0000000..65c6af4
--- /dev/null
+++ b/webconsole-l10n/ru/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/ru/src/main/resources/OSGI-INF/l10n/bundle_ru.properties b/webconsole-l10n/ru/src/main/resources/OSGI-INF/l10n/bundle_ru.properties
new file mode 100644
index 0000000..dfdcafa
--- /dev/null
+++ b/webconsole-l10n/ru/src/main/resources/OSGI-INF/l10n/bundle_ru.properties
@@ -0,0 +1,213 @@
+﻿# Common UI
+reload=Перезагрузить
+change=Изменить
+abort=Отменить
+back=Назад
+id=Id
+type=Тип
+type_s=Тип(ы)
+bundle=Модуль
+version=Версия
+help=Справка
+start=Запустить
+stop=Остановить
+save=Сохранить
+reset=Сбросить
+delete=Удалить
+refresh=Обновить
+
+# VMStat plugin
+vmstat.pluginTitle=Системная информация
+vmstat.stopped=Система остановлена
+vmstat.restarting=Система перезапускается. Пожалуйста, подождите...
+vmstat.reloading.in=Перезагрузка через
+vmstat.running=Система запущена  и работает!
+vmstat.sl.title=Информация об уровнях запуска:
+vmstat.sl.system=Уровень запуска системы
+vmstat.sl.bundle=Уровень запуска модулей по умолчанию
+vmstat.info.title=Информация о сервере:
+vmstat.lastStarted=Последний запуск
+vmstat.framework=Система
+vmstat.shutdown.in=Останов через
+vmstat.java.title=Информация о Java:
+vmstat.java.runtime=Среда исполнения Java
+vmstat.java.jvm=Виртуальная машина Java
+vmstat.processors=Число процессоров
+vmstat.mem.total=Всего памяти
+vmstat.mem.used=Использовано памяти
+vmstat.mem.free=Свободно памяти
+vmstat.gc.title=Сборка мусора
+vmstat.gc.button=Собрать
+
+# Services plugin
+services.pluginTitle=Сервисы
+services.details.hide=Скрыть подробности
+services.details.tip=Подробности
+services.statusline=Информация о сервисах : всего {0} сервис(ов).
+services.caption=Сервисы
+services.usingBundles=Используется модулями
+
+# Log plugin
+logs.pluginTitle=Журнал
+log.status.ok=Log Service работает.
+log.status.missing=Log Service не установлен или не запущен.
+log.severity.label=Важность:
+log.received=Получено
+log.level=Уровень
+log.message=Сообщение
+log.service=Сервис
+log.exception=Исключение
+log.level.error=ОШИБКА
+log.level.warn=ПРЕДУПР
+log.level.info=ИНФО
+log.level.debug=ОТЛАДКА
+
+# Bundles plugin
+bundles.pluginTitle=Модули
+bundles.statline=Информация о модулях: модулей всего {0}, активных {1}, активных фрагментов {2}, разрешенных {3}, установленных {4}.
+bundles.install_or_update=Установить/обновить
+bundles.install_update=Установить/обновить...
+bundles.refreshPkg=Освежить пакеты
+bundles.name=Имя
+bundles.name.symb=Символическое имя
+bundles.category=Категория
+bundles.status=Статус
+bundles.actions=Действия
+# bundle details
+bundles.location=Местонахождение модуля
+bundles.lastMod=Последняя модификация
+bundles.doc=Документация
+bundles.vendor=Производитель
+bundles.copyright=Авторское право
+bundles.description=Описание
+bundles.startlevel=Уровень запуска
+bundles.classpath=Пути к классам модуля
+bundles.pkg.exported=Экспортируемые пакеты
+bundles.pkg.imported=Импортируемые пакеты
+bundles.pkg.importingBundles=Импортируется модулями
+bundles.manifest.headers=Заголовки манифеста
+bundles.hosts=Головные модули
+bundles.framents=Присоединенные фрагменты
+# actions
+bundles.update=Обновить
+bundles.uninstall=Удалить
+bundles.refreshImports=Освежить предоставляемые пакеты
+# upload form
+bundles.upload.caption=Загрузить/Установить модули
+bundles.upload.start=Запустить
+bundles.upload.level=Уровень запуска
+# filter
+bundles.filter.apply=Применить фильтр
+bundles.filter.clear=Очистить фильтр
+bundles.filter.help=Строка или регулярное выражение для поиска по ID модуля, его имени, символическому имени или версии. Если используется 'Отфильтровать все', значение должно быть правильным поисковым выражением LDAP.
+bundles.filter.ldap=Отфильтровать все
+bundles.filter.ldap.tip=После нажатия будет осуществлен поиск по *всем* заголовкам манифестов модулей. Выражение должно быть правильным фильтром OSGi LDAP.
+# states
+bundles.state.1=Удален
+bundles.state.2=Установлен
+bundles.state.4=Разрешен
+bundles.state.8=Запущен
+bundles.state.16=Останавливается
+bundles.state.32=Активен
+bundles.state.unknown=Неизвестное состояние: {0}
+bundles.state.fragment=Фрагмент
+# action error
+bundles.error.title=Ошибка при выполнении действия над модулем!
+
+
+# Configuration plugin
+configMgr.pluginTitle=Конфигурирование
+config.status.ok=Сервис Configuration Admin запущен.
+config.status.missing=Сервис Configuration Admin не найден!
+config.properties=Настройки
+config.properties.enter=Введите пару ключ-значение изменяемой настройки
+config.info.title=Конфигурационная информация
+config.info.pid=Постоянный идентификатор (PID)
+config.info.fpid=Фабричный постоянный идентификатор (Factory PID)
+config.info.binding=Привязка конфигурации
+config.info.unbound=Непривязанная или новая конфигурация
+config.unbind.btn=Удалить привязку
+config.unbind.tip=Удалить привязку конфигурации к модулю
+config.del.ask=Вы уверены, что хотите удалить данную конфигурацию?
+config.del.config=Конфигурация:
+config.del.bundle=Модуль:
+config.unbind.ask=Вы уверены, что хотите удалить привязку данной конфигурации?
+config.factories.title=Фабричные конфигурации
+config.configurations.title=Конфигурации
+config.create.tip=Создать новую фабричную конфигурацию
+config.edit.tip=Редактировать конфигурацию
+config.title.actions=Действия
+config.title.bundle=Модуль
+config.title.name=Имя
+config.bind.error=Ошибка: PID "{0}" привязан к "{1}", но сервис конфигурирования зарегистрирован модулем "{2}"
+
+# License plugin
+licenses.pluginTitle=Лицензии
+license.status.ok=Модули, содержащие файлы лицензий.
+license.status.none=Нет модулей с информацией о лицензиях
+license.resources=Ресурсы модуля:
+license.resources.embedded=Встроенные лицензии {0}:
+
+# Configuration Status plugin
+configStatus.pluginTitle=Сводная информация
+configStatus.wait=Пожалуйста, подождите...
+configStatus.wait.msg=Загружается...
+
+# 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 Not Found</title>\
+</head><body>\
+<p>Страница, которую вы запросили, не найдена. В течение 3 секунд вы будете перенаправлены на Web-консоль. Если этого не произошло, нажмите <a href="{0}">сюда</a></p>\
+</body></html>
+
+
+# localized configuration meta-data
+metadata.name=Панель управления Apache Felix
+metadata.description=Конфигурация Панели управления Apache Felix.
+
+metadata.manager.root.name=Базовый путь
+metadata.manager.root.description=Путь к Панели управления Apache Felix.
+
+metadata.http.service.filter.name=Селектор сервиса HTTP
+metadata.http.service.filter.description=\
+ Селектор сервиса HTTP представляет собой OSGi-фильтр, используемый Панелью \
+ управления для выбора сервиса HTTP. Значение этого свойства (если задано) \
+ комбинируется с выражением для выбора класса, в результате чего получается \
+ фильтр вида (&(objectClass=org.osgi.service.http.HttpService)(селектор)). \
+ Тело селектора не должно иметь ведущих или замыкающих скобок. Например, \
+ для выбора сервиса с идентификатором 15 установите значение селектора в \
+ 'service.id=15' (без кавычек). По умолчанию, если данное свойство не \
+ установлено или равно пустой строке, Панель управления будет использовать \
+ любой доступный сервис HTTP.
+
+metadata.default.render.name=Страница по умолчанию
+metadata.default.render.description=Имя страницы по умолчанию, выводимой при обращении к Панели управления.
+
+metadata.realm.name=Realm
+metadata.realm.description=Название HTTP Authentication Realm.
+
+metadata.username.name=Имя пользователя
+metadata.username.description=Имя пользователя, которому разрешен доступ к \
+ Панели управления. Для отключения аутентификации задайте пустое значение имени. \
+ Данное свойство игнорируется при использовании для аутентификации механизма \
+ WebConsoleSecurityProvider.
+
+metadata.password.name=Пароль
+metadata.password.description=Пароль пользователя, которому разрешен доступ к \
+ Панели управления. Данное свойство игнорируется при использовании для \
+ аутентификации механизма WebConsoleSecurityProvider.
+
+metadata.plugins.name=Дополнения
+metadata.plugins.description=Выберите активные дополнения
+
+metadata.loglevel.name=Журнал
+metadata.loglevel.description=Уровень журналирования
+
+metadata.locale.name=Локаль
+metadata.locale.description=Идентификатор локали, используемой Панелью управления вместо запрашиваемой браузером.
+
+# https://issues.apache.org/jira/browse/FELIX-3491
+bundles.success.title=Успех
+bundles.success.text=Операция выполнена успешно.
diff --git a/webconsole-l10n/ru/src/main/resources/res/flags/ru.gif b/webconsole-l10n/ru/src/main/resources/res/flags/ru.gif
new file mode 100644
index 0000000..b525c46
--- /dev/null
+++ b/webconsole-l10n/ru/src/main/resources/res/flags/ru.gif
Binary files differ
