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

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=Cha&nges 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:
