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

INFO_Not_Categorized_1=Not Categorized

## CSS Preferences -- source ##
PrefsLabel_WrappingWithoutAttr=Disable wrapping in style &attribute of HTML
PrefsLabel_WrappingInsertLineBreak=Insert &line break between properties

PrefsLabel_CaseGroup=Capitalization style
PrefsLabel_CaseIdent=Identifier:
PrefsLabel_CasePropName=Property name:
PrefsLabel_CasePropValue=Property value:
PrefsLabel_SelectorTagName=Type selector:

PrefsLabel_CaseIdentUpper=&Uppercase
PrefsLabel_CaseIdentLower=L&owercase
PrefsLabel_CasePropNameUpper=U&ppercase
PrefsLabel_CasePropNameLower=Lo&wercase
PrefsLabel_CasePropValueUpper=Upp&ercase
PrefsLabel_CasePropValueLower=Lowe&rcase
PrefsLabel_SelectorTagNameUpper=Upper&case
PrefsLabel_SelectorTagNameLower=Lowerca&se

## CSS Preferences -- color ##

## The following line is a sample CSS document.  Please translate only the following parts:
## Sample Styles
PrefsLabel_ColorSample=@import url("../sample2.css");\n\n/* Sample Styles */\n\nBODY {\n\tcolor : black;\n\tbackground-color : rgb(181, 253, 211);\n\ttext-align : center;\n\tfont-family : "Heisei Mincho W3", serif\n}\n\n#content > div *.links a[href~="http://"]:hover {\n\ttext-decoration : underline;\n}\n\n@page :left { margin-left : 4cm }\n\n@media aural {\n\tP.heidi {\n\t\tazimuth : center-left;\n\t\televation : 12.3deg;\n\t\tpause : 30ms 1.6s\n\t}\n}\n

PrefsLabel_ColorNormal=Default
PrefsLabel_ColorAtmarkRule=At-Rule
PrefsLabel_ColorSelector=Type Selector
PrefsLabel_ColorCombinator=Combinator
PrefsLabel_ColorUniversal=Universal Selector
PrefsLabel_ColorId=Id Selector
PrefsLabel_ColorPseudoClass=Pseudo-class
PrefsLabel_ColorClass=Class Selector
PrefsLabel_ColorMedia=Media Name
PrefsLabel_ColorComment=Comment
PrefsLabel_ColorPropertyName=Property Name
PrefsLabel_ColorPropertyValue=Property Value
PrefsLabel_ColorUri=URI
PrefsLabel_ColorString=Quoted String
PrefsLabel_ColorColon=Property Delimiter
PrefsLabel_ColorSemiColon=Semicolon
PrefsLabel_ColorCurlyBrace=Curly Brace
PrefsLabel_ColorError=Error
PrefsLabel_ColorAttrDelimiter=Attribute Selector Delimiter
PrefsLabel_ColorAttrName=Attribute Name
PrefsLabel_ColorAttrValue=Attribute Value
PrefsLabel_ColorAttrOperator=Attribute Selector Operator
#
SortAction_0=Sort
#
_UI_WIZARD_NEW_TITLE = New CSS File
_UI_WIZARD_NEW_HEADING = CSS
_UI_WIZARD_NEW_DESCRIPTION = Create a new CSS file.
_ERROR_FILENAME_MUST_END_CSS = The file name must end in one of the following extensions {0}.
_WARNING_FOLDER_MUST_BE_INSIDE_WEB_CONTENT = Files created outside of the Web Content folder will not be included in your deployed Web application. 
#
Title_InvalidValue=Invalid Value
Message_InvalidValue=Invalid property value.
# Copied from sse.ui
FormatMenu_label=F&ormat
CleanupDocument_label=C&leanup Document...
CleanupDocument_tooltip=Cleanup Document
CleanupDocument_description=Cleanup Document
UI_none=none
Cleanup_UI_=Cleanup
CSS_Cleanup_UI_=CSS Cleanup
AddBlockComment_tooltip=Add Block Comment
RemoveBlockComment_tooltip=Remove Block Comment
ToggleComment_tooltip=Toggle Comment
Identifier_case__UI_=Identifier case:
Property_name_case__UI_=Property name case:
Property_value_case__UI_=Property value case:
Selector_tag_name_case__UI_=Selector tag name case:
Quote_values_UI_=Quote values
Format_source_UI_=&Format source
As_is_UI_=As-is
Lower_UI_=Lower
Upper_UI_=Upper
SourceMenu_label=&Source
Formatting_UI_=Formatting
Line_width__UI_=Line &width:
Indent_using_tabs_=&Indent using tabs
Indent_using_spaces=I&ndent using spaces
Indentation_size=In&dentation size:
Indentation_size_tip=Indentation size
StructureSelectEnclosing_label=&Enclosing Element
StructureSelectEnclosing_tooltip=Expand selection to include enclosing element
StructureSelectEnclosing_description=Expand selection to include enclosing element
StructureSelectNext_label=&Next Element
StructureSelectNext_tooltip=Expand selection to include next sibling
StructureSelectNext_description=Expand selection to include next sibling
StructureSelectPrevious_label=&Previous Element
StructureSelectPrevious_tooltip=Expand selection to include previous sibling
StructureSelectPrevious_description=Expand selection to include previous sibling
##
Creating_files_encoding=Creating files encoding preference
ResourceGroup_nameExists = The same name already exists.
NewCSSTemplatesWizardPage_0=Select CSS Template
NewCSSTemplatesWizardPage_1=Select a template as initial content in the CSS page.
NewCSSTemplatesWizardPage_2=Name
NewCSSTemplatesWizardPage_3=Description
NewCSSTemplatesWizardPage_4=&Use CSS Template
NewCSSTemplatesWizardPage_5=&Preview:
NewCSSTemplatesWizardPage_6=Templates are 'New CSS' templates found in the <a>CSS Templates</a> preference page.
NewCSSTemplatesWizardPage_7=&Templates:
# CSS Content Settings
CSSContentSettingsPropertyPage_0=The type of CSS to use.  The project setting is used if you specify "none."
CSSContentSettingsPropertyPage_1=CSS Profile:
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=CSS editing preferences.  Note that some preferences may be set on the <a>{0}</a> preference page.
