# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common
# Development and Distribution License("CDDL") (collectively, the
# "License"). You may not use this file except in compliance with the
# License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html
# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
# specific language governing permissions and limitations under the
# License.  When distributing the software, include this License Header
# Notice in each file and include the License file at
# nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that
# accompanied this code. If applicable, add the following below the
# License Header, with the fields enclosed by brackets [] replaced by
# your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original
# Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
# Microsystems, Inc. All Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL
# or only the GPL Version 2, indicate your decision by adding
# "[Contributor] elects to include this software in this distribution
# under the [CDDL or GPL Version 2] license." If you do not indicate a
# single choice of license, a recipient has the option to distribute
# your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above.
# However, if you add GPL Version 2 code and therefore, elected the GPL
# Version 2 license, then the option applies only if the new code is
# made subject to such option by the copyright holder.

# Sample ResourceBundle properties file

RULE_LIST_ACTION=\u89c4\u5219\u5217\u8868\u64cd\u4f5c

STYLE_BUILDER_VIEW_ACTION=\u89c4\u5219\u5217\u8868\u64cd\u4f5c

VIEW_STYLE_BUILDER_TOOLTIP=\u5f00\u542f/\u5173\u95ed\u6837\u5f0f\u6784\u5efa\u5668
OK=\u786e\u5b9a
CANCEL=\u53d6\u6d88
STYLE_RULE_EDITOR_TITLE=\u6837\u5f0f\u89c4\u5219\u7f16\u8f91\u5668



RULE_TYPE_PANEL_TITLE=\u9009\u62e9\u89c4\u5219\u7c7b\u578b


RULE_PREVIEW_LABEL=\u9884\u89c8(&P)


ELEMENT_ID_LBL=\u5143\u7d20 ID: 


CLASS_NAME_LBL=\u7c7b: 


HTML_ELELEMT=HTML \u5143\u7d20:


REMOVE_RULE_TOOL_TIP=\u5220\u9664\u89c4\u5219





ADD_RULE_TOOL_TIP=\u6dfb\u52a0\u89c4\u5219





MOVE_RULE_DOWN_LBL=\u4e0b\u79fb


MOVE_RULE_UP_LBL=\u4e0a\u79fb


RULE_HIERARCHY_TITLE=\u6837\u5f0f\u89c4\u5219\u5206\u5c42\u7ed3\u6784


No_preview_available=\u65e0\u53ef\u7528\u7684\u9884\u89c8





Create_Rule=\u521b\u5efa\u89c4\u5219























CLASS_RULE_TYPE_ACCESSIBLE_DESCRIPTION=\u7c7b CSS \u89c4\u5219\u7c7b\u578b


HTML_ELEMENT_RULE_TYPE_ACCESSIBLE_DESCRIPTION=HTML \u5143\u7d20 CSS \u89c4\u5219\u7c7b\u578b


ELEMENT_ID_RULE_TYPE_ACCESSIBLE_DESCRIPTION=\u5143\u7d20 ID CSS \u89c4\u5219\u7c7b\u578b


UP_RULE_BUTTON_TOOLTIP=\u5728\u5217\u8868\u4e2d\u4e0a\u79fb\u89c4\u5219


DOWN_RULE_BUTTON_TOOLTIP=\u5728\u5217\u8868\u4e2d\u4e0b\u79fb\u89c4\u5219


STYLE_RULE_LIST_ACCESSIBLE_NAME=\u6837\u5f0f\u89c4\u5219\u5c42\u53e0\u5217\u8868


STYLE_RULE_LIST_ACCESSIBLE_DESC=\u6b64\u5217\u8868\u5305\u542b\u6837\u5f0f\u89c4\u5219\u5c42\u53e0\u5217\u8868


CLASS_TEXT_FIELD_ACCESSIBLE_NAME=\u201c\u6837\u5f0f\u7c7b\u540d\u79f0\u201d\u6587\u672c\u5b57\u6bb5


CLASS_TEXT_FIELD_ACCESSIBLE_DESC=\u7528\u4e8e\u8f93\u5165 CSS \u6837\u5f0f\u7c7b\u540d\u79f0\u7684\u6587\u672c\u5b57\u6bb5


OPTIONAL_ELEMENT_TOOLTIP=\u53ef\u9009\u7684 HTML \u5143\u7d20


OPTIONAL_ELEMENT_ACCESSIBLE_DESC=\u8981\u9644\u52a0\u5728 CSS \u7c7b\u540d\u79f0\u4e4b\u524d\u7684\u53ef\u9009 HTML \u5143\u7d20


HTML_ELEMENT_ACCESSIBLE_NAME=HTML \u5143\u7d20\u5217\u8868


HTML_ELEMENT_ACCESSIBLE_DESC=\u6b64\u5217\u8868\u63d0\u4f9b\u4e86\u53ef\u4ee5\u6dfb\u52a0\u5230\u89c4\u5219\u5c42\u53e0\u5217\u8868\u4e2d\u7684 HTML \u5143\u7d20\u7684\u5217\u8868


ELEMENT_ID_TEXTFIELD_ACCESSIBLE_NAME=\u201c\u5143\u7d20 ID\u201d\u6587\u672c\u5b57\u6bb5


ELEMENT_ID_TEXTFIELD_ACCESSIBLE_DESC=\u7528\u4e8e\u8f93\u5165\u53ef\u4ee5\u6dfb\u52a0\u5230\u89c4\u5219\u5c42\u53e0\u5217\u8868\u4e2d\u7684\u5143\u7d20 ID \u7684\u6587\u672c\u5b57\u6bb5


PREVIEW_LABEL_ACCESSIBLE_DESC=\u7528\u4e8e\u663e\u793a\u6240\u7f16\u5199\u7684 CSS \u5c42\u53e0\u89c4\u5219\u5217\u8868\u7684\u9884\u89c8\u6807\u7b7e


## CSSDisplayer.java
TITLE_CSS_Check=CSS \u68c0\u67e5

## CSSWizardType.java
PROP_css_wizard_type_document=\u7c7b\u578b\u6587\u6863 (\u6682\u6302)
PROP_css_wizard_type_data=\u7c7b\u578b\u6570\u636e (\u6682\u6302)

## CheckStyleAction.java
TEXT_PART_CSS_checking=CSS \u68c0\u67e5
TEXT_PART_finished=\u5df2\u5b8c\u6210
TEXT_PART_finished_with_warnings=\u5df2\u5b8c\u6210, \u4f46\u6709\u8b66\u544a
TEXT_PART_failed=\u5931\u8d25
NAME_check_CSS=\u68c0\u67e5 CSS

## CopyStyleAction.java
Style-Comment=<!-- \u6b64\u6587\u6863\u7684\u5916\u89c2\u7531 href \u5c5e\u6027\u5f15\u7528\u7684 CSS \u9a71\u52a8\u3002\u8bf7\u8bbf\u95ee http://www.w3.org/TR/xml-stylesheet/ -->
MSG_Style_tag_in_clipboard=\u5df2\u7ecf\u5c06\u6837\u5f0f\u6807\u8bb0\u653e\u5728\u526a\u8d34\u677f\u4e0a
Copy-XML-Style=\u590d\u5236 XML \u6837\u5f0f
Copy-HTML-Style=\u590d\u5236 HTML \u6837\u5f0f

## XMLDisplayer.java
TITLE_XML_check_window=XML \u68c0\u67e5

