###############################################################################
# Copyright (c) 2005 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
###############################################################################
Up_1=&Up
Down_2=&Down
Select_All_3=Select &All
Deselect_All_4=D&eselect All
ERROR_READING_MANIFEST_DIALOG_TITLE=Error Reading Manifest
SAVE_MANIFEST_WITH_ERROR=The manifest file contains errors and can not be parsed.  The file will be saved but the Java build path will not be updated.  Following are common limitations which can cause problems:
ERROR_READING_MANIFEST_DIALOG_MESSAGE_EDITOR=The manifest file contains errors and can not be parsed.  Other pages cannot be used until these errors are corrected.  Following are common limitations which can cause problems:
ERROR_READING_MANIFEST_DIALOG_MESSAGE_PROP_PAGE=The manifest file contains errors and can not be parsed.  Following are common limitations which can cause problems:
MANIFEST_PROBLEM_1=* Lines in the file must be no greater than 72 bytes. Continuation of long lines is indicated by a new line and a space.
MANIFEST_PROBLEM_2=* The last line in the file must end with a new line or it will not be parsed.
MANIFEST_PROBLEM_3=* Blank lines with extra white space may cause parse to fail.
MANIFEST_PROBLEM_4=* The attributes must be formatted correctly.  Refer to the manifest and JAR file specification for more information.
An_internal_error_occurred_ERROR_=IWAE0010E An internal error occurred:
Project_name__UI_=Project name:
EAR_Project_Name__UI__UI_=Enterprise application project name:
Available_dependent_JARs__UI_=Available dependent JARs:
Manifest_Class_Path__UI_=Manifest Class-Path:
JAR_Module_UI_=JAR/Module
Project_UI_=Project
EAR_Modules=EAR Modules:
EAR_Modules_Desc=This property page lets you setup the module dependencies in an Enterprise Application.
J2EE_Modules=J2EE Modules
J2EE_Modules_Desc=This property page lets you setup the j2ee module dependencies with other j2ee modules within an Enterprise Application.  All modules involved in the dependency need to belong to the same Enterprise Application.
Web_Libraries=Web Libraries
Web_Libraries_Desc=This property page lets you add the Web Library dependency to other java modules in the workpspace. This dependency resolves the java modules into the web\\lib folder of the web module at deployment time.
EAR_Module_Dep_Error=J2EE Modules is not valid for EAR modules.
Jar_Dep_One_Module_Error=Java Jar Dependencies is valid only for one module per flexible project.
Web_Lib_Error=Web library settings are only valid for Web modules.
REDIRECT_TEXT_EDITOR_UI_=REDIRECT_TEXT_EDITOR_UI_
Error_Checking_Project_Facets=Error checking project facets.
Error_Checking_Project_Facets=Error checking project facets.
WEB_LIB_LIST_DESCRIPTION=Select utility projects to add as Web Library projects to the web module
