###############################################################################
# Copyright (c) 2003, 2006 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################
_0=Failed to find the image "{0}".
_1=New Dynamic Web Project
_2=Servlet version:
_3=Dynamic Web Project
_4=Create a standalone Dynamic Web project or add it to a new or existing Enterprise Application.
_5=Web &project:
_6=WAR file:
_7=Import a WAR file from the file system
_8=WAR Import
_9=WAR Export
_10=Export Web project to the local file system.
_11=Context root:
_12=Convert Simple Web to Web Module
_13=Convert Simple Web to Web Module.
_14=WAR Import: Web libraries
_15=Select the web library jars from the list below to be imported as web library projects.  Unselected web libraries will be imported as jars in the WEB-INF/lib directory.
_16=Select All
_17=Deselect All
_18=New Web Fragment Project
ADD_SERVLET_WIZARD_WINDOW_TITLE=Create Servlet
ADD_SERVLET_WIZARD_PAGE_TITLE=Create Servlet
ADD_SERVLET_WIZARD_PAGE_DESC=Enter servlet deployment descriptor specific information.

ADD_FILTER_WIZARD_WINDOW_TITLE=Create Filter
ADD_FILTER_WIZARD_PAGE_TITLE=Create Filter
ADD_FILTER_WIZARD_PAGE_DESC=Enter servlet filter deployment descriptor specific information.

ADD_LISTENER_WIZARD_WINDOW_TITLE=Create Listener
ADD_LISTENER_WIZARD_PAGE_TITLE=Create Listener
ADD_LISTENER_WIZARD_PAGE_DESC=Select the application lifecycle events to listen to. 

DISPATCHER_REQUEST=&REQUEST
DISPATCHER_FORWARD=&FORWARD
DISPATCHER_INCLUDE=&INCLUDE
DISPATCHER_ERROR=&ERROR

DEFAULT_PACKAGE=(default package)
SELECT_CLASS_TITLE=Select Class
MAP_CLASS_NAME_TO_CLASS_ERROR_MSG=IWAE0060E Could not uniquely map the class name to a class.
EMPTY_LIST_MSG=Empty List
ADD_LABEL=Add
USE_EXISTING_SERVLET_CLASS=&Use an existing Servlet class or JSP
USE_EXISTING_FILTER_CLASS=&Use existing Filter class
USE_EXISTING_LISTENER_CLASS=&Use existing Listener class
INIT_PARAM_TITLE=Initialization Parameters
INIT_PARAM_LABEL=Initialization &parameters:
URL_MAPPINGS_TITLE=URL Mappings
URL_MAPPINGS_LABEL=&URL mappings:
CHOOSE_SERVLET_CLASS=&Choose a JSP file:

NEW_SERVLET_WIZARD_WINDOW_TITLE=New Servlet
NEW_SERVLET_WIZARD_PAGE_TITLE=Servlet
NEW_SERVLET_WIZARD_PAGE_DESC=Create a new servlet.
SERVLET_PACKAGE_LABEL=Java package:
SERVLET_NAME_LABEL=Servlet name:

NEW_FILTER_WIZARD_WINDOW_TITLE=New Filter
CHOOSE_FILTER_CLASS=Choose a filter class
SERVLET_MAPPINGS_LABEL=Servlet mappings:
FILTER_MAPPINGS_LABEL=Fi&lter mappings:

ADD_LISTENER_WIZARD_SERVLET_CONTEXT_EVENTS=Servlet context events
ADD_LISTENER_WIZARD_HTTP_SESSION_EVENTS=HTTP session events
ADD_LISTENER_WIZARD_SERVLET_REQUEST_EVENTS=Servlet request events
ADD_LISTENER_WIZARD_LIFECYCLE=Lifecycle
ADD_LISTENER_WIZARD_LIFECYCLE_L=&Lifecycle
ADD_LISTENER_WIZARD_LIFECYCLE_I=L&ifecycle
ADD_LISTENER_WIZARD_LIFECYCLE_Y=Lifec&ycle
ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES=Changes to attributes
ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_C=&Changes to attributes
ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_H=C&hanges to attributes
ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_G=Chan&ges to attributes
ADD_LISTENER_WIZARD_SESSION_MIGRATION=Session &migration
ADD_LISTENER_WIZARD_OBJECT_BINDING=&Object binding

