###############################################################################
# Copyright (c) 2001, 2004 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
#     Jens Lukowski/Innoopract - initial renaming/restructuring
#     
###############################################################################
! Properties file for component: XMDTD - XML Tools DTD Editor
! Packaged for translation in:  xml.zip

providerName=Eclipse.org
pluginName=SSE DTD Source Editor
nlFeatureName=SSE DTD Source Editor NL Support

DTD_Source_Page_Editor.name=DTD Editor
_UI_LABEL_DTD_FILES=DTD Files
DTD_Templates.name=DTD Templates
_UI_LABEL_DTD_STYLES=DTD Styles
_UI_WIZARD_NEW_DTD=DTD File
_UI_CREATE_NEW_DTD_FILE=Create a new DTD file
##
AddTask.label=Add &Task...
AddTask.tooltip=Add Task...
AddBookmark.label=Add Boo&kmark...
AddBookmark.tooltip=Add Bookmark...

_UI_MENU_VALIDATE_DTD               = &Validate DTD File
_UI_XML_DTD_VALIDATOR                = DTD Validator

DTD_New_context_type_Extension_Element.name=New DTD