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

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.

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 existing Servlet class
INIT_PARAM_LABEL=Initialization Parameters:
URL_MAPPINGS_LABEL=URL Mappings:
CHOOSE_SERVLET_CLASS=Choose a servlet class

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:

ADD_BUTTON_LABEL=Add...
EDIT_BUTTON_LABEL=Edit...
REMOVE_BUTTON_LABEL=Remove
URL_PATTERN_TITLE=URL Patterns
URL_PATTERN_LABEL=Pattern:
FOLDER_LABEL=Folder:
JAVA_PACKAGE_LABEL=Java package:
CLASS_NAME_LABEL=Class name:
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=Abstract
JAVA_CLASS_FINAL_CHECKBOX_LABEL=Final
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=Inherited abstract methods
JAVA_CLASS_BROWER_DIALOG_TITLE=Java Class Browser
JAVA_CLASS_BROWER_DIALOG_MESSAGE=Browse for a Java class

NAME_LABEL=Name
DESCRIPTION_LABEL=Description
VALUE_LABEL=Value
BROWSE_BUTTON_LABEL=Browse...
REMOVE_BUTTON=Remove

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{0}

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