###############################################################################
# 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
#     
###############################################################################
## The following line is a sample XML document.  Please translate only the following parts:  
## begin color definitions
## Normal text content.
Sample_XML_doc=<?xml version=\"1.0\"?>\n<?customProcessingInstruction\n\tXML processor specific\n\tcontent ?>\n<!DOCTYPE colors\n\tPUBLIC \"//IBM/XML/COLORS/\" \"colors.dtd\">\n<colors>\n\t<!-- begin color definitions -->\n\t<color name=\"plaintext\" foreground=\"#000000\"\n\t\tbackground=\"#D4D0C8\" />\n\t<color name=\"bold\" foreground=\"#000000\"\n\t\tbackground=\"#B3ACA0\" />\n\t<![CDATA[<123456789>]]>\n\tNormal text content.\n\t<color name=\"inverse\" foreground=\"#F0F0F0\"\n\t\tbackground=\"#D4D0C8\" />\n\n</colors>\n
Comment_Delimiters_UI_=Comment Delimiters
Comment_Content_UI_=Comment Content
Tag_Delimiters_UI_=Tag Delimiters
Tag_Names_UI_=Tag Names
Attribute_Names_UI_=Attribute Names
Attribute_Values_UI_=Attribute Values
Declaration_Delimiters_UI_=Declaration Delimiters
Content_UI_=Content
## on the following 2 lines, do not translate CDATA
CDATA_Delimiters_UI_=CDATA Delimiters
CDATA_Content_UI_=CDATA Content
Processing_Instruction_Del_UI_=Processing Instruction Delimiters
Processing_Instruction_Con_UI__UI_=Processing Instruction Content
## on the following line solely translate:  Name
DOCTYPE_Name_UI_=DOCTYPE Name
## on the following line solely translate:  Keyword
DOCTYPE_SYSTEM/PUBLIC_Keyw_UI_=DOCTYPE SYSTEM/PUBLIC Keyword
## on the following line solely translate:  Public Reference
DOCTYPE_Public_Reference_UI_=DOCTYPE Public Reference
## on the following line solely translate:  System Reference
DOCTYPE_System_Reference_UI_=DOCTYPE System Reference
# XML Common UI 
# Constants for strings

NEW=New
DELETE=Remove
ADD_TEXT=Add Text
ADD_CDATA_SECTION=Add CDATA Section
ADD_COMMENT=Add Commen&t
ADD_PROCESSING_INSTRUCTION=Add Processing Instruction

_UI_MENU_ADD_AFTER=Add &After
_UI_MENU_ADD_ATTRIBUTE=Add A&ttribute
_UI_MENU_ADD_BEFORE=Add &Before
_UI_MENU_ADD_CHILD=Add &Child
_UI_MENU_REMOVE=Re&move
_UI_MENU_REPLACE_WITH=Re&place With
_UI_MENU_ADD_DOCTYPE=Add DOCTYPE...
_UI_MENU_EDIT_DOCTYPE=Edit DOCTYPE...
_UI_MENU_ADD_GRAMMAR_INFORMATION=Add Grammar Information
_UI_MENU_VALIDATE_XML=Validate XML File
_UI_LABEL_UNDO_ADD_DESCRIPTION=Add
_UI_LABEL_UNDO_REPLACE_DESCRIPTION=Replace
_UI_LABEL_EDIT_DOCTYPE=Edit DOCTYPE
_UI_INFO_EXPAND_ALL=IWAK0108I Expand All
_UI_INFO_COLLAPSE_ALL=IWAK0109I Collapse All

_UI_MENU_ADD_DTD_INFORMATION=Add DTD Information...
_UI_MENU_ADD_SCHEMA_INFORMATION=Add Schema Information...
_UI_MENU_EDIT_SCHEMA_INFORMATION=Edit &Schema Information...
_UI_MENU_EDIT_PROCESSING_INSTRUCTION=Edit Process&ing Instruction...
_UI_MENU_EDIT_NAMESPACES=Edit &Namespaces...

_UI_MENU_ADD_DTD_INFORMATION_TITLE=Add DTD Information
_UI_MENU_EDIT_PROCESSING_INSTRUCTION_TITLE=Edit Processing Instruction
_UI_MENU_EDIT_SCHEMA_INFORMATION_TITLE=Edit Schema Information

