###############################################################################
# Copyright (c) 2003, 2004 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
###############################################################################
Error_occured_getting_appl_ERROR_=IWAE0001E Error occurred getting appliction.xml:
Error_occured_getting_appl1_ERROR_=IWAE0002E Error occurred getting application.xml:
Creating__UI_=Creating:
Creating_EAR_Project..._UI_=Creating Enterprise Application project...
The_project_already_exist_ERROR_=IWAE0003E The project already exist.
EARProjectCreationOperatio_ERROR_=IWAE0004E EARProjectCreationOperation.getNewProject :
ABS_PATH_CHANGED_UI_=The IBM extensions file contains deprecated absolute paths.  This can be auto-corrected and should be saved.  This will remove the paths from the file, and only needs to be done once.  Would you like to auto-correct?
UNSAVED_CHANGES_WARN_=IWAE0005W Unsaved changes exist in Application.  Project: {0}
PROJECT_MAP_PROBLEMS_ERROR_=IWAE0006E Problems exist in project mappings for one or more modules in Application.  Use Application editor to correct.  Project: {0}
MODULE_PROJECTS_CLOSED_WARN_=IWAE0007W One or more module projects is closed. Enterprise Application project: {0}.
Add_Module_Command_Label_UI_=Add Module
Remove_Module_Command_Label_UI_=Remove Module

Set_project_UI_=Set project
Add_Utility_JAR_UI=Add Utility JAR
REM_UTIL_JAR_UI=Remove Utility JAR
PROJ_DESC_UPDATE_ERROR_UI_=IWAE0008E The project description could not be updated.
Not_an_ear_project_UI_=Not an EAR project.
EAR_PROJECT_MUST_BE_OPEN_UI_=An EAR project must be open and must exist for properties to be edited.
Updating_absolute_paths_UI_=Updating absolute paths for the server runtime.
DuplicateModuleNames=Duplicate module names : {0}
NoModulesSelected=No module types selected.


1=Project must be of type Web, EJB, Application client or Connector
2=Module already exists.
3=Selected project is closed.
4=Select a project from the list.
5=URI exists.
6=Selected project is not a Java project.
7=The uri must end with '.jar'.
8=Utility JAR already exists.
9=An open EAR project is required.
10=URI cannot be empty.
11=The project "{0}" is not an Application Client project.
12=The project "{0}" is not an EAR project.
13=The project "{0}" is not an EJB project.
14=The project "{0}" is not a RAR project.
15=The project "{0}" is not a WAR project.
16=The selected server target is not valid for the specified EAR project.
J2EEUtilityJarListImportOperation_UI_0=Import Utility Jars
J2EEUtilityJarListImportOperation_UI_1=Importing
J2EEUtilityJarListImportOperation_UI_2=Problem importing Utility Jar
J2EEUtilityJarListImportDataModel.0=Invalid path location.
J2EEUtilityJarListImportDataModel_Specify_Valid_Project=Please specify a valid Enterprise Application Project.
J2EEUtilityJarListImportDataModel_Select_Jar=Please select one or more Utility Jars.
J2EEUtilityJarListImportDataModel_Specify_Linked_Path=Please specify a non-empty value for the Linked Path Variable name.
EARImportDataModel_UI_0=Specified project name \" {0} \" for archive \" {1} \" already exists. Either choose a different name or allow project overwrites.
EARImportDataModel_UI_1=Colliding project name \" {0} \" between EAR project name and \" {1} \" archive.
EARImportDataModel_UI_2=Colliding project name \" {0} \" between archives \" {1} \" and \" {2} \".
EARImportDataModel_UI_3=The specified project \" {0} \" already exists.  Either choose a different project name or allow resource overwrites.
ModuleMappingImpl_UI_0=projectName: {0}
UtilityJARMappingImpl_UI_0=projectName: {0}, uri: {1}
importWrongType=The specified project \" {0} \" is not the correct J2EE type.
importWrongVersion=The specified project \" {0} \" is not J2EE version compatible with the specified archive.
