# 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
#---------------------------------------------------------------------------------------------------
Perspective_SchemaEditor_id=org.apache.directory.studio.schemaeditor.perspective

Views_Category_id=org.apache.directory.studio.schemaeditor.view.category
View_SchemaView_id=org.apache.directory.studio.schemaeditor.view.SchemaView
View_HierarchyView_id=org.apache.directory.studio.schemaeditor.view.HierarchyView
View_ProblemsView_id=org.apache.directory.studio.schemaeditor.view.ProblemsView
View_ProjectsView_id=org.apache.directory.studio.schemaeditor.view.ProjectsView
View_SearchView_id=org.apache.directory.studio.schemaeditor.view.SearchView

NewWizards_Category_id=org.apache.directory.studio.schemaeditor.newWizardCategory
NewWizard_NewProjectWizard_id=org.apache.directory.studio.schemaeditor.wizards.NewProjectWizard
NewWizard_NewSchemaWizard_id=org.apache.directory.studio.schemaeditor.wizards.NewSchemaWizard
NewWizard_NewAttributeTypeWizard_id=org.apache.directory.studio.schemaeditor.wizards.NewAttributeTypeWizard
NewWizard_NewObjectClassWizard_id=org.apache.directory.studio.schemaeditor.wizards.NewObjectClassWizard

Editor_ObjectClassEditor_id=org.apache.directory.studio.schemaeditor.view.objectClassEditor
Editor_AttributeTypeEditor_id=org.apache.directory.studio.schemaeditor.view.attributeTypeEditor
Editor_SchemaEditor_id=org.apache.directory.studio.schemaeditor.view.schemaEditor

ExportWizards_Category_id=org.apache.directory.studio.schemaeditor.exportWizardCategory

ImportWizards_Category_id=org.apache.directory.studio.schemaeditor.importWizardCategory

PrefPage_SchemaEditor_id=org.apache.directory.studio.schemaeditor.preferences.plugin
PrefPage_HierarchyView_id=org.apache.directory.studio.schemaeditor.preferences.hierarchyView
PrefPage_SchemaView_id=org.apache.directory.studio.schemaeditor.preferences.schemaView
PrefPage_SearchView_id=org.apache.directory.studio.schemaeditor.preferences.searchView

Ctx_ProjectsView_id=org.apache.directory.studio.schemaeditor.contexts.projectsView
Ctx_SchemaView_id=org.apache.directory.studio.schemaeditor.contexts.schemaView

Cmd_Category_id=org.apache.directory.studio.schemaeditor.commands
Cmd_NewProject_id=org.apache.directory.studio.schemaeditor.commands.newProject
Cmd_RenameProject_id=org.apache.directory.studio.schemaeditor.commands.renameProject
Cmd_DeleteProject_id=org.apache.directory.studio.schemaeditor.commands.deleteProject
Cmd_NewSchema_id=org.apache.directory.studio.schemaeditor.commands.newSchema
Cmd_NewAttributeType_id=org.apache.directory.studio.schemaeditor.commands.newAttributeType
Cmd_NewObjectClass_id=org.apache.directory.studio.schemaeditor.commands.newObjectClass
Cmd_OpenElement_id=org.apache.directory.studio.schemaeditor.commands.openElement
Cmd_OpenTypeHierarchy_id=org.apache.directory.studio.schemaeditor.commands.openTypeHierarchy
Cmd_DeleteSchemaElement_id=org.apache.directory.studio.schemaeditor.commands.deleteSchemaElement
Cmd_RenameSchemaElement_id=org.apache.directory.studio.schemaeditor.commands.renameSchemaElement

#---------------------------------------------------------------------------------------------------
# The I18n Strings
#---------------------------------------------------------------------------------------------------
Perspective_SchemaEditor_name=Schema Editor

Views_Category_name=Schema Editor

View_SchemaView_name=Schema

View_HierarchyView_name=Hierarchy

View_ProblemsView_name=Problems