_UI_MENU_NEW_ATTRIBUTE=&New Attribute...
_UI_MENU_NEW_ATTRIBUTE_TITLE=New Attribute
_UI_MENU_EDIT_ATTRIBUTE=Edit Attribute...
_UI_MENU_EDIT_ATTRIBUTE_TITLE=Edit Attribute
_UI_MENU_NEW_ELEMENT=New &Element...
_UI_MENU_NEW_ELEMENT_TITLE=New Element
_UI_MENU_RENAME=R&ename
_UI_MENU_RENAME_TITLE=Rename
_UI_LABEL_ELEMENT_NAME=Element name:
_UI_LABEL_LOADING_GRAMMAR=Loading grammar:

_UI_MENU_ADD_COMMENT=Add Comment
_UI_MENU_ADD_PROCESSING_INSTRUCTION=Add Processing Instruction
_UI_MENU_ADD_CDATA_SECTION=Add CDATA Section
_UI_MENU_ADD_PCDATA=Add #PCDATA;

_UI_MENU_COMMENT=C&omment
_UI_MENU_PROCESSING_INSTRUCTION=P&rocessing Instruction
_UI_MENU_CDATA_SECTION=CDATA Section
_UI_MENU_PCDATA=#PC&DATA;

_UI_MENU_ADD=Add

_UI_COMMENT_VALUE=comment
_UI_PI_TARGET_VALUE=target
_UI_PI_DATA_VALUE=data
_UI_LABEL_ROOT_ELEMENT_VALUE=RootElement

_UI_LABEL_TARGET_COLON=Target:
_UI_LABEL_DATA_COLON=Data:
_UI_LABEL_ROOT_ELEMENT_NAME_COLON=Root element name:
_UI_LABEL_PUBLIC_ID_COLON=Public ID:
_UI_LABEL_SYSTEM_ID_COLON=System ID:
_UI_LABEL_BROWSE=Browse...
_UI_LABEL_SELECT_XML_CATALOG_ENTRY=Select XML Catalog Entry
_UI_LABEL_SPECIFY_SYSTEM_ID=Specify System ID
_UI_LABEL_SELECT_FILE=Select File

_UI_LABEL_KEY=Key
_UI_LABEL_URI=URI:
_UI_LABEL_XML_CATALOG_COLON=XML Catalog
_UI_LABEL_NAMESPACE_NAME=Namespace Name
_UI_LABEL_LOCATION_HINT=Location Hint
_UI_LABEL_PREFIX=Prefix
_UI_LABEL_NAMESPACE_NAME_COLON=Namespace Name:
_UI_LABEL_LOCATION_HINT_COLON=Location Hint:
_UI_LABEL_PREFIX_COLON=Prefix:
_UI_NO_NAMESPACE_NAME=<no namespace name>
_UI_NO_PREFIX=<no prefix>

_UI_LABEL_XML_SCHEMA_INFORMATION=XML Schema Information
_UI_LABEL_NAMESPACE_INFORMATION=Namespace Information

_UI_LABEL_NAME_COLON=Name:
_UI_LABEL_VALUE_COLON=Value:

_UI_BUTTON_DELETE=Delete
_UI_BUTTON_NEW=New...
_UI_BUTTON_EDIT=Edit...

_UI_LABEL_NEW_NAMESPACE_INFORMATION=New Namespace Information
_UI_LABEL_EDIT_NAMESPACE_INFORMATION=Edit Namespace Information

#
# Assign links to an XML file
#
_UI_WORK_BENCH=Workbench Files...
_UI_FILE_SYSTEM=Import Files...
_UI_ASSIGN_XSL=Assign An XSL Stylesheet To The XML File
_UI_ASSIGN_DTD=Assign A DTD file To The XML File
_UI_ASSIGN_XSD=Assign An XML schema To The XML File
_UI_SELECT_XSL_TITLE=Select an XSL File
_UI_SELECT_XSL_DESC=Select an XSL file from the workbench.

_UI_ASSIGN=Assign
_UI_XSD=XML Schema...
_UI_DTD=DTD...
_UI_XSL=XSL Stylesheet...

# XMLValidator.java
_UI_XML_VALIDATOR=XML Validator
# SelectFileOrXMLCatalogIdPanel.java

_UI_RADIO_BUTTON_SELECT_FROM_WORKSPACE=Select file from workbench
_UI_RADIO_BUTTON_SELECT_FROM_CATALOG=Select XML Catalog entry

