# 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-2006 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.

#CertificationPanel
TTL_CertifiedWebSite=\u4e0d\u660e\u306a\u8a8d\u8a3c\u6a5f\u95a2\u306b\u3088\u3063\u3066\u8a8d\u8a3c\u3055\u308c\u305fWeb\u30b5\u30a4\u30c8
LBL_acceptCertificate=\u3053\u306e\u8a3c\u660e\u66f8\u3092\u53d7\u3051\u5165\u308c\u307e\u3059\u304b?
LBL_unableToVerify=<html>\u4fe1\u983c\u3067\u304d\u308b\u30b5\u30a4\u30c8\u3068\u3057\u3066\u306e"<b>{0}</b>"\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u691c\u67fb\u3067\u304d\u307e\u305b\u3093\u3002</html>
LBL_issuedTo=\u767a\u884c\u5148:
LBL_issuedBy=\u767a\u884c\u5143:
LBL_Validity=\u59a5\u5f53\u6027:
LBL_CommonName=\u5171\u901a\u540d[CN]:
LBL_Organization=\u7d44\u7e54[O]:
LBL_OrganizationalUnit=\u7d44\u7e54\u5358\u4f4d[OU]:
LBL_Location=\u5834\u6240[L]:
LBL_State=\u90fd\u9053\u5e9c\u770c[ST]:
LBL_Country=\u56fd[C]:
LBL_SerialNo=\u30b7\u30ea\u30a2\u30eb\u756a\u53f7:
LBL_PublicKeyAlg=\u516c\u958b\u9375\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0:
LBL_IssuedOn=\u767a\u884c\u65e5:
LBL_ExpiresOn=\u6709\u52b9\u671f\u9650:
TXT_NotSpecified=<\u8a3c\u660e\u66f8\u306b\u542b\u307e\u308c\u306a\u3044>
TXT_CannotCompute=<\u8a08\u7b97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f>

ERR_NotTrustedCertificate=\u8a3c\u660e\u66f8\u306fIDE\u306eTrustManager\u306b\u4fe1\u983c\u3055\u308c\u3066\u3044\u307e\u305b\u3093

EXCEPTION_CYCLIC_REFERENCE_INDICATOR=\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u9577\u3055\u304c\u540c\u3058\u3067\u3042\u308b\u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u7121\u8996\u3057\u307e\u3059\u3002
EXCEPTION_DIRECTORY_ALREADY_EXISTS=\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u540c\u3058\u540d\u524d\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059

LBL_PROGRESSBAR_Retrieve_XML=XML\u3092\u53d6\u5f97

MSG_unknown_host_p1=\u4e0d\u660e\u306a\u30db\u30b9\u30c8: 

MSG_unknownhost_p2=URL\u5165\u529b\u30ea\u30bd\u30fc\u30b9 

MSG_unknown_file=\u6307\u5b9a\u3057\u305f\u30a2\u30c9\u30ec\u30b9\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}

MSG_general_io_error=\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}

#{0} error message
MSG_Error_str=\n\u30a8\u30e9\u30fc: {0}

#{0} reference to another location
#{1} document containing reference
MSG_retrieving_location_found_in=\u53d6\u5f97\u5834\u6240: {0}\n\t\u53d6\u5f97\u5148\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8: {1}
MSG_retrieving_location=\u5834\u6240\u3092\u53d6\u5f97\u4e2d: {0}\n

#{0} url being retrieved
#{1} local location where file is saved
MSG_retrieved_saved_at=\t\u53d6\u5f97: {0}\n\t\u4fdd\u5b58\u5148: {1}
TITLE_retriever_output_tab_title=\u53d6\u5f97\u7d50\u679c
LBL_FIngerprint=\u30d5\u30a3\u30f3\u30ac\u30fb\u30d7\u30ea\u30f3\u30c8:

