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

ActionSet_LdapMenuActionSet_label=LDAP Men\u00FC

Editor_SingleTabEntryEditor_shortname=Tabellen-Eintrags-Editor
Editor_SingleTabEntryEditor_fullname=Tabellen-Eintrags-Editor (einzelner Reiter)
Editor_SingleTabEntryEditor_description=\u00d6ffnet alle Eintr\u00e4ge in einem einzelnen Editor.
Editor_MultiTabEntryEditor_shortname=Tabellen-Eintrags-Editor
Editor_MultiTabEntryEditor_fullname=Tabellen-Eintrags-Editor (mehrere Reiter)
Editor_MultiTabEntryEditor_description=\u00d6ffnet jeden Eintrag in einem eigenen Editor.
Editor_SingleTabLdifEntryEditor_shortname=LDIF-Eintrags-Editor
Editor_SingleTabLdifEntryEditor_fullname=LDIF-Eintrags-Editor (einzelner Reiter)
Editor_SingleTabLdifEntryEditor_description=\u00d6ffnet alle Eintr\u00e4ge in einem einzelnen Editor.
Editor_MultiTabLdifEntryEditor_shortname=LDIF-Eintrags-Editor
Editor_MultiTabLdifEntryEditor_fullname=LDIF-Eintrags-Editor (mehrere Reiter)
Editor_MultiTabLdifEntryEditor_description=\u00d6ffnet jeden Eintrag in einem eigenen Editor.

Editor_SearchResultEditor_name=Suchresultat Editor

View_ConnectionView_name=Verbindungen
View_ModificationLogsView_name=\u00C4nderungs-Logs
View_SearchLogsView_name=Such-Logs

NewWizard_NewEntryWizard_name=LDAP Entry
NewWizard_NewContextEntryWizard_name=LDAP Kontext Eintrag
NewWizard_NewSearchWizard_name=LDAP Suche
NewWizard_NewBookmarkWizard_name=LDAP Lesezeichen
NewWizard_BatchOperationWizard_name=LDAP Batch Operation

ImportWizard_ImportLdifWizard_name=LDIF in LDAP
ImportWizard_ImportLdifWizard_description=Importiert eine LDIF Datei in ein LDAP Verzeichnis

ImportWizard_ImportDsmlWizard_name=DSML in LDAP
ImportWizard_ImportDsmlWizard_description=Importiert eine DSML Datei in ein LDAP Verzeichnis

ExportWizard_ExportLdifWizard_name=LDAP nach LDIF
ExportWizard_ExportLdifWizard_description=Exportiert eine LDIF Datei aus einem LDAP Verzeichnis

ExportWizard_ExportDdsmlWizard_name=LDAP nach DSML
ExportWizard_ExportDdsmlWizard_description=Exportiert eine DSML Datei aus einem LDAP Verzeichnis

ExportWizard_ExportCsvWizard_name=LDAP nach CSV
ExportWizard_ExportCsvWizard_description=Exportiert eine CSV Datei aus einem LDAP Verzeichnis

ExportWizard_ExportExcelWizard_name=LDAP nach Excel
ExportWizard_ExportExcelWizard_description=Exportiert eine Excel Datei aus einem LDAP Verzeichnis

ExportWizard_ExportOdfWizard_name=LDAP nach ODF
ExportWizard_ExportOdfWizard_description=Exportiert eine ODF Datei aus einem LDAP Verzeichnis

SearchPage_LdapSearch_label=LDAP Suche

PrefPage_SearchResultEditorPreferencePage_name=Suchresultat Editor
PrefPage_ModificationLogsPreferencePage_name=\u00C4nderungs-Logs Ansicht
PrefPage_SearchLogsPreferencePage_name=Such-Logs Ansicht
PrefPage_EntryEditorsPreferencePage_name=Eintrags-Editoren

PropPage_Search_name=Suche
PropPage_Entry_name=Eintrag
PropPage_Value_name=Wert
PropPage_Bookmark_name=Lesezeichen

Action_OpenSchemaBrowserAction_label=Schema Browser \u00F6ffnen
Action_NewConnectionAction_label=Neue Verbindung...
Action_NewEntryAction_label=Neuer Eintrag...
Action_NewAttributeAction_label=Neues Attribut...
Action_NewValueAction_label=Neuer Wert
Action_NewSearchAction_label=Neue Suche...
Action_NewBookmarkAction_label=Neues Lesezeichen...
Action_NewBatchOperationAction_label=Neue Batch Operation...
Action_OpenEncoderDecoderDialogAction_label=Encoder/Decoder \u00F6ffnen
Action_NewLdifFileAction_label=Neue LDIF Datei
Action_GotoDnAction_label=Gehe zu DN...

Decorator_BrowserViewLabelDecorator_label=LDAP Dekorator
Decorator_BrowserViewLabelDecorator_description=Dekoriert LDAP Icons
