# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 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]"
#
# 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 2009 Sun Microsystems, Inc.

LBL_MANAGE_DEVICES=\u7ba1\u7406\u5361(&M)
LBL_DEVICES=\u5361(&C)
LBL_NO_PLATFORM_SELECTED=\u672a\u9009\u62e9\u5e73\u53f0
LBL_INVALID_PLATFORM_SELECTED=\u9009\u5b9a\u7684\u5e73\u53f0\u65e0\u6548
BadPlatformOrDevicePanel.jLabel1.text=<html>\u4e3a\u6b64\u9879\u76ee\u9009\u5b9a\u7684\u8fd0\u884c\u5e73\u53f0\u548c/\u6216\u5361\u4e0d\u5b58\u5728\u3002\u8bf7\u9009\u62e9\u66ff\u4ee3\u5e73\u53f0\u548c/\u6216\u5361, \u6216\u8005\u6dfb\u52a0\u65b0\u5e73\u53f0\u548c/\u6216\u5361\u3002
BadPlatformOrDevicePanel.jCheckBox1.text=\u4e0d\u518d\u663e\u793a\u6b64\u5bf9\u8bdd\u6846
LBL_SELECT_SERVER=\u9009\u62e9\u5361
TTL_JAVACARD_PLATFORM=\u5e73\u53f0
LBL_MANAGE_PLATFORMS=\u7ba1\u7406\u5e73\u53f0
MSG_BAD_CARD=\u5361\u5b9a\u4e49\u65e0\u6548
MSG_BAD_PLATFORM=\u5e73\u53f0\u65e0\u6548
ERR_EMPTY_AID=\u672a\u6307\u5b9a\u5c0f\u5e94\u7528\u7a0b\u5e8f AID

