###############################################################################
# Copyright (c) 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
###############################################################################
## The following line is a sample HTML document.  Please translate only the following parts:
## HTML Highlighting Preferences
## we need a flaming logo
Sample_HTML_doc=<!DOCTYPE HTML\n\tPUBLIC \"-//W3C/DTD/ HTML 4.01 Transitional//EN\"\n\t\"http://www.w3.org/TR/html4/loose.dtd\">\n<HTML>\n\t<HEAD>\n\t\t<META content=\"text/html\">\n\t\t<TITLE>HTML Highlighting Preferences</TITLE>\n\t</HEAD>\n<BODY>\n\t<!--\n\t\twe need a flaming logo!\n\t-->\n</BODY>\n</HTML>

HTMLFilesPreferencePage_0=Loading files...
#
_UI_WIZARD_NEW_TITLE = New HTML Page
_UI_WIZARD_NEW_HEADING = HTML Page
_UI_WIZARD_NEW_DESCRIPTION = Create a new HTML Page.
_ERROR_FILENAME_MUST_END_HTML = The file name must end in one of the following extensions {0}.
NewHTMLTemplatesWizardPage_0=Select HTML Template
NewHTMLTemplatesWizardPage_1=Select a template as initial content in the HTML page.
NewHTMLTemplatesWizardPage_2=Name
NewHTMLTemplatesWizardPage_3=Description
NewHTMLTemplatesWizardPage_4=Use HTML Template
NewHTMLTemplatesWizardPage_5=Preview
NewHTMLTemplatesWizardPage_6=Templates are 'New HTML' templates found in the <a>HTML Templates</a> preference page.
#
Creating_files_encoding=Creating files encoding preference
MESSAGE_HTML_VALIDATION_MESSAGE_UI_=HTML Syntax : {0}
# Copied from sse.ui
CleanupDocument_label=C&leanup Document...
CleanupDocument_tooltip=Cleanup Document
CleanupDocument_description=Cleanup Document
ToggleComment_label=Togg&le Comment
ToggleComment_tooltip=Toggle Comment
ToggleComment_description=Toggle Comment
AddBlockComment_label=Add &Block Comment
AddBlockComment_tooltip=Add Block Comment
AddBlockComment_description=Add Block Comment
RemoveBlockComment_label=Remove Bloc&k Comment
RemoveBlockComment_tooltip=Remove Block Comment
RemoveBlockComment_description=Remove Block Comment
FindOccurrences_label=O&ccurrences in File
Creating_files=Creating files
Encoding_desc=The following encoding will apply:
Preferred_markup_case_UI_=Preferred markup case for content assist, and code generation
Tag_names__UI_=Tag names:
Tag_names_Upper_case_UI_=&Uppercase
Tag_names_Lower_case_UI_=&Lowercase
Attribute_names__UI_=Attribute names:
Attribute_names_Upper_case_UI_=U&ppercase
Attribute_names_Lower_case_UI_=L&owercase
Cleanup_UI_=Cleanup
Tag_name_case_for_HTML_UI_=Tag name case for HTML:
Tag_name_case_As_is_UI_=&As-is
Tag_name_case_Lower_UI_=&Lower
Tag_name_case_Upper_UI_=&Upper
Attribute_name_case_for_HTML_UI_=Attribute name case for HTML:
Attribute_name_case_As_is_UI_=A&s-is
Attribute_name_case_Lower_UI_=L&ower
Attribute_name_case_Upper_UI_=U&pper
Insert_required_attributes_UI_=Insert &required attributes
Insert_missing_tags_UI_=&Insert missing tags
Quote_attribute_values_UI_=&Quote attribute values
Format_source_UI_=&Format source
Convert_EOL_codes_UI_=Convert line &delimiters to
EOL_Windows_UI=&Windows
EOL_Unix_UI=U&NIX
EOL_Mac_UI=&Mac

# web content settings
UI_Description_of_role_of_following_DOCTYPE=Use the following default document type when no DOCTYPE is declared in a file:
UI_Public_ID=Public ID:
UI_System_ID=System ID:
UI_none=none

# below are possibly unused strings that may be deleted
HTMLFilesPreferencePage_1=Add this suffix (if not specified):
HTMLFilesPreferencePage_2=Insert DOCTYPE declaration
HTMLFilesPreferencePage_3=Insert GENERATOR with META tag
# above are possibly unused strings that may be deleted
