﻿#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=Използващи бъндъли

# 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.


