﻿#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

# OBR Plugin
obr.pluginTitle=OSGi Хранилище
obr.status.ok=Apache Bundle Repository услъгата е достъпна.
obr.status.no=Нуждаете се от Apache Bundle Repository услугата за да се възползвате от тази функционалност!
obr.version.select=Изберете версия...
obr.repo.title=Бъндъл хранилище
obr.action.add=Добавяне
obr.action.search=Търсене
obr.action.search.description=Въведе част от презентацията на бъндъла (име, описание, версия ...), \
 или валиден OSGi филтър
obr.action.deploy=Инсталиране на избраните
obr.action.deploystart=Инсталиране и стартиране на избраните
obr.repo.name=Име
obr.repo.url=Адрес
obr.repo.lastModified=Последна промяна
obr.repo.actions=Действия
obr.res.title=Достъпни ресурси
obr.res.name=Име на ресурса
obr.res.installedVer=Инсталирана версия
obr.error=Грешка при филтриране на ресурсите
