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

CreateSpringConfig.msg.invalid.dd=\u90e8\u7f72\u63cf\u8ff0\u7b26\u5305\u542b\u9519\u8bef, \u5fc5\u987b\u5728\u76f8\u5e94\u4f4d\u7f6e\u624b\u52a8\u914d\u7f6e Spring \u6846\u67b6!
JSFConfigurationPanelVisual.lbl.searching.libraries=\u6b63\u5728\u641c\u7d22\u5e93...
LBL_FrameworkName=Spring Web MVC
LBL_FrameworkDescription=Spring Web MVC
LBL_DispatcherMapping=\u5206\u6d3e\u7a0b\u5e8f\u6620\u5c04(&M):
LBL_DispatcherName=\u5206\u6d3e\u7a0b\u5e8f\u540d\u79f0(&N):
LBL_Configuration=\u914d\u7f6e
LBL_IncludeJstl=\u5305\u62ec JSTL(&J)
LBL_Libraries=\u5e93

LBL_DefaultGroup=\u9ed8\u8ba4\u7ec4

MSG_DispatcherNameIsEmpty=\u5fc5\u987b\u8f93\u5165\u5206\u6d3e\u7a0b\u5e8f\u540d\u79f0\u3002
MSG_ServletNameIsNotValid=\u4e3a web.xml \u8f93\u5165\u7684 servlet \u540d\u79f0\u662f\u65e0\u6548\u7684\u3002
MSG_DispatcherServletConfigFilenameIsNotValid=\u8f93\u5165\u7684\u6587\u4ef6\u540d\u5305\u542b\u65e0\u6548\u7684\u5b57\u7b26\u3002
MSG_ServletNameAndFilenameAreNotValid=\u8f93\u5165\u7684\u540d\u79f0\u5305\u542b\u65e0\u6548\u7684 servlet \u540d\u79f0\u548c\u6587\u4ef6\u540d\u5b57\u7b26\u3002
MSG_DispatcherMappingPatternIsEmpty=\u5fc5\u987b\u8f93\u5165\u5206\u6d3e\u7a0b\u5e8f\u6620\u5c04\u3002
MSG_DispatcherMappingPatternIsNotValid=\u5206\u6d3e\u7a0b\u5e8f\u6620\u5c04\u65e0\u6548\u3002
MSG_WebXmlIsNotValid=web.xml \u65e0\u6548\u3002
MSG_NoValidSpringLibraryFound=\u627e\u4e0d\u5230\u6709\u6548\u7684 Spring Web MVC \u5e93
LOG_ServletErrorEncodingAttributes=\u5bf9 servlet \u540d\u79f0\u4e2d\u7684\u5b57\u7b26\u8fdb\u884c\u7f16\u7801\u65f6\u51fa\u73b0\u9519\u8bef
SpringConfigPanelVisual.includeJstlCheckBox.AccessibleContext.accessibleDescription=\u9009\u4e2d\u590d\u9009\u6846\u65f6\u4f1a\u6346\u7ed1 JSTL \u5e93

SpringConfigPanelVisual.springVersionLabel.text=Spring \u5e93: 