ADD_BUTTON_LABEL=Add...
ADD_BUTTON_LABEL_A=&Add...
ADD_BUTTON_LABEL_D=A&dd...
EDIT_BUTTON_LABEL=Edit...
EDIT_BUTTON_LABEL_E=&Edit...
EDIT_BUTTON_LABEL_T=Edi&t...
REMOVE_BUTTON_LABEL=Remove
REMOVE_BUTTON_LABEL_R=&Remove
REMOVE_BUTTON_LABEL_V=Remo&ve
URL_PATTERN_TITLE=URL Patterns
URL_PATTERN_LABEL=&Pattern:
FOLDER_LABEL=Folder:
JAVA_PACKAGE_LABEL=Java package:
CLASS_NAME_LABEL=Class na&me:
SUPERCLASS_LABEL=&Superclass:
CONTAINER_SELECTION_DIALOG_TITLE=Container Selection
CONTAINER_SELECTION_DIALOG_DESC=Choose a Container:
CONTAINER_SELECTION_DIALOG_VALIDATOR_MESG=Choose the Web Content Folder or its subfolder
PACKAGE_SELECTION_DIALOG_TITLE=Package Selection
PACKAGE_SELECTION_DIALOG_DESC=Choose a package:
PACKAGE_SELECTION_DIALOG_MSG_NONE=No packages to choose from
SUPERCLASS_SELECTION_DIALOG_TITLE=Superclass Selection
SUPERCLASS_SELECTION_DIALOG_DESC=Choose a superclass:
INTERFACE_SELECTION_DIALOG_TITLE=Interface Selection
INTERFACE_SELECTION_DIALOG_DESC=Choose interfaces:
INTERFACE_SELECTION_DIALOG_MSG_NONE=''{0}'' added.
JAVA_CLASS_MODIFIERS_LABEL=Modifiers:
JAVA_CLASS_PUBLIC_CHECKBOX_LABEL=&Public
JAVA_CLASS_ABSTRACT_CHECKBOX_LABEL=Abs&tract
JAVA_CLASS_FINAL_CHECKBOX_LABEL=fina&l
JAVA_CLASS_INTERFACES_LABEL=&Interfaces:
JAVA_CLASS_METHOD_STUBS_LABEL=Which method stubs would you like to create?
JAVA_CLASS_MAIN_CHECKBOX_LABEL=public static void main(String[] args)
JAVA_CLASS_CONSTRUCTOR_CHECKBOX_LABEL=&Constructors from superclass
JAVA_CLASS_INHERIT_CHECKBOX_LABEL=In&herited abstract methods
JAVA_CLASS_BROWER_DIALOG_TITLE=Java Class Browser
JAVA_CLASS_BROWER_DIALOG_MESSAGE=Browse for a Java class

NAME_TITLE=Name
NAME_LABEL=Na&me:
DESCRIPTION_TITLE=Description
DESCRIPTION_LABEL=De&scription:
VALUE_TITLE=Value
VALUE_LABEL=&Value:
URL_SERVLET_LABEL=URL Pattern / Servlet Name
DISPATCHERS_LABEL=Dispatchers

BROWSE_BUTTON_LABEL=Bro&wse...
REMOVE_BUTTON=Remove
SELECT_ALL_BUTTON=&Select All
CLEAR_BUTTON=&Deselect All

NEW_JAVA_CLASS_DESTINATION_WIZARD_PAGE_DESC=Specify class file destination.
NEW_JAVA_CLASS_OPTIONS_WIZARD_PAGE_DESC=Specify modifiers, interfaces to implement, and method stubs to generate.

ImportWARAction_UI_=Import Web Module...
ExportWARAction_UI_=Export WAR file...

NO_WEB_PROJECTS=No Web Projects

SERVLETS =Servlets

WEB_CONT_NAME = WebAppContainerPage
WEB_CONT_PAGE_TITLE = Web App Libraries Container
WEB_CONT_PAGE_DESCRIPTION = This container dynamically populates classpath entries from the WEB-INF/lib and WEB-INF/classes directories of a web app.
WEB_CONT_PAGE_COMP_LABEL = Component:
WEBCONTENT=Web Content folder:


Compressed_Libraries= Libraries
Compressed_JavaResources= Java Resources

ConvertToWebTitle=Convert to Dynamic Web Project
SelectWebVersion=Select a Dynamic Web module version:
