# 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.
AttributeOptionsWizardPage.BinaryOption=binary option
AttributeOptionsWizardPage.LanguageTags=Language tags
AttributeOptionsWizardPage.MustNotBeNull=Must not be null
AttributeOptionsWizardPage.Options=Options
AttributeOptionsWizardPage.OptionsDescription=Optionally you may specify options (e.g. language tags).
AttributeOptionsWizardPage.OtherOptions=Other options
AttributeOptionsWizardPage.Preview=Preview:
AttributeTypeWizardPage.AttributeType=Attribute Type
AttributeTypeWizardPage.AttributeTypeDescription=Please enter or select the attribute type.
AttributeTypeWizardPage.AttributeTypeLabel=Attribute type:
AttributeTypeWizardPage.HideExistingAttributes=Hide existing attributes
AttributeTypeWizardPage.PreviewLabel=Preview:
AttributeTypeWizardPage.ShowSubschemaAttributesOnly=Show subschema attributes only
AttributeWizard.NewAttribute=New Attribute
AttributeWizard.NoeEntrySelectedDescription=In order to use the attribute creation wizard please select an entry.
AttributeWizard.NoEntrySelected=No entry selected
EditEntryWizard.EditEntry=Edit Entry
NewEntryAttributesWizardPage.Attributes=Attributes
NewEntryAttributesWizardPage.PleaseEnterAttributesForEntry=Please enter the attributes for the entry. Enter at least the MUST attributes.
NewEntryDnWizardPage.DistinguishedName=Distinguished Name
NewEntryDnWizardPage.EnterDN=Please enter the DN of the context entry.
NewEntryDnWizardPage.EntryAlreadyExists=Entry {0} already exists
NewEntryDnWizardPage.Error=Error
NewEntryDnWizardPage.ParentDoesNotExist=Parent {0} doesn't exist
NewEntryDnWizardPage.SelectParent=Please select the parent of the new entry and enter the RDN.
NewEntryObjectclassWizardPage.AddButton=&Add
NewEntryObjectclassWizardPage.AvailableObjectClasses=Available object classes
NewEntryObjectclassWizardPage.FilterDescription=You may enter a filter to restrict the list below
NewEntryObjectclassWizardPage.ObjectClasses=Object Classes
NewEntryObjectclassWizardPage.ObjectClassesDescription=Please select object classes of the entry. Select at least one structural object class.
NewEntryObjectclassWizardPage.ReloadSchema=Reload Schema
NewEntryObjectclassWizardPage.RemoveButton=&Remove
NewEntryObjectclassWizardPage.SelectedObjectClasses=Selected object classes
NewEntryObjectclassWizardPage.SelectStructuralObjectClass=Please select at least one structural object class.
NewEntryTypeWizardPage.CreateEntryFromScratch=Create entry from scratch
NewEntryTypeWizardPage.EntryCreationMethod=Entry Creation Method
NewEntryTypeWizardPage.EntryCreationMethodDescription=Please select the entry creation method.
NewEntryTypeWizardPage.EntryDoesNotExist=Entry {0} doesn't exist
NewEntryTypeWizardPage.Error=Error
NewEntryTypeWizardPage.NoConnection=No connection
NewEntryTypeWizardPage.NoDN=No Distinguished Name
NewEntryTypeWizardPage.UseExistingEntryAsTemplate=Use existing entry as template
NewEntryWizard.NewContextEntry=New Context Entry
NewEntryWizard.NewEntry=New Entry
NewEntryWizard.NoConnectonSelected=No connection selected or connection is closed
NewEntryWizard.NoConnectonSelectedDescription=In order to use the entry creation wizard please select an entry or connection.