View_ProjectsView_name=Projects

View_SearchView_name=Search

NewWizards_Category_name=Schema Editor

NewWizard_NewProjectWizard_name=New Schema Project

NewWizard_NewSchemaWizard_name=New Schema

NewWizard_NewAttributeTypeWizard_name=New Attribute Type

NewWizard_NewObjectClassWizard_name=New Object Class

Editor_ObjectClassEditor_name=Object Class Editor

Editor_AttributeTypeEditor_name=Attribute Type Editor

Editor_SchemaEditor_name=Schema Editor

ExportWizards_Category_name=Schema Editor

ExportWizard_ExportSchemasAsXmlWizard_name=Schemas as XML file(s)

ExportWizard_ExportSchemasAsOpenLdapWizard_name=Schemas as OpenLDAP files

ExportWizard_ExportSchemasForADSWizard_name=Schemas for ApacheDS

ExportWizard_ExportProjectsWizard_name=Schema Projects

ImportWizards_Category_name=Schema Editor

ImportWizard_ImportCoreSchemasWizard_name=Core schemas files

ImportWizard_ImportSchemasFromXmlWizard_name=Schemas from XML file(s)

ImportWizard_ImportSchemasFromOpenLdapWizard_name=Schemas from OpenLDAP files

ImportWizard_ImportProjectsWizard_name=Schema Projects

PrefPage_SchemaEditor_name=Schema Editor

PrefPage_HierarchyView_name=Hierarchy View

PrefPage_SchemaView_name=Schema View

PrefPage_SearchView_name=Search View

Decorator_SchemaEditorTypeDecorator_label=Schema Editor Type Decorator
Decorator_SchemaEditorTypeDecorator_description=Decorates Schema Editor icons with type information

Decorator_SchemaEditorSchemaCheckerDecorator_label=Schema Editor Schema Checker Decorator
Decorator_SchemaEditorSchemaCheckerDecorator_description=Decorates Schema Editor icons with schema checker information

SearchPage_SchemaEditorSearch_label=Schema Editor Search

Ctx_ProjectsView_name=In Projects View of Schema Editor
Ctx_ProjectsView_description=In Projects View of Schema Editor

Ctx_SchemaView_name=In Schema View of Schema Editor
Ctx_SchemaView_description=In Schema View of Schema Editor

Cmd_Category_name=Schema Editor

Cmd_NewProject_name=New Project
Cmd_NewProject_description=Creates a new project

Cmd_RenameProject_name=Rename Project
Cmd_RenameProject_description=Renames the selected project

Cmd_DeleteProject_name=Delete Project
Cmd_DeleteProject_description=Deletes the selected project(s)

Cmd_NewSchema_name=New Schema
Cmd_NewSchema_description=Creates a new schema

Cmd_NewAttributeType_name=New Attribute Type
Cmd_NewAttributeType_description=Creates a new attribute type

Cmd_NewObjectClass_name=New Object Class
Cmd_NewObjectClass_description=Creates a new object class

Cmd_OpenElement_name=Open Element
Cmd_OpenElement_description=Opens the selected element

Cmd_OpenTypeHierarchy_name=Open Type Hierarchy
Cmd_OpenTypeHierarchy_description=Opens the selected element in Type Hierarchy

Cmd_DeleteSchemaElement_name=Delete Schema Element
Cmd_DeleteSchemaElement_description=Delete the selected schema elements

Cmd_RenameSchemaElement_name=Rename Schema Element
Cmd_RenameSchemaElement_description=Renames the selected schema element

SchemaConnector_ApacheDS_name=ApacheDS Schema Connector
SchemaConnector_ApacheDS_description=The ApacheDS Schema Connector is compatible with ApacheDS (version 1.5 or later)

SchemaConnector_Generic_name=Generic Schema Connector
SchemaConnector_Generic_description=The Generic Schema Connector is compatible with almost any Directory Server (if the schema is accessible via the 'subschemaSubentry' attribute DN value of the Root DSE)
