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

#FormatStringAudit
FormatStringAudit.name=\u65e0\u6548\u7684\u683c\u5f0f\u5b57\u7b26\u4e32
FormatStringAudit.description=\u65e0\u6548\u7684\u683c\u5f0f\u5b57\u7b26\u4e32
FormatStringAudit.message.argnum=\u53c2\u6570\u4e2a\u6570\u9519\u8bef
FormatStringAudit.message.type=\u53c2\u6570\u7c7b\u578b "{0}" \u4e0e\u8f6c\u6362\u8bf4\u660e\u7b26 "{1}" \u4e0d\u5339\u914d
FormatStringAudit.message.wildcard={0}\u5fc5\u987b\u662f int \u7c7b\u578b
FormatStringAudit.message.notexist=\u8f6c\u6362\u8bf4\u660e\u7b26 "{0}" \u65e0\u6548
FormatStringAudit.message.incompatibleFlag=\u4f7f\u7528\u4e86\u4e0e\u8f6c\u6362\u8bf4\u660e\u7b26 "{1}" \u4e0d\u517c\u5bb9\u7684\u6807\u5fd7\u5b57\u7b26 "{0}"
FormatStringAudit.message.incompatibleLength=\u4f7f\u7528\u4e86\u4e0e\u8f6c\u6362\u8bf4\u660e\u7b26 "{1}" \u4e0d\u517c\u5bb9\u7684\u957f\u5ea6\u4fee\u9970\u7b26 "{0}"
FormatStringAudit.fix.flag=\u5c06 %{0} \u66ff\u6362\u4e3a %{1}

