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

!plugin.xml
providerName=Eclipse.org
pluginName=SSE DTD Source Editor
nlFeatureName=SSE DTD Source Editor NL Support
DTD_Source_Page_Editor.name=DTD Source Page Editor
_UI_WIZARD_NEW_DTD=DTD File
_UI_CREATE_NEW_DTD_FILE=Create a new DTD file
_UI_XML_TOOLS_PREFERENCE_PAGE=XML
_UI_DTD_EDITOR_PREFERENCE=DTD

! GenerateDTDActionDelegate - XML validation check
_UI_DIALOG_TITLE_XML_ERROR=Invalid XML
_UI_DIALOG_INFO_XML_INVALID=IWAK0090I The XML file contains errors. Open it in the XML editor and validate it for details.

!
! Preference Page
!
_UI_SEPARATE_DESIGN_AND_SOURCE_VIEW=Separate design and source view
_UI_COMBINED_DESIGN_AND_SOURCE_VIEW=Combined design and source view
_UI_LABEL_EDITOR_LAYOUT=Editor Layout
_UI_LABEL_DTD_FILES=DTD Files
_UI_LABEL_DTD_STYLES=DTD Styles

!AddAttributeAction
_UI_DEFAULT_NEW_ATTRIBUTE=Attribute
_UI_ACTION_DTD_ADD_ATTRIBUTE=Add Attribute
_UI_ACTION_DTD_ADD_ELEMENT=Add Element

!actions/AddGroupToContentModelAction.java
_UI_ACTION_ADD_GROUP=Add &Group

!AddEntityAction
_UI_ACTION_ADD_ENTITY=Add &Entity


! Flat Page Header Text
_UI_PAGE_HEADING_ELEMENT=Element
_UI_PAGE_HEADING_ATTRIBUTE=Attribute
_UI_PAGE_HEADING_NOTATION=Notation
_UI_PAGE_HEADING_PARAM_ENTITY_REF=External Parameter Entity Reference
_UI_PAGE_HEADING_ENTITY=Entity
_UI_PAGE_HEADING_COMMENT=Comment
_UI_PAGE_HEADING_ATTLIST=Attribute List
_UI_PAGE_HEADING_CONTENT_MODEL=Content Model
_UI_PAGE_HEADING_CONTENT_MODEL_GROUP=Content Model Group

!BlankWindow
_UI_LABEL_VIEW_NOT_AVAILABLE=View is not available for selected object.

!AttributeWindow
_UI_ACTION_NOTATION_INFO=Attribute Information
_UI_LABEL_ATTRIBUTE_NAME=Name:
_UI_LABEL_ATTRIBUTE_TYPE=Type:
_UI_RADIO_DEFAULT=Default
_UI_GROUP_ENUMERATED_DEFAULTS=Enumerated defaults
_UI_BUTTON_ADD=Add  >>
_UI_BUTTON_REMOVE=<< Remove
_UI_CHKBOX_DEFAULT=Default
_UI_GROUP_ELEMENT_COMMENT=Comment
_UI_CHKBOX_ENUMERATED_DEFAULT=Default
_UI_CHKBOX_NOTATION_COMBO=Default
_UI_GROUP_ATTRIBUTE=Attribute default value

!ContentWindow  & ElementWindow
_UI_LABEL_DTD_NAME=Name
_UI_GROUP_OCCURRENCE=Occurrence

!the following four symbols are also used in dtdeditor/presentation/GroupContentWindow.java
!! NOTE TO TRANSLATOR: Please keep the characters in parentheses in translated text i.e. (1)
_UI_RADIO_JUST_ONCE=Just once (1)
_UI_RADIO_ONE_OR_MORE=One or more (+)
_UI_RADIO_OPTIONAL=Optional (?)
_UI_RADIO_ZERO_OR_MORE=Zero or more (*)

!context menu for .dtd files
_UI_MENU_GENERATE=&Generate
_UI_MENU_JAVA=&Java Beans...
_UI_MENU_XML_SCHEMA=XML &Schema...
_UI_MENU_HTML_FORM=&HTML Form...

