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

ExtensionPoint_ValueEditors_name=Werte Editoren

PrefPage_AttributesPreferencePage_name=Attribute

PrefPage_BinaryAttributesAndSyntaxesPreferencePage_name=Binary Attributes

PrefPage_ValueEditorsPreferencePage_name=Werte Editoren

PrefPage_EntryEditorPreferencePage_name=Tabellen-Eintrags-Editor

PrefPage_TextFormatsPreferencePage_name=Text Formate

PrefPage_BrowserPreferencePage_name=Browser Ansicht

PrefPage_ViewsPreferencePage_name=Sichten

CtxType_LdapFilter_Template_name=LDAP Filter

Keyword_Colors_label=Farben

Keyword_Fonts_label=Schriften

Cmd_AddValue_name=Wert hinzuf\u00FCgen
Cmd_AddValue_description=Einen Wert zu einem bestehenden Attribut hinzuf\u00FCgen

Cmd_AddAttribute_name=Attribut hinzuf\u00FCgen
Cmd_AddAttribute_description=Ein Attribut zu einem bestehenden Eintrag hinzuf\u00FCgen

Cmd_EditAttributeDescription_name=Attribut Beschreibung editieren
Cmd_EditAttributeDescription_description=Eine Attribut Beschreibung ver\u00E4ndern

Cmd_EditValue_name=Wert editieren
Cmd_EditValue_description=Einen Wert ver\u00E4ndern

Cmd_EditRecord_name=Datensatz editieren
Cmd_EditRecord_description=Einen Datensatz editieren

Cmd_Delete_name=L\u00F6schen
Cmd_Delete_description=Ein Element l\u00F6schen

Cmd_Copy_name=Kopieren
Cmd_Copy_description=Ein Element kopieren

Cmd_Paste_name=Einf\u00FCgen
Cmd_Paste_description=Ein Element einf\u00FCgen

Cmd_Find_name=Finden
Cmd_Find_description=Ein Element finden

Cmd_Properties_name=Eigenschaften
Cmd_Properties_description=Eigenschaften eines Elementes

Cmd_LocateInDit_name=Auffinden in DIT
Cmd_LocateInDit_description=Auffinden eines DN oder eines Surchresultates in DIT

Cmd_OpenSearchResult_name=Suchresultat \u00F6ffnen
Cmd_OpenSearchResult_description=\u00D6ffnet ein Suchresultat

Ctx_LdapBrowserWindows_name=Im LDAP Browser Windows
Ctx_LdapBrowserWindows_description=Im LDAP Browser Windows

Ctx_LdapBrowserDialogs_name=Im LDAP Browser Dialog
Ctx_LdapBrowserDialogs_description=Im LDAP Browser Dialog

ConnectionParameterPage_BrowserParameterPage_name=Browser Optionen
ConnectionParameterPage_BrowserParameterPage_description=Sie k\u00F6nnen zus\u00E4tzliche Parameter zum Browsen spezifizieren.

ConnectionParameterPage_EditorParameterPage_name=\u00C4nderungsoptionen
ConnectionParameterPage_EditorParameterPage_description=Sie k\u00F6nnen zus\u00E4tzliche Parameter zum Editieren von Eintr\u00E4gen spezifizieren.
