# 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_SetViewAction_Name=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30fb\u30d3\u30e5\u30fc\u3092\u8a2d\u5b9a
LBL_Properties_Action=\u30d7\u30ed\u30d1\u30c6\u30a3

#Customizer provider
#{0} Name of the project
LBL_Customizer_Ok_Option=OK
LBL_Customizer_Cancel_Option=\u53d6\u6d88




ACS_Customizer_Ok_Option_A11YDesc=OK\u30dc\u30bf\u30f3
ACS_Customizer_Cancel_Option_A11YDesc=\u53d6\u6d88\u3057\u30dc\u30bf\u30f3

#Nodes in logical view
LBL_Node_Sources=\u30bd\u30fc\u30b9\u30fb\u30d1\u30c3\u30b1\u30fc\u30b8
LBL_Node_DocBase=Web\u30da\u30fc\u30b8
LBL_Node_Config=\u69cb\u6210\u30d5\u30a1\u30a4\u30eb
LBL_Node_WebModule=Web\u30e2\u30b8\u30e5\u30fc\u30eb
# Do not translate


#FolderListSettings
TXT_WebProjectFolderList=WebProjectFolderList

LBL_NoSelectedServerWarning_jLabel2=\u4ee5\u4e0b\u306e\u30ea\u30b9\u30c8\u304b\u30891\u3064\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
CTL_NoSelectedServerWarning_Title=\u8b66\u544a - \u30b5\u30fc\u30d0\u30fc\u9078\u629e

LBL_serveltExecutionUriAction=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u5b9f\u884cURI\u3092\u8a2d\u5b9a

TXT_missingServletMappings=web.xml\u3001\u307e\u305f\u306f{0}\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306eWebServlet\u6ce8\u91c8\u5185\u306b\u6307\u5b9a\u3055\u308c\u305f\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30fb\u30de\u30c3\u30d4\u30f3\u30b0\u304c\u3042\u308a\u307e\u305b\u3093\u3002

TTL_setServletExecutionUri=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u5b9f\u884cURI\u3092\u8a2d\u5b9a

LBL_setServletURI=<html>\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u5b9f\u884cURI\u3092\u9078\u629e\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30ea\u30af\u30a8\u30b9\u30c8\u30fb\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8ffd\u52a0\u3057\u307e\u3059:<br>e.g. <b>/flowerServlet?flower=rose&amp;color=red</b></html>



DESC_setServletURI=<html>\u5b9f\u884cURI\u306f\u3001\u5f8c\u3067\u300c\u30c4\u30fc\u30eb\u300d->\u300c\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u5b9f\u884cURI\u3092\u8a2d\u5b9a\u300d\u3092\u4f7f\u7528\u3057\u3066\u5909\u66f4\u3067\u304d\u307e\u3059\u3002</html>

A11Y_desc_setServletURI=\u3053\u306e\u30d1\u30cd\u30eb\u3067\u306f\u3001\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u5b9f\u884cURI\u3092\u9078\u629e\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u30fb\u30d1\u30e9\u30e1\u30fc\u30bf(\u4f8b: /flowerServlet?flower=rose&color=red)\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u5b9f\u884cURI\u306f\u3001\u5f8c\u3067\u300c\u30c4\u30fc\u30eb\u300d->\u300c\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u5b9f\u884cURI\u3092\u8a2d\u5b9a\u300d\u3092\u4f7f\u7528\u3057\u3066\u5909\u66f4\u3067\u304d\u307e\u3059\u3002

LBL_Refresh=\u30d5\u30a9\u30eb\u30c0\u3092\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5




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

HINT_project_root_node={0}\u5185\u306eWeb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8

LBL_No_Source_Groups_Found=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8{0}\u306e\u30bd\u30fc\u30b9\u30fb\u30eb\u30fc\u30c8\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3002