!presentation/DTDContextContributor.java
_UI_MENU_GENERATE_JAVA=Generate &Java Beans...
_UI_MENU_GENERATE_XML_SCHEMA=Generate &XML Schema...
_UI_MENU_GENERATE_HTML_FORM=Generate &HTML Form...
_UI_MENU_GENERATE_SAMPLE_XML=Generate XM&L...
_UI_MENU_VALIDATE_DTD=&Validate DTD
_UI_TOOLTIP_VALIDATE_DTD=Validate the current state of the DTD
_UI_TOOLTIP_GENERATE_HTML=Generate an HTML form for the DTD
_UI_TOOLTIP_GENERATE_SAMPLE_XML=Generate an XML from the DTD
_UI_TOOLTIP_GENERATE_XML_SCHEMA=Generate an XML Schema from the DTD
_UI_TOOLTIP_GENERATE_JAVA=Generate Java Beans for the DTD

_UI_ACTION_DELETE=Delete
_UI_ACTION_CONTEXT_ADD_NOTATION=Add &Notation
_UI_TOOLTIP_ADD_NOTATION=Add a notation to the DTD.
_UI_ACTION_CONTEXT_ADD_ENTITY=Add &Entity
_UI_TOOLTIP_ADD_ENTITY=Add an entity to the DTD.
_UI_ACTION_CONTEXT_ADD_ELEMENT=Add Ele&ment
_UI_TOOLTIP_ADD_ELEMENT=Add an element to the DTD.
_UI_ACTION_CONTEXT_ADD_ATTRIBUTE=Add Attribute
_UI_TOOLTIP_ADD_ATTRIBUTE_SELECTED=Add an attribute to the selected element.
_UI_ACTION_ADD_ATTRIBUTELIST=Add Attribute &List
_UI_TOOLTIP_ADD_ATTRIBUTELIST_SELECTED=Add an attribute list to the selected element.
_UI_ACTION_ADD_GROUP_CONTENT=Add Group To Con&tent Model
_UI_TOOLTIP_ADD_GROUP=Add a group to the content model of the selected group or element.
_UI_ACTION_ADD_ELEMENT_CONTENT=Add Element To C&ontent Model
_UI_TOOLTIP_ADD_ELEMENT_CONTENT=Add an element to the content model.
_UI_MENU_DTD_EDITOR=&DTD
_UI_TOOLTIP_ADD_COMMENT=Add a comment to the DTD.

!presentation/DTDEditor.java
_UI_WORKBOOKPAGE_SOURCE=Source
_UI_WORKBOOKPAGE_DESIGN=Design

!the following is used: _UI_MENU_UNDO_1 + _UI_MENU_UNDO_2
_UI_MENU_UNDO_1=&Undo
!! NOTE TO TRANSLATOR: Do not translate following line - shortcut key
_UI_MENU_UNDO_2=@Ctrl+Z

!the following is used: _UI_MENU_UNDO_DESC + a description of the command to be undone
_UI_MENU_UNDO_DESC=Undo:

!the following is used: _UI_MENU_REDO_1 + _UI_MENU_REDO_2
_UI_MENU_REDO_1=&Redo
!! NOTE TO TRANSLATOR: Do not translate following line - shortcut key
_UI_MENU_REDO_2=@Ctrl+Y

!the following is used: _UI_MENU_REDO_DESC + a description of the command to be done again
_UI_MENU_REDO_DESC=Redo:

!presentation/ElementWindow
_UI_ELEMENT_NAME=Name
_UI_ELEMENT_COMMENT=Comment

!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_UNGROUP_ITEMS_LOGICALLY=Do not group items logically.
_UI_BUTTON_SORT_ITEMS=Sort items alphabetically.
_UI_BUTTON_UNSORT_ITEMS=Do not sort items alphabetically.

!provider/EntityItemProvider.java
_UI_COLUMN_PARAMETER=Parameter
_UI_COLUMN_GENERAL=General

!provider/FolderItemProvider.java
_UI_LABEL_ELEMENTS_FOLDER=Elements
_UI_LABEL_NOTATIONS_FOLDER=Notations
_UI_LABEL_ENITIES_FOLDER=Entities

!Wizards/InputSelectionPage.java
_UI_BUTTON_SELECT_ALL=&Select All
_UI_BUTTON_UNSELECT_ALL=&Clear All

