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

#
# This file stores the Strings used by the User Interface of the application
#

# Contains translated Strings for the Schemas plugin

ldapstudio-schemas-plugin.perspective.schemas.name=Schemas

ldapstudio-schemas-plugin.views.category.name=Schemas Editor
ldapstudio-schemas-plugin.views.schemaElements.name=Schema Elements
ldapstudio-schemas-plugin.views.schemas.name=Schemas
ldapstudio-schemas-plugin.views.search.name=Search

ldapstudio-schemas-plugin.commands.openalocalschema.name=Open a local schema
ldapstudio-schemas-plugin.commands.openalocalschema.description=Opens a local schema
ldapstudio-schemas-plugin.commands.saveselectedschema.name=Save selected schema
ldapstudio-schemas-plugin.commands.saveselectedschema.description=Saves the selected schema
ldapstudio-schemas-plugin.commands.saveselectedschemaas.name=Save selected schema as...
ldapstudio-schemas-plugin.commands.saveselectedschemaas.description=Saves the selected schema as...
ldapstudio-schemas-plugin.commands.saveallschemas.name=Save all schemas
ldapstudio-schemas-plugin.commands.saveallschemas.description=Saves all schemas
ldapstudio-schemas-plugin.commands.removeselectedschema.name=Remove selected schema from the pool
ldapstudio-schemas-plugin.commands.removeselectedschema.description=Removes selected schema from the pool
ldapstudio-schemas-plugin.commands.viewschemasourcecode.name=View schema source code
ldapstudio-schemas-plugin.commands.viewschemasourcecode.description=Open source code page of the selected schema
ldapstudio-schemas-plugin.commands.delete.name=Delete selected item
ldapstudio-schemas-plugin.commands.delete.description=Deletes the selected item
ldapstudio-schemas-plugin.commands.createanewschema.name=Create a new schema
ldapstudio-schemas-plugin.commands.createanewschema.description=Creates a new schema
ldapstudio-schemas-plugin.commands.createanewobjectclass.name=Create a new object class
ldapstudio-schemas-plugin.commands.createanewobjectclass.description=Creates a new object class
ldapstudio-schemas-plugin.commands.createanewattributetype.name=Create a new attribute type
ldapstudio-schemas-plugin.commands.createanewattributetype.description=Creates a new attribute type
ldapstudio-schemas-plugin.commands.category.name=LDAPStudio Category

ldapstudio-schemas-plugin.editors.objectclasseditor.name=Object Class Editor
ldapstudio-schemas-plugin.editors.attributetypeeditor.name=Attribute Type Editor
ldapstudio-schemas-plugin.editors.schemaeditor.name=Schema Editor

ldapstudio-schemas-plugin.wizards.category.name=Schemas Editor
ldapstudio-schemas-plugin.wizards.createanewschema.name=Create a new schema
ldapstudio-schemas-plugin.wizards.createanewobjectclass.name=Create a new object class
ldapstudio-schemas-plugin.wizards.createanewattributetype.name=Create a new attribute type

ldapstudio-schemas-plugin.preferencepages.general.name=Schemas Editor

ldapstudio-schemas-plugin.actionsets.actionset.label=Schema Plugin ActionSet
ldapstudio-schemas-plugin.actionsets.menu.schemas.label=Schemas
ldapstudio-schemas-plugin.actionsets.action.removeselectedschema.label=Remove selected schema
ldapstudio-schemas-plugin.actionsets.action.removeselectedschema.tooltip=Removes the selected schema
ldapstudio-schemas-plugin.actionsets.action.openaschemafile.label=Open a schema file
ldapstudio-schemas-plugin.actionsets.action.openaschemafile.tooltip=Opens a schema file
ldapstudio-schemas-plugin.actionsets.action.saveallschemas.label=Save all schemas
ldapstudio-schemas-plugin.actionsets.action.saveallschemas.tooltip=Save all schemas
ldapstudio-schemas-plugin.actionsets.action.saveschemaas.label=Save schema as...
ldapstudio-schemas-plugin.actionsets.action.saveschemaas.tooltip=Saves schema as...
ldapstudio-schemas-plugin.actionsets.action.saveschema.label=Save schema
ldapstudio-schemas-plugin.actionsets.action.saveschema.tooltip=Saves schema
ldapstudio-schemas-plugin.actionsets.action.deleteselecteditem.label=Delete selected item
ldapstudio-schemas-plugin.actionsets.action.deleteselecteditem.tooltip=Deletes selected item
ldapstudio-schemas-plugin.actionsets.action.createanewschema.label=Create a new schema
ldapstudio-schemas-plugin.actionsets.action.createanewschema.tooltip=Creates a new schema
ldapstudio-schemas-plugin.actionsets.action.createanewobjectclass.label=Create a new object class
ldapstudio-schemas-plugin.actionsets.action.createanewobjectclass.tooltip=Creates a new object class
ldapstudio-schemas-plugin.actionsets.action.createanewattributetype.label=Create a new attribute type
ldapstudio-schemas-plugin.actionsets.action.createanewattributetype.tooltip=Creates a new attribute type
