# 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
#---------------------------------------------------------------------------------------------------
Editor_LdifEditor_id=org.apache.directory.studio.ldifeditor.editor.LdifEditor
NewWizards_Category_id=org.apache.directory.studio.ldapbrowser.newWizards
NewWizard_NewLdifFileWizard_id=org.apache.directory.studio.ldifeditor.wizards.NewLdifFileWizard

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

PrefPage_LdifEditorContentAssistPreferencePage_id=org.apache.directory.studio.ldifeditor.dialogs.preferences.LdifEditorContentAssistPreferencePage
PrefPage_LdifEditorPreferencePage_id=org.apache.directory.studio.ldifeditor.dialogs.preferences.LdifEditorPreferencePage
PrefPage_LdifEditorSyntaxColoringPreferencePage_id=org.apache.directory.studio.ldifeditor.dialogs.preferences.LdifEditorSyntaxColoringPreferencePage
PrefPage_LdifEditorTemplatesPreferencePage_id=org.apache.directory.studio.ldifeditor.dialogs.preferences.LdifEditorTemplatesPreferencePage

CtxType_LdifAttributeValueRecord_id=org.apache.directory.studio.ldifeditor.templates.ldifAttrValRecord
CtxType_LdifFile_id=org.apache.directory.studio.ldifeditor.templates.ldifFile
CtxType_LdifModificationItem_id=org.apache.directory.studio.ldifeditor.templates.ldifModificationItem
CtxType_LdifModificationRecord_id=org.apache.directory.studio.ldifeditor.templates.ldifModificationRecord
CtxType_LdifModdnRecord_id=org.apache.directory.studio.ldifeditor.templates.ldifModdnRecord

Cmd_EditRecord_id=org.apache.directory.studio.ldapbrowser.action.editRecord
Cmd_EditAttributeDescription_id=org.apache.directory.studio.ldapbrowser.action.editAttributeDescription

#---------------------------------------------------------------------------------------------------
# The I18n Strings
#---------------------------------------------------------------------------------------------------
Editor_LdifEditor_name=LDIF Editor

NewWizard_NewLdifFileWizard_name=LDIF File

PrefPage_LdifEditorPreferencePage_name=LDIF Editor

PrefPage_LdifEditorContentAssistPreferencePage_name=Content Assist

PrefPage_LdifEditorSyntaxColoringPreferencePage_name=Syntax Coloring

PrefPage_LdifEditorTemplatesPreferencePage_name=Templates

CtxType_LdifFile_name=LDIF File

CtxType_LdifAttributeValueRecord_name=LDIF Content Record

CtxType_LdifModificationRecord_name=LDIF Modification Record

CtxType_LdifModificationItem_name=LDIF Modification Item

CtxType_LdifModdnRecord_name=LDIF Moddn Record

Template_LdifContentRecord_description=LDIF content record
Template_LdifAddRecord_description=LDIF change add record
Template_LdifModifyRecord_description=LDIF change modify record
Template_LdifDeleteRecord_description=LDIF change delete record
Template_LdifModdnRecord_description=LDIF change modify DN record
Template_LdifModifyRecord_AddValue_description=Add value
Template_LdifModifyRecord_ReplaceValue_description=Replace value
Template_LdifModifyRecord_DeleteValue_description=Delete value
Template_LdifModifyRecord_DeleteAttribute_description=Delete attribute


