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


KEY_1=Project must be of type Web, EJB, Application client or Connector
KEY_2=Module already exists.
KEY_3=Selected project is closed.
KEY_4=Select a project from the list.
KEY_5=URI exists.
KEY_6=Selected project is not a Java project.
KEY_7=The uri must end with '.jar'.
KEY_8=Utility JAR already exists.
KEY_9=An open EAR project is required.
KEY_10=URI cannot be empty.
KEY_11=The module "{0}" is not an Application Client module.
KEY_12=The module "{0}" is not an EAR module.
KEY_13=The module "{0}" is not an EJB module.
KEY_14=The module "{0}" is not a RAR module.
KEY_15=The module "{0}" is not a WAR module.
KEY_16=The selected server target is not valid for the specified EAR component. The selected server may not support EAR component.
EARImportDataModel_UI_0=The specified project name \" {0} \" for archive \" {1} \" already exists. Choose a different name.
EARImportDataModel_UI_1=Colliding project name \" {0} \" between EAR project name and \" {1} \" archive.
EARImportDataModel_UI_1a=Colliding case insensitive project names \" {0} \", \" {1} \" between EAR project name and \" {2} \" archive.
EARImportDataModel_UI_2=Colliding project name \" {0} \" between archives \" {1} \" and \" {2} \".
EARImportDataModel_UI_2a=Colliding case insensitive project names \" {0} \", \" {1} \" between archives \" {2} \" and \" {3} \".
EARImportDataModel_UI_3=The specified project name \" {0} \" already exists. Choose a different name.
EARImportDataModel_UI_4=The nested archive \" {0} \" could not be loaded because it has errors and can not be imported as a project.  Check the error log for details.
ModuleMappingImpl_UI_0=projectName: {0}
UtilityJARMappingImpl_UI_0=projectName: {0}, uri: {1}
importWrongType=The specified project \" {0} \" is not the correct Java EE type.
importWrongVersion=The specified project \" {0} \" is not Java EE version compatible with the specified archive.
EAR_PROJECTNAME_SAMEAS_MODULE=The EAR Project name cannot be same as the Project Name.


#J2EE Utility Import strings
J2EEUtilityJarListImportOperation_UI_Import_Utility_Jars=Import Utility Jars
J2EEUtilityJarListImportOperation_UI_Preparing_to_import=Preparing to import utility jars...
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.
J2EEUtilityJarListImportDataModel_Linked_Path_Exists=A Linked Path Variable with the given name already exists. \nThe path has been updated accordingly.
J2EEUtilityJarListImportOperation_There_were_no_utility_jars_selected=There were no utility jars selected.



CreateProjectWithLinkedJarOperation_Cannot_link_utility_jar_into_a_clos_=Cannot link utility jar into a closed project.
CopyArchiveIntoProjectOperation_Found_existing_file_0_=Found existing file "{0}".
CreateProjectWithLinkedJarOperation_File_already_exists_0_=File already exists\: "{0}".
CopyArchiveIntoProjectOperation_Copying_archive_into_selected_proje_=Copying archive into selected project\: "{0}".
CreateProjectWithLinkedJarOperation_Creating_project_with_linked_archiv_=Creating project with linked archive\: "{0}".
LinkArchiveIntoProjectOperation_Linking_archive_into_selected_proje_=Linking archive into selected project\: "{0}".
CreateProjectWithExtractedJarOperation_Create_project_with_extracted_conte_=Create project with extracted contents\: "{0}".