_UI_WARNING_TITLE_ROOT_ELEMENT_REQUIRED=Root Element Required
_UI_WARNING_DOCUMENT_REQUIRES_ROOT=The document requires a root element in order to add schema information.
_UI_WARNING_MORE_THAN_ONE_NS_WITH_NAME=More than one namespace has been specified with the namespace name :
_UI_WARNING_MORE_THAN_ONE_NS_WITHOUT_NAME=More than one schema has been specified without a namespace name
_UI_WARNING_MORE_THAN_ONE_NS_WITHOUT_PREFIX=More than one namespace has been specificed without a prefix
_UI_WARNING_MORE_THAN_ONE_NS_WITH_PREFIX=More than one namespace has been specified with the prefix :
_UI_WARNING_SCHEMA_CAN_NOT_BE_LOCATED=The specified schema can not be located :
_UI_WARNING_LOCATION_HINT_NOT_SPECIFIED=A location hint has not been specified for the namespace with name
_UI_WARNING_NAMESPACE_NAME_NOT_SPECIFIED=A name must be specified for the namespace with prefix :
_UI_WARNING_PREFIX_NOT_SPECIFIED=A prefix must be specified for the namespace named :
_UI_WARNING_ROOT_ELEMENT_MUST_BE_SPECIFIED=A root element name must be specified.
_UI_WARNING_SYSTEM_ID_MUST_BE_SPECIFIED=A system ID must be specified.

_UI_INVALID_NAME=Invalid name

# String used for editing namespaces (org.eclipse.wst.xml.ui.nsedit)
_UI_ENTER_REQ_PREFIX_AND_NAMESPACE=Enter the required prefix and namespace URI for the namespace declaration.
_UI_SELECT_REGISTERED_NAMESPACES=Select From Registered Namespaces
_UI_SPECIFY_NEW_NAMESPACE=Specify New Namespace
_UI_SELECT_NAMESPACE_TO_ADD=Select the namespace declarations to add.
_UI_ADD_NAMESPACE_DECLARATIONS=Add Namespace Declarations
_UI_NAMESPACE_DECLARATIONS=Namespace Declarations
_UI_TARGET_NAMESPACE=Target Namespace


#======================================================================================
#
# Here is the list of Error string that have message IDs - make sure they are unique
# Range for XMLBuilder messageIDs: IWAX1601E - IWAX1800E
# Since we'll be combing these plugins at some later point we'll use the same range
# and be carefull not to clobber those defined in xmlbuilder's plugin.properties
#======================================================================================
_ERROR_XML_ATTRIBUTE_ALREADY_EXISTS=IWAK0110E The element already has an attribute with this name.

#
error_message_goes_here=error message goes here
SurroundWithNewElementQuickAssistProposal.0=Surround with new element
SurroundWithNewElementQuickAssistProposal.1=Surround with new element
RenameInFileQuickAssistProposal.0=Link all references for a rename in file (does not change references in other files)
RenameInFileQuickAssistProposal.1=Rename in file
InsertRequiredAttrsQuickAssistProposal.0=Insert required attributes
InsertRequiredAttrsQuickAssistProposal.1=Insert required attributes
EncodingSettings.0=IANA:
EncodingSettings.1=Encoding:
TemplateContextTypeXMLTag.0=XML Tags
TemplateContextTypeXMLAttributeValue.0=XML Attribute Values
TemplateContextTypeXMLAttribute.0=XML Attributes
TemplateContextTypeXML.0=All XML
DragNodeCommand.0=Move
CommonEditNamespacesDialog.0=Add...
JFaceNodeAdapter.1=Refresh Property Sheet
QuickFixProcessorXML.0=Remove empty tag
QuickFixProcessorXML.1=Change to empty-element tag
QuickFixProcessorXML.2=Remove this tag
QuickFixProcessorXML.3=Insert end tag before first child element
QuickFixProcessorXML.4=Insert end tag at end of element
QuickFixProcessorXML.5=Remove attributes in end tag
QuickFixProcessorXML.6=Insert default attribute value
QuickFixProcessorXML.7=Remove this attribute
QuickFixProcessorXML.8=Remove spaces before tag name
QuickFixProcessorXML.9=Remove spaces before processing instruction
QuickFixProcessorXML.10=Remove namespace in processing instruction
QuickFixProcessorXML.11=Remove this element
QuickFixProcessorXML.12=Remove this attribute value
QuickFixProcessorXML.13=Insert required attribute
QuickFixProcessorXML.14=Quote attribute value
QuickFixProcessorXML.15=Insert closing bracket
QuickFixProcessorXML.16=Remove this attribute and its value
XMLPropertySourceAdapter.0=Attributes

WorkbenchDefaultEncodingSettings.0=Use workbench encoding