!Wizards/HTMLFormWizard.java
_UI_HTML_WIZARD_NEW_FILE_TITLE=Generate HTML Form
_UI_HTML_WIZARD_NEW_FILE_DESC=Generate an HTML form from the selected DTD file.

!Wizards/NewDTDWizard.java
_UI_WIZARD_NEW_DTD_TITLE=Create DTD
_UI_WIZARD_CREATE_DTD_HEADING=Create DTD File
_UI_WIZARD_CREATE_DTD_EXPL=Select how you would like to create your DTD file.
_UI_RADIO_CREATE_DTD=Create DTD file from scratch
_UI_RADIO_CREATE_DTD_FROM_XML=Create DTD file from an XML file

_UI_WIZARD_NEW_DTD_HEADING=New DTD
_UI_WIZARD_NEW_DTD_EXPL=Create a new DTD file. Specify the folder and name for the file.

_UI_WIZARD_NEW_XSD_HEADING=New XML Schema
_UI_WIZARD_NEW_XSD_EXPL=Create a new XML Schema file from the XML file.

_UI_WIZARD_XML_FILE_HEADING=XML Files
_UI_WIZARD_XML_FILE_EXPL=Select the XML files to create the DTD file from.
_UI_LABEL_XML_FILES=XML Files:

_UI_STATUS_XML_CONTAINS_ERRORS=XML files specified contained errors.
_UI_BUTTON_ADD_XML=Add...
_UI_BUTTON_REMOVE_XML=Remove

!wizards/ServletNamePage
_UI_WIZARD_SERVLET_NAME_HEADING=Servlet Name
_UI_LABEL_SERVLET_NAME=&Enter the servlet name:
_UI_LABEL_MISSING_SERVLET_NAME=Provide a servlet name
_UI_LABEL_DEFAULT_SERVLET_NAME=http://localhost/servlet/testServlet

!wizards/GenerateXMLSchemaHelper.java & DTD2XSDWizard.java
_UI_WIZARD_DTD2XSD_TITLE=Generate
_UI_GENERATE_XSD_TITLE=Generate XML Schema
_UI_GENERATE_XSD_DESCRIPTION=Generate an XML schema from the selected DTD file.
_UI_PAGE_GEN_OPTIONS_TITLE=XML Schema Generation Options
_UI_PAGE_GEN_OPTIONS_DESC=Select how you want your XML schema generated
_UI_GENERATE_XSD_LONG_DESC=You can create one XML schema file that includes the selected DTD and any of the DTDs it references.  Alternatively, you can create individual schema files that correspond to the selected DTD and any of the DTDs it references.


_UI_GROUP_OPTIONS=Options
_UI_BUTTON_GEN_ONE_SCHEMA=&Create one XML schema that includes all the DTD files
_UI_BUTTON_GEN_MULTI_SCHEMAS=Create an &XML schema for each DTD file

!EntityWindow
_UI_GROUP_ENTITY_INFORMATION=Entity information
_UI_LABEL_NAME=Name:
_UI_LABLE_TYPE=Type:
_UI_RADIO_GENERAL=General
_UI_RADIO_PARAMETER=Parameter
_UI_CHKBOX_EXTERNAL=External
_UI_GROUP_INTERNAL=Internal Entity
_UI_DIALOG_SELECT_DTD=Select System ID File
_UI_DIALOG_SELECT_DTD_DESC=Please select a resource to be used for the System ID.
_UI_GROUP_INTERNAL_ENTITY=Internal entity
_UI_LABEL_VALUE_INTERNAL=Value:
_UI_GROUP_EXTERNAL_ENTITY=External entity
_UI_LABEL_VALUE=Value
_UI_GROUP_COMMENT=Comment
_UI_LABEL_SYSTEM_ID=System ID:
_UI_BUTTON_SELECT=Select...
_UI_LABEL_PUBLIC_ID=Public ID:
_UI_LABEL_NOTATION_NAME=Notation name
_UI_LABEL_UNPARSE_ENTITY=(Unparsed entity)
_UI_TOOLTIP_GENERAL=Use entity in XML documents.
_UI_TOOLTIP_PARAMETER=Use entity in a DTD.
_UI_TOOLTIP_EXTERNAL=Refer to an external DTD.
_UI_LABEL_BROWSE=Browse...

