###############################################################################
# Copyright (c) 2005, 2009 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
###############################################################################

_UI_ACTION_ADD_ATTRIBUTELIST=Add Attribute &List

!DTDOutliner
_UI_ACTION_ADD_DTD_NOTATION=Add &Notation
_UI_ACTION_ADD_DTD_ENTITY=Add &Entity
_UI_ACTION_ADD_DTD_ELEMENT=Add Ele&ment
_UI_ACTION_ADD_DTD_COMMENT=Add &Comment
_UI_ACTION_DTD_DELETE=&Delete
_UI_ACTION_ADD_ATTRIBUTE=Add &Attribute
_UI_ACTION_GROUP_ADD_GROUP=Add Group to Con&tent Model
_UI_ACTION_ADD_ELEMENT=Add Element to C&ontent Model

!DTDContentOutlinePage
_UI_BUTTON_GROUP_ITEMS_LOGICALLY=Group items logically.
_UI_BUTTON_SORT_ITEMS=Sort items alphabetically.

!DTDContextContributer
_UI_ACTION_ADD_PARAM_ENTITY_REF=Add &Parameter Entity Reference

!DragAttributeCommand
_UI_MOVE_ATTRIBUTE=Move Attribute

!DragContentModelCommand
_UI_MOVE_CONTENT=Move Content

!DragTopLevelNodesCommand
_UI_MOVE_NODE=Move Node
_UI_MOVE_NODES=Move Nodes

_ERROR_FILENAME_MUST_END_DTD=The file name must end in one of the following extensions {0}.

#DTD File page
Creating_files=Creating files
DTDFilesPreferencePage_ExtensionLabel=Add this suffix (if not specified):
DTDFilesPreferencePage_ExtensionError=Suffix must be one of the following {0}.

#DTD Style page
DTDColorPage_0=<!ELEMENT Main (One,Two+)>\r\n<!ELEMENT One (Three,Four)>\r\n<!ATTLIST One\r\n oneone CDATA #REQUIRED\r\n>\r\n<!-- You need this -->\r\n<!ELEMENT Two (moremore*)>\r\n<!ATTLIST Two\r\n twotwo CDATA #REQUIRED\r\n twothree (aaa | bbb) "aaa"\r\n>\r\n
DTDColorPage_1=Comments
DTDColorPage_2=Data
DTDColorPage_3=Default
DTDColorPage_4=Keywords
DTDColorPage_5=Strings
DTDColorPage_6=Symbols
DTDColorPage_7=Tag Delimiters
DTDColorPage_8=Tag Names
DTDPropertySourceAdapter_0=Name
DTDPropertySourceAdapter_1=Contents
DTDPropertySourceAdapter_2=Attributes

! NewDTDWizard.java
_UI_CREATE_NEW_DTD_FILE      = Create a new DTD file.
_UI_WIZARD_NEW_DTD_TITLE     = Create DTD
_UI_WIZARD_NEW_DTD_EXPL      = Create a new DTD file. Specify the folder and name for the file.

# copied from dtd core
_UI_LABEL_DTD_FILE_DELETE=Delete
##
ResourceGroup_nameExists = The same name already exists.
NewDTDTemplatesWizardPage_0=Select DTD Template
NewDTDTemplatesWizardPage_1=Select a template as initial content in the DTD page.
NewDTDTemplatesWizardPage_2=Name
NewDTDTemplatesWizardPage_3=Description
NewDTDTemplatesWizardPage_4=&Use DTD Template
NewDTDTemplatesWizardPage_5=&Preview:
NewDTDTemplatesWizardPage_6=Templates are 'New DTD' templates found in the <a>DTD Templates</a> preference page.
NewDTDTemplatesWizardPage_7=&Templates:

SourceMenu_label=Source

SyntaxColoringPage_0=Syntax Element:
SyntaxColoringPage_2=Enable
SyntaxColoringPage_3=&Bold
SyntaxColoringPage_4=&Italic
SyntaxColoringPage_5=&Strikethrough
SyntaxColoringPage_6=&Underline

_UI_STRUCTURED_TEXT_EDITOR_PREFS_LINK=DTD preferences.  Note that some preferences may be set on the <a>{0}</a> preference page.

