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

#Actions
LBL_Properties_Action=\u30d7\u30ed\u30d1\u30c6\u30a3
LBL_AddProject_Action=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8ffd\u52a0...
LBL_AddLibrary_Action=\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8ffd\u52a0...
LBL_AddFolder_Action=JAR/\u30d5\u30a9\u30eb\u30c0\u306e\u8ffd\u52a0...

#FolderListSettings
TXT_AppClientProjectFolderList=AppClientProjectFolderList

#PhysicalViewProvider
CTL_LibrariesNode=\u30e9\u30a4\u30d6\u30e9\u30ea
CTL_TestLibrariesNode= \u30c6\u30b9\u30c8\u30fb\u30e9\u30a4\u30d6\u30e9\u30ea

#LibrariesNode

LBL_AddJar_DialogTitle=JAR/\u30d5\u30a9\u30eb\u30c0\u306e\u8ffd\u52a0
LBL_ZipJarFolderFilter=\u30af\u30e9\u30b9\u30d1\u30b9\u30fb\u30a8\u30f3\u30c8\u30ea(\u30d5\u30a9\u30eb\u30c0\u3001ZIP\u3001JAR\u30d5\u30a1\u30a4\u30eb)
LBL_AddLibrary=\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8ffd\u52a0

LBL_CustomizeCompile_Classpath_AddLibrary=\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8ffd\u52a0

#ShowJavadocAction
CTL_ShowJavadoc=Javadoc\u3092\u8868\u793a
TXT_NoJavadoc={0}\u306eJavadoc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002

#PlatformNode
FMT_BrokenPlatform=\u58ca\u308c\u3066\u3044\u308b\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0''{0}''
TXT_BrokenPlatform=\u58ca\u308c\u3066\u3044\u308b\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0

#ProjectNode


CTL_OpenProject=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u958b\u304f

#RemoveClassPathRootAction
CTL_RemoveProject=\u9664\u53bb
LBL_Node_ConfFiles=\u69cb\u6210\u30d5\u30a1\u30a4\u30eb

#J2eePlatformNode
LBL_J2eeServerMissing=<html><font color="#a40000">&lt;\u884c\u65b9\u4e0d\u660e\u306eJava EE\u30b5\u30fc\u30d0\u30fc&gt;</font></html>

HINT_project_root_node={0}\u5185\u306e\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30fb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8

