# 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.
#---------------------------------------------------------------------------------------------------
# The IDs used more than once
#---------------------------------------------------------------------------------------------------
PrefPage_MainPreferencePage_id=org.apache.directory.studio.ldapbrowser.preferences.MainPreferencePage
PrefPage_AttributesPreferencePage_id=org.apache.directory.studio.ldapbrowser.preferences.AttributesPreferencePage
PrefPage_ValueEditorsPreferencePage_id=org.apache.directory.studio.ldapbrowser.preferences.ValueEditorsPreferencePage
PrefPage_ViewsPreferencePage_id=org.apache.directory.studio.ldapbrowser.preferences.ViewsPreferencePage

CtxType_LdapFilter_Template_id=org.apache.directory.studio.ldapbrowser.common.templates.filter

Keyword_LDAP_id=org.apache.directory.studio.ldapbrowser.keyword.ldap
Keyword_LDIF_id=org.apache.directory.studio.ldapbrowser.keyword.ldif

Cmd_Category_id=org.apache.directory.studio.ldapbrowser.commands
Cmd_AddValue_id=org.apache.directory.studio.ldapbrowser.action.addValue
Cmd_AddAttribute_id=org.apache.directory.studio.ldapbrowser.action.addAttribute
Cmd_EditAttributeDescription_id=org.apache.directory.studio.ldapbrowser.action.editAttributeDescription
Cmd_EditValue_id=org.apache.directory.studio.ldapbrowser.action.editValue
Cmd_EditRecord_id=org.apache.directory.studio.ldapbrowser.action.editRecord
Cmd_Delete_id=org.apache.directory.studio.ldapbrowser.action.delete
Cmd_Copy_id=org.apache.directory.studio.ldapbrowser.action.copy
Cmd_Paste_id=org.apache.directory.studio.ldapbrowser.action.paste
Cmd_Find_id=org.apache.directory.studio.ldapbrowser.action.find
Cmd_Properties_id=org.apache.directory.studio.ldapbrowser.action.properties
Cmd_LocateInDit_id=org.apache.directory.studio.ldapbrowser.action.locateInDit
Cmd_OpenSearchResult_id=org.apache.directory.studio.ldapbrowser.action.openSearchResult

Ctx_LdapBrowserWindows_id=org.apache.directory.studio.ldapbrowser.contexts.window
Ctx_LdapBrowserDialogs_id=org.apache.directory.studio.ldapbrowser.contexts.dialog

ConnectionParameterPage_BrowserParameterPage_id=org.apache.directory.studio.ldapbrowser.common.widgets.connection.BrowserParameterPage

NewWizards_Category_id=org.apache.directory.studio.ldapbrowser.newWizards

#---------------------------------------------------------------------------------------------------
# The I18n Strings
#---------------------------------------------------------------------------------------------------
ExtensionPoint_ValueEditors_name=Value Editors

ValueEditors_InPlaceTextValueEditor_name=In-Place Text Editor

ValueEditors_TextValueEditor_name=Text Editor

ValueEditors_HexValueEditor_name=Hex Editor

NewWizards_Category_name=LDAP Browser


PrefPage_MainPreferencePage_name=LDAP Browser

PrefPage_AttributesPreferencePage_name=Attributes

PrefPage_BinaryAttributesAndSyntaxesPreferencePage_name=Binary Attributes

PrefPage_ValueEditorsPreferencePage_name=Value Editors

PrefPage_BrowserPreferencePage_name=Browser View

PrefPage_EntryEditorPreferencePage_name=Table Entry Editor

PrefPage_TextFormatsPreferencePage_name=Text Formats

PrefPage_ViewsPreferencePage_name=Views

CtxType_LdapFilter_Template_name=LDAP Filter

Keyword_Colors_label=Colors

Keyword_Fonts_label=Fonts

Keyword_LDAP_label=LDAP

Keyword_LDIF_label=LDIF

Cmd_Category_name=LDAP Browser

Cmd_AddValue_name=Add Value
Cmd_AddValue_description=Add a value to an existing attribute

Cmd_AddAttribute_name=Add Attribute
Cmd_AddAttribute_description=Add an attribute to an existing entry

Cmd_EditAttributeDescription_name=Edit Attribute Description
Cmd_EditAttributeDescription_description=Edit an attribute description

Cmd_EditValue_name=Edit Value
Cmd_EditValue_description=Edit a value

Cmd_EditRecord_name=Edit Record
Cmd_EditRecord_description=Edit a record

Cmd_Delete_name=Delete
Cmd_Delete_description=Delete an element

Cmd_Copy_name=Copy
Cmd_Copy_description=Copy an element

Cmd_Paste_name=Paste
Cmd_Paste_description=Paste an element

Cmd_Find_name=Find
Cmd_Find_description=Find an element

Cmd_Properties_name=Properties
Cmd_Properties_description=Properties of an element

Cmd_LocateInDit_name=Locate in DIT
Cmd_LocateInDit_description=Locate a DN or search result in DIT

Cmd_OpenSearchResult_name=Open Search Result
Cmd_OpenSearchResult_description=Open a search result

Ctx_LdapBrowserWindows_name=In LDAP Browser Windows
Ctx_LdapBrowserWindows_description=In LDAP Browser Windows

Ctx_LdapBrowserDialogs_name=In LDAP Browser Dialogs
Ctx_LdapBrowserDialogs_description=In LDAP Browser Dialogs

ConnectionParameterPage_BrowserParameterPage_name=Browser Options
ConnectionParameterPage_BrowserParameterPage_description=You can specify additional parameters for browsing the directory.

ConnectionParameterPage_EditorParameterPage_name=Edit Options
ConnectionParameterPage_EditorParameterPage_description=You can specify additional parameters for editing entries.


