# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 2012 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]"
#
# 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.
#
# Contributor(s):
#
# Portions Copyrighted 2012 Sun Microsystems, Inc.

AddPropertyPanel.nameLabel.text=\u540d\u79f0(&N):
AddPropertyPanel.nameTextField.text=\u5b57\u7b26\u4e32
AddPropertyPanel.typeLabel.text=\u7c7b\u578b(&T):
AddPropertyPanel.browseTypeButton.text=\u6d4f\u89c8(&B)...
AddPropertyPanel.generateJavadocCheckBox.text=\u751f\u6210 Javadoc(&J)

AddPropertyPanel.privateRadioButton.text=\u79c1\u6709(&P)
AddPropertyPanel.protectedRadioButton.text=\u53d7\u4fdd\u62a4(&O)
AddPropertyPanel.publicRadioButton.text=\u516c\u5171(&U)
AddPropertyPanel.packageRadioButton.text=\u5305(&A)
AddPropertyPanel.browseTypeButton.toolTipText=\u6d4f\u89c8\u5c1a\u672a\u5b9e\u73b0\u7684\u7c7b\u578b

CAP_AddProperty=\u6dfb\u52a0\u5c5e\u6027
DN_AddFxProperty=\u6dfb\u52a0 Java FX \u5c5e\u6027...
ERR_CannotApplyGuarded=\u7531\u4e8e\u5757\u53d7\u5230\u4fdd\u62a4\u800c\u65e0\u6cd5\u5e94\u7528\u66f4\u6539
ERR_CannotFindOriginalClass=\u627e\u4e0d\u5230\u539f\u59cb\u7c7b
ERR_FieldIsEmpty=\u5b57\u6bb5\u540d\u4e3a\u7a7a
ERR_FieldAlreadyExists=\u5b57\u6bb5{0}\u5df2\u5b58\u5728
ERR_TypeIsEmpty=\u5c5e\u6027\u7c7b\u578b\u4e3a\u7a7a
ERR_BoundIsEmpty=\u7ed1\u5b9a\u7684\u5c5e\u6027\u4e3a\u7a7a
LBL_ButtonCancel=\u53d6\u6d88
LBL_ButtonOK=\u786e\u5b9a
WARN_FinalPropertyRequiresInitilizer=\u4e3a\u6700\u7ec8\u5c5e\u6027\u6307\u5b9a\u521d\u59cb\u5316\u7a0b\u5e8f\u8868\u8fbe\u5f0f
WARN_CannotPCS=\u65e0\u6cd5\u4e3a\u9759\u6001\u5c5e\u6027\u751f\u6210\u5c5e\u6027\u66f4\u6539\u652f\u6301
WARN_CannotVCS=\u65e0\u6cd5\u4e3a\u9759\u6001\u5c5e\u6027\u751f\u6210\u53ef\u5426\u51b3\u5c5e\u6027\u66f4\u6539\u652f\u6301


AddPropertyPanel.AccessibleContext.accessibleName=\u6dfb\u52a0\u5c5e\u6027
AddPropertyPanel.AccessibleContext.accessibleDescription=\u6dfb\u52a0\u5c5e\u6027

AddPropertyPanel.writableRadioButton.text=\u53ef\u5199\u5165(&W)
AddPropertyPanel.readonlyRadioButton.text=\u53ea\u8bfb(&R)