!presentation/NotationsTable.java
_UI_COLUMN_NOTATION_NAME=Notation Name
_UI_COLUMN_DECLARATION=Declaration

!GroupContentWindow
_UI_GROUP_MODEL_GROUP=Model group
_UI_GROUP_CONNECTOR=Connector
_UI_GROUP_MODEL_GROUP_OCCURRENCE=Occurrence
_UI_RADIO_SEQUENCE=Sequence (,)
_UI_RADIO_CHOICE=Choice (|)
_UI_LABEL_CONTENT_MODEL_TYPE=Content model type:

!EntitiesTable
_UI_COLUMN_ENTITY_NAME=Entity Name
_UI_COLUMN_TYPE=Type
_UI_COLUMN_DECLARATION=Declaration

!AddNotationAction
_UI_DEFAULT_NOTATION=Notation
_UI_ACTION_ADD_NOTATION=Add &Notation

!ElementsTable
_UI_COLUMN_ELEMENT_NAME=Element Name
_UI_COLUMN_CONTENT_MODEL=Content Model
_UI_COLUMN_ATTRIBUTES=Attributes

!ValidateDTDAction
_UI_MSGBOX_DTD_VALID_TITLE=Validation Successful
_UI_MSGBOX_DTD_VALID_TEXT=The DTD file is valid.

!NotationWindow
_UI_LABEL_NOTATION_INFORMATION=Notation information
_UI_LABEL_NOTATION_NAME=Name:
_UI_LABEL_NOTATION_SYSTEM_ID=System ID:
_UI_LABEL_NOTATION_PUBLIC_ID=Public ID:
_UI_LABEL_NOTATION_COMMENT=Comment

!ParameterEntityReferenceWindow
_UI_GROUP_EXTERNAL_PARM_ENTITY_REF=External parameter entity reference
_UI_LABEL_ENTITY_NAME=Entity name:
_UI_LABEL_REFERENCED_FILE=Referenced file:

!InputSelectionPage (HTMLFormWizard)
_UI_INPUT_SEL_PAGE_TITLE=Form Input Selection
_UI_INPUT_SEL_PAGE_DESC=Select the form input fields to be generated

!HTMLFormWizard (HTMLFormWizard)
_UI_HTML_WIZARD_TITLE=HTML Form Creation Wizard

! ParameterEntityReferenceWindow
_UI_BUTTON_DETAILS=Details...

!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

!DTDValidator
_UI_DTD_VALIDATOR=DTD Validator

!======================================================================================
!
! Here is the list of Error strings that have message IDs - make sure they are unique
!  Range for DTDEditor messageIDs: IWAX0201 - IWAX0400
!
!======================================================================================
_ERROR_MIN_ONE_XML_FILE=IWAK0091E At least one XML File must be added
_ERROR_MIN_ONE_XML_FILE_FOR_OP=IWAK0092E At least one XML file is required to perform the operation.
_ERROR_NO_FILENAME=IWAK0093E Enter a file name
_ERROR_FILE_DOES_NOT_EXIST=IWAK0094E File does not exist
_ERROR_FILENAME_INVALID=IWAK0095E Invalid file name
_ERROR_FILENAME_MUST_END_DTD=IWAK0096E The file name must end in .dtd
_ERROR_TITLE_GENERATE_DTD_FAILED=IWAK0097E Generate DTD failed
_ERROR_MSG_GENERATE_DTD_FAILED=IWAK0098E Errors were encountered while generating the DTD.

_ERROR_INVALID_NAME_SPACE=IWAK0099E Name field cannot contain a space
_ERROR_VALIDATE_FAILED=IWAK0100E Validation failed
_ERROR_DTD_INVALID=IWAK0101E The DTD file is invalid.  Please check the Tasks view for more details.
_ERROR_LIMITE_EXCEEDED=IWAK0102E The DTD file is not valid.  The message limit for the Tasks view has been exceeded.  Please increase the limit and try again.

_ERROR_TITLE_GENERATE_JAVABEAN_FAILED=IWAK0103E Generate Java Beans failed
_ERROR_MSG_GENERATE_JAVABEAN_FAILED=IWAK0104E Errors were encountered while generating the Java Beans.
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
