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
