###############################################################################
# Copyright (c) 2003, 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
###############################################################################
Creating_Web_Project____UI_=Creating Web Project...
The_path_for_the_links_sta_EXC_=IWAE0001E The path for the links state file is incorrect
Syntax_Error_in_the_links_UI_=Syntax Error in the links state file
Error_while_saving_links_s_EXC_=IWAE0002E Error while saving links state file
Operation_failed_due_to_SA_ERROR_=IWAE0003E Operation failed due to SAX error:
Operation_failed_due_to_IO_ERROR_=IWAE0004E Operation failed due to IO error:
Operation_failed_due_to_Co_ERROR_=IWAE0005E Operation failed due to Core error:
Operation_failed_due_to_Ja_ERROR_=IWAE0006E Operation failed due to Java Model error:
_1concat_EXC_=IWAE0007E Error occured getting web.xml: {0}
Error_importing_Module_Fil_EXC_=IWAE0008E Error importing Module File
Cannot_clone_TaglibInfo_1_EXC_=IWAE0009E Cannot clone TaglibInfo
Could_not_read_TLD_15=Could not read TLD
File_Serving_Enabler_7=File Serving Enabler
Auto_Generated___File_Enabler_9=Auto Generated - File Enabler
Generated_by_Web_Tooling_23=Generated by Web Tooling
Not_a_web_project_29=Not a web project
A_web_project_must_be_open_and_must_exist_for_properties_to_be_edited_30=A web project must be open and must exist for properties to be edited
Invalid_Servlet_Level_set_on_WebNature_3_EXC_=IWAE0010E Invalid Servlet Level set on WebNature
Context_Root_cannot_be_empty_2=Context Root cannot be empty
Names_cannot_begin_or_end_with_whitespace_5=Names cannot begin or end with whitespace
The_character_is_invalid_in_a_context_root=The character {0} is invalid in a context root.
Folder_name_cannot_be_empty_2=Folder name cannot be empty
Folder_names_cannot_be_equal_4=Folder names cannot be equal
Folder_name_cannot_be_the_same_as_Java_source_folder_5=Folder name cannot be the same as Java source folder
Folder_name_cannot_be_the_same_as_Java_class_folder_6=Folder name cannot be the same as Java class folder
Folder_name_is_not_valid=Folder name {0} is not valid
Could_not_rename_____2=Could not rename: ''{0}'' already exists.
Sync_WLP_Op=Synchronizing Web Library Projects\n\t
Target_Update_Op=Updating target server for {0}\n\t
_24concat_INFO_=IWAE0011I .startupOnInitialize() for
Sychronize_Class_Path_UI_=Sychronize Class Path
Catalog_Lib_Directory__UI_=Catalog Lib Directory:
Update_ClassPath__UI_=Update ClassPath:
Catalog_Lib_Directory__UI_=Catalog Lib Directory:
Update_ClassPath__UI_=Update ClassPath:
Set_ClassPath__UI_=Set ClassPath:
UNABLE_TO_LOAD_MODULE_ERROR_=UNABLE_TO_LOAD_MODULE_ERROR_
