﻿#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
pluginTitle=UPnP

status.ok=Unten finden Sie eine Liste von UPnP Geräten.
status.devs={0} Hauptgeräte/Dienste sind verfügbar.
status.none=Keine UPnP Geräte gefunden!
btn.search=UPnP Geräte suchen
btn.reloadVars=Zustandsvariablen neu laden
tree.searching=Suche UPnP Geräte ...
tree.loading.title=Laden
device.title=Geräteinformationen
prop.name=Eigenschaftsname
prop.value=Wert
service.title=Dienstinformationen
service.id=Dienst ID:
service.type=Dienst-Typ:
vars.title=Zustandsvariablen
vars.name=Name
vars.value=Wert
vars.events=Sendet Ereignisse
actions.title=Vorgänge
actions.invoke=aufrufen
args.name=Parametername
args.type=UPnP Datentyp
args.value=Wert
dialog.title.ok=Erfolg
no.actions=Keine Vorgänge zur Verfügung.
no.params.out=Keine Ausgangsparameter.
actions.select=Vorgang auswählen:
actions.invoke.title=Ausgewählter Vorgang aufrufen
