###############################################################################
# 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
# https://www.eclipse.org/legal/epl-2.0/
#
# 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:
ASYNC_SUPPORT_LABEL = As&ynchronous Support
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:

NEW_LISTENER_WIZARD_WINDOW_TITLE=New Listener
CHOOSE_LISTENER_CLASS=Choose a listener class

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_LISTENER_WIZARD_OBJECT_SESSION_ID=Ch&anges to id
ADD_LISTENER_WIZARD_ASYNC_EVENTS=Async &events

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:
