###############################################################################
# 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
###############################################################################
Create_Two_Children_UI_=Create Two Children
Create_Child_UI_=Create Child
Name_UI_=Name
The_name_property_UI_=The name property
Type_UI_=Type
The_type_property_UI_=The type property
Home_UI_=Home
The_home_property_UI_=The home property
Remote_UI_=Remote
The_remote_property_UI_=The remote property
_UI_EJBLocalRef_localHome_feature_desc=The local home property
_UI_EJBLocalRef_local_feature_desc=The local property
Link_UI_=Link
The_link_property_UI_=The link property
Description_UI_=Description
The_description_property_UI_=The description property
Client_UI_=Client
The_client_property_UI_=The client property
WebApp_UI_=WebApp
The_webApp_property_UI_=The webApp property
Ejb_UI_=Ejb
The_ejb_property_UI_=The EJB property
Value_UI_=Value
The_value_property_UI_=The value property
Auth_UI_=Auth
The_auth_property_UI_=The auth property
RoleName_UI_=RoleName
The_roleName_property_UI_=The roleName property
Application_UI_=Application
The_application_property_UI_=The application property
Servlet_UI_=Servlet
The_servlet_property_UI_=The servlet property
EJB_Reference_UI_=EJB Reference
_UI_EJBLocalRef_type=EJB Local Reference
New_UI_=Add
Delete_UI_=Remove
Delete_EJB_references_UI_=Delete EJB references
Variable_UI_=Variable
Delete_environment_entries_UI_=Delete environment entries
(New_Variable)_UI_=(New Variable)
New_environment_entry_UI_=New environment entry
Delete_resource_references_UI_=Delete resource references
Reference_Name_UI_=Reference Name
Authentication_UI_=Authentication
(New_ResourceRef)_UI_=(New ResourceRef)
New_resource_reference_UI_=New resource reference
Security_Roles_UI_=Security Roles
(New_Security_Role)_UI_=(New Security Role)
New_security_role_UI_=New security role
Delete_security_roles_UI_=Delete security roles
Bad_parent_ERROR_=IWAE0001E Bad parent
Choose_Icons_UI_=Choose Icons
Preview_UI_=Preview
Browse..._UI_=Browse...
Resource_must_exist._ERROR_=IWAE0002E Resource must exist.
Resource_must_be_accessibl_ERROR_=IWAE0003E Resource must be accessible.
What_resources_do_you_want_UI_=What resources do you want to export?
Where_do_you_want_to_expor_UI_=Where do you want to export resources to?
Options__UI_=Options:
Export_source_files_UI_=Export source files
Create_directory_structure_UI_=Create directory structure
Create_directories_for_sel_UI_=Create directories for selected folders
Import_into_new_or_existin_UI_=Import into new or existing Enterprise Application project
Create_complete_container__UI_=Create complete folder structure
File_Selection_UI_=File Selection
Select_a_file__UI_=Select a file:
Label_Ear_Project_Name_UI=Enterprise application project name:
Label_Where_To_Import_UI_=Where do you want the imported resources to go?
Overwrite_existing_resources_UI_=Overwrite existing resources without warning
Overwrite_existing_resources_export_UI_=Overwrite existing files without warning
(New_EJB_Ref)_UI_=(New EJB Ref)
Small_(16x16)__UI_=Small (16x16):
Large_(32x32)__UI_=Large (32x32):
Choose_Small_Icon_UI_=Choose Small Icon
Select_the_Small_Icon_UI_=Select the Small Icon
Choose_Large_Icon_UI_=Choose Large Icon
Select_the_Large_Icon_UI_=Select the Large
Icon29concat=Create a new child for the selected {0}.
1concat_UI_=Create a new child for the selected {0}.
3concat_UI_=BasicAuthData {0}
4concat_UI_=EjbRefBinding {0}
## on the following line, do not translate:   CHILD_CLASS_NAME  ##
5concat_UI_=Create a child of type #CHILD_CLASS_NAME# for the selected {0}.
6concat_UI_=ResourceRefBinding {0}
9concat_EXC_=IWAE0004E Failed to load image for ''{0}''
11concat_ERROR_=IWAE0005E Cannot find the image for the file: {0}
12concat_ERROR_=IWAE0006E Problems with URL format of the image file: {0}
28concat_UI_={0} is an invalid character in a resource name.
29concat_UI_=Enterprise Application project contains invalid character {0}.
30concat_UI_=Enterprise Application must be absolute. Use /{0}.
13concat_UI_={0} is an invalid character in a resource name.
14concat_UI_=Enterprise Application project contains invalid character {0}.
15concat_UI_=Enterprise Application must be absolute. Use /{0}.
16concat_UI_=Create a child of type {0} for the selected {1}.
18concat_UI_=Create {0}
19concat_UI_=Create two new children for the selected {0}.
20concat_UI_=Create two new children of type {0} for the selected {1}.
21concat=Create Two {0}s
Undo@Ctrl+Z_UI_=Undo@Ctrl+Z
{0}_change_UI_={0} change
Project_and_EAR_names_can__UI_=Destination Project and Enterprise Application names cannot be the same
You_must_specify_an_EAR_pr_UI_=You must specify an Enterprise Application project that exists or should be created
Invalid_EAR_project_name_UI_=Invalid Enterprise Application project name
Project_exist,_but_it_is_n_UI_=Project exist, but it is not an Enterprise Application project
EAR_Project_Name__UI_=Enterprise application project name:
Create_Child_UI__UI_=Create Child
UserId_UI_=UserId
The_userId_property_UI_=The userId property
Password_UI_=Password
The_password_property_UI_=The password property
JndiName_UI_=JndiName
The_jndiName_property_UI_=The jndiName property
## on the following line, do not translate:  bindingEjbRef  ##
The_bindingEjbRef_property_UI_=The bindingEjbRef property
## on the following line, do not translate: bindingResourceRef  ##
The_bindingResourceRef_pro_UI_=The bindingResourceRef property
## do not translate the following line ##
DefaultAuth_UI_=DefaultAuth
## on the following line, do not translate:  defaultAuth ##
The_defaultAuth_property_UI_=The defaultAuth property
## on the following line, do not translate:   CHILD_CLASS_NAME  ##
Create_#CHILD_CLASS_NAME#_UI_=Create #CHILD_CLASS_NAME#
Question_UI_=Question
Resource__UI_=Resource {0} already exists.  Would you like to overwrite it?
New_EJB_reference_UI_=New EJB reference
The_EJB_property_UI_=The EJB property
An_error_occurred_reading__ERROR_=IWAE0007E An error occurred reading the meta-data in Enterprise Application project {0}:
Error_in_EAR_project_UI_=Error in Enterprise Application project
Manifest_Class-Path__UI_=Manifest Class-Path:
Module_Dependencies_UI_=Module Dependencies
Select_dependent_JARs_for__UI_=Select dependent JARs for the module within the Enterprise Application project.
Project_name__UI_=Project name:
NO_EAR_JARDEP_FOR_MOD_UI_=Selected module not associated with an Enterprise Application module.
EAR_Project_Name__UI__UI_=Enterprise application project name:
Project_UI_=Project
Available_dependent_JARs__UI_=Available dependent JARs:
Project_{0}_is_not_referen_ERROR_=IWAE0008E Project {0} is not referenced by any Enterprise Application project.
Unable_to_edit_module_depe_UI_=Unable to edit module dependencies
Define_Java_Build_Settings_UI_=Define Java Build Settings
Specify_the_source_and_out_UI_=Specify the source and output folders, as well as the Java classpath in the appropriate order.
Enter_a_valid_project_name_UI_=Enter a valid project name
Project_name_has_invalid_c_UI_=Project name has invalid characters
Project_does_not_exist_or__UI_=Project does not exist or Invalid project nature. Enter a valid project name
EAR_Project_Name_UI_=Enterprise application project name:
Invalid_destination_projec_UI_=Invalid destination project
Cannot_import_into_a_close_UI_=Cannot import into a closed project
Project_name_must_be_speci_UI_=Project name must be specified
Select_an_EAR_Project_UI_=Select an Enterprise Application project
The_project_is_referenced__ERROR_=IWAE0009E The project is referenced by more than one Enterprise Application project.  Please select the primary Enterprise Application project.
An_internal_error_occurred_ERROR_=IWAE0010E An internal error occurred:
2concat_INFO_=IWAE0011I The file {0} is read-only and cannot be saved.  Would you like to make it editable and save anyway?
Information_UI_=Information
The_chosen_operation_is_no_INFO_=IWAE0012I The chosen operation is not currently available.
Save_problems_UI_=Save problems
Save_could_not_be_complete_INFO_=IWAE0013I Save could not be completed.  Some related files may have already been saved.\n\nReason
Yes_UI_=Yes
Yes_To_All_UI_=Yes To All
No_UI_=No
Saving_Read-Only_File_UI_=Saving Read-Only File
A_source_folder_must_be_sp_UI_=A source folder must be specified
EAR_project_is_not_open_UI_=Enterprise Application project is not open
1concat_EXC_=IWAE0014E Invalid initial delay: {0}
2concat_EXC_=IWAE0015E Invalid delay: {0}
Information_UI__UI_=Information
Error_UI_=Error
Confirm_UI_=Confirm
Can't_start_a_TimerQueue_t_EXC_=IWAE0016E Can't start a TimerQueue that is already running
Module_Dependency_Dialog_Title_UI_=Module Dependencies Dialog
JAR/Module_UI_=JAR/Module
Must_be_an_Connector_Cli1_UI_=Must be a Connector project.
Must_be_an_Application_Cli_UI_=Must be an Application Client, EJB, or Web project.
Must_be_an_EJB_project._UI_=Must be an EJB project.
Selection_must_be_a_Web_pr_UI_=Selection must be a Web project.
Must_be_an_Enterprise_Appl_UI_=Must be an Enterprise Application project.
Must_be_an_Application_Cli1_j2ee13_UI_=Must be an Java EE 1.3 Application Client project.
Must_be_an_Application_Cli1_UI_=Must be an Application Client project.
Select_the_highest_J2EE_version_that_is_to_be_used__UI_=&Highest Java EE version used for development:
Unexpected_IO_exception_occurred_creating_xml_document_1_EXC_=IWAE0017E Unexpected IO exception occurred creating xml document
Delete_1=Delete...
Delete_selected_project(s)_2=Delete selected project(s)
Remove_module(s)_from_all_Enterprise_Applications_3=Remove module(s) from all Enterprise Applications
Remove_module(s)_from_all_other_Enterprise_Applications_4=Remove module(s) from all other Enterprise Applications
Remove_module_dependencies_referencing_selected_project(s)_5=Remove module dependencies referencing selected project(s)
Delete_Module_Options_6=Delete Module Options
Delete_Enterprise_Application_Options_7=Delete Enterprise Application Options
Delete_could_not_be_completed_8=Delete could not be completed
Delete_error_9=Delete error
What_would_you_like_to_delete__10=What would you like to delete?
Delete_selected_Enterprise_Application_project(s)_only_11=Delete selected Enterprise Application project(s) only
Also_delete_module_and_utility_Java_projects_12=Also delete module and utility Java projects
Delete_selected_project(s)_only_13=Delete selected project(s) only
Also_delete_references_to_selected_project(s)_14=Also delete references to selected project(s)
Rename_1=Rename...
Rename_selected_project_2=Rename selected project
Rename_module_in_all_Enterprise_Applications_3=Rename module in all Enterprise Applications
Rename_module_in_all_other_Enterprise_Applications_4=Rename module in all other Enterprise Applications
Rename_module_dependencies_referencing_selected_project_5=Rename module dependencies referencing selected project
Rename_Module_Options_6=Rename Module Options
Rename_Enterprise_Application_Options_7=Rename Enterprise Application Options
Rename_could_not_be_completed_8=Rename could not be completed
Rename_error_9=Rename error
What_would_you_like_to_rename_this_to__10=What would you like to rename this to?
Context_Root__11=Context root:
Rename_selected_Enterprise_Application_project_only_12=Rename selected Enterprise Application project only
Also_rename_module_and_utility_Java_projects_13=Also rename module and utility Java projects
Source_1=Source
Error_creating_nested_text_editor_2=Error creating nested text editor
Redirecting_Editor_1=Redirecting Editor
Problems_Opening_Editor_2_ERROR_=IWAE0018E Problems Opening Editor
The_selected_input_is_not_valid_for_this_type_of_editor.__Redirecting_to_the_XML_editor_3_ERROR_=IWAE0019E The selected input is not valid for this type of editor.  Redirecting to the XML editor.
REDIRECT_TEXT_EDITOR_UI_=The selected input is not valid for this type of editor.  Redirecting to the text editor.
REDIRECT_TEXT_EDITOR_BINARY_PROJECT_UI_=The selected input is not valid for this type of editor.  For binary projects, you can open the editor read-only from the deployment descriptor node in the Project Explorer view.  Redirecting to the text editor.
Error_checking_out_files_10=Error checking out files
Inconsistent_files_detected_11=Inconsistent files detected
The_following_files_are_inconsistent_with_the_file_system._Do_you_want_to_save_and_overwrite_these_files_on_the_file_system__12_WARN_=IWAE0020W The following files are inconsistent with the file system.\nDo you want to save and overwrite these files on the file system?
Project_should_not_be_null_1_EXC_=IWAE0021E Project should not be null
Non-project_in_selection_2_EXC_=IWAE0022E Non-project in selection
Project_should_not_be_null_1_ERROR_=IWAE0023E Project should not be null
Non-project_in_selection_2_ERROR_=IWAE0024E Non-project in selection
Up_1=&Up
Down_2=&Down
Select_All_3=Select &All
Deselect_All_4=D&eselect All
Project_3=Project
Enterprise_Application_Project_4=Enterprise application project:
New_ejb_project_and__ear_project_cannot_have_the_same_non_default_location_5_UI_=New EJB project and  EAR project cannot have the same non default location
New_ejb_project_and__ear_project_cannot_have_the_same_non_default_location_6_UI_=New EJB project and  EAR project cannot have the same non default location
Project_already_exists,_enter_a_new_project_name_to_create_a_new_EJB_project_7_UI_=Project already exists, enter a new project name to create a new EJB project
Project_already_exists,_enter_a_new_project_name_to_create_a_new_EAR_project_8_UI_=Project already exists, enter a new project name to create a new EAR project
Jar_file_name_must_be_entered_9_UI_=JAR file name must be entered
New_project_name__1=New project name:
New_project_location__2=New project location:
New_4=New
Existing_5=Existing
Existing_project_name__6=Existing project name:
Select_Project_7=Select Project
Project_does_not_exist_8=Project does not exist
Not_a_project_9=Not a project
Select_a_project_10=Select a project
DefaultEAR_1=DefaultEAR
Default13EAR_2=Default13EAR
Enterprise_Application_Project_3=Enterprise application project:
New_ejb_project_and_the_new_ear_project_cannot_have_the_same_non_default_location_4_ERROR_=IWAE0025E New EJB project and the new EAR project cannot have the same non default location
New_project_location__1=New project location:
MapInfoPath.applyPath()_-_Could_not_successfully_apply_path_1_EXC_=IWAE0026E MapInfoPath.applyPath() - Could not successfully apply path
Enter_a_valid_name=Enter a valid {0} name
The_non_default_location___1=The non default location: {0} for module {1} is in use.
The_project_location_in_use_UI=The non default location: {0} for {1} is in use.
Inconsistent_File_1=Inconsistent File
Inconsistent_Files_3=Inconsistent Files
The_following_workspace_files_are_inconsistent_with_the_editor_4=The following workspace files are inconsistent with the editor: \n
Update_the_editor_with_the_workspace_contents__5=Update the editor with the workspace contents?
The_following_workspace_file_is_inconsistent_with_the_editor_1=The following workspace file is inconsistent with the editor: {0} \n
EAR_project_1=EAR project:
EJB_project_2=EJB project
EXPORT_SOURCE_ZIP_UI_=Also export a source ZIP file
EAR_project_UI_=EAR project:
Project_and_EAR_project_non_default_location_UI_=Project and EAR project cannot have the same non default location
Invalid_non_default_location_UI_=Invalid non default location
Project_Main_UI_=Project
There_are_no_projects_available_that_match_the_selection_criteria._1=There are no projects available that match the selection criteria.
Incompatible_EAR_and_Web_Project_Level_1=Incompatible EAR and Web Project Level
You_have_selected_a_1.2_level_EAR.__Your_Web_Project_J2EE_level_will_be_changed_to_1.2.__Would_you_like_to_proceed_ERROR_2=IWAE0027E You have selected a 1.2 level EAR.  Your Web Project's Java EE level will be changed to 1.2.  Would you like to proceed?
J2EE_Level_4=J2EE Level
Project_1=Project
J2EE_Level_2=J2EE Level
Please_choose_a_J2EE_1.2_level_project_3=Please choose a Java EE 1.2 level project
Please_choose_a_J2EE_1.3_level_project_4=Please choose a Java EE 1.3 level project
Problems_Opening_Editor_2=Problems Opening Editor
The_selected_input_is_not_valid_for_this_type_of_editor.__Redirecting_to_the_XML_editor._ERROR_=IWAE0028E The selected input is not valid for this type of editor.  Redirecting to the XML editor.
Enterprise_Application_Project__2=Enterprise application Project:
Context_root__3=Context root:
CANT_IMPORT_TO_BINARY_PROJECT_UI_=Cannot import into the existing project "{0}" because the project is binary.
One_or_more_referenced_Web_Library_Projects_do_not_exist=One or more Web Library Projects referenced by {0} do not exist or are closed.\n\nDo you want to continue without exporting these Web Library Projects?
Warning_1=Warning
Project_Doc_Root=Context root:
NO_EAR_JARDEP_UI_=Project is not associated with an Enterprise Application project.
The_description_property_of_the_identity_2=The description property of the identity
The_role_name_property_of_the_identity_4=The role name property of the identity
The_identity_of_the_run_as_specified_identity_2=The identity of the run as specified identity
The_description_property_of_the_security_identity_2=The description property of the security identity
Binary_Project_1=Binary Project
Include_project_build_paths_and_meta-data_files_1=Include project build paths and meta-data files
new_EAR_project_1=new EAR project
_ERROR_The_jar_file_does_not_exist_2=IWAE0029E The JAR file does not exist
_ERROR_The_J2EE_level_of_the_Jar_file_does_not_match_the_Project_level_3=IWAE0030E The Java EE level of the JAR file does not match the Project level
_ERROR_The_J2EE_level_of_the_jar_file_does_not_match_the_Enterprise_Application_level_4=IWAE0031E The Java EE level of the JAR file does not match the Enterprise Application level
The_action_cannot_be_performed_on_the_selection,_which_is_part_of_a_binary_project_UI_=The action cannot be performed on the selection, which is part of a binary project.
destination_project_1=destination project
CUSTOM_DELETE_MIX_MATCH_UI_=The custom Java EE delete options are not available for the selected Java EE projects.  The standard delete options will be used.
PROJECT_NOT_ACCESSIBLE=The project {0} is not accessible.
IMPORT_FAILED_UI_=Import Failed
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.
ERROR_OCCURRED_TITLE=Error
ERROR_OCCURRED_MESSAGE=An internal error occurred performing the selected action.
SAVE_ON_BINARY_PROJECT_TITLE_UI_=Binary Projects
SAVE_ON_BINARY_PROJECT_MESSAGE_UI_=Cannot edit binary projects. All changes will be lost when you click OK. Are you sure you want to continue?
The_JAR_file_does_not_exist=The JAR file does not exist.
The_J2EE_level_of_the_Jar_file_does_not_match_the_Project_level._7=The Java EE level of the JAR file does not match the project level.
Project_already_exists.=Project {0} already exists.
Enterprise_Application_Project_does_not_exist.=Enterprise Application project {0} does not exist.
Enterprise_Application_Project_name_must_be_specified.=Enterprise Application project name must be specified.
An_Enterprise_Application_Project_with_the_name_already_exists_in_the_workspace.=Enterprise Application project {0} already exists.
Context_Root_cannot_be_emp_UI_=Context Root cannot be empty
Project_With_Same_Name_Exists_UI_=The project named \"{0}\" already exists.
Use_default_label_1=Use default
Must_be_an_J2EE13_EAR_Project_UI_=Must be an Java EE 1.3 level EAR Project
Assembly_Application_Project_Suffix=EAR
Assembly_EJBJAR_Project_Suffix=EJB
Assembly_Web_Project_Suffix=Web
Assembly_ClientJAR_Project_Suffix=Client
Assembly_Connector_Project_Suffix=Connector
Advanced..._UI=Advanced...
Project_Location_UI_=Project location:
DD_GENERAL_NAME=Deployment Descriptor
Destination__1=Destination:
Resource__2=Resource:
The_file_does_not_exist._1=The file does not exist.
Must_be_an_J2EE12_Module_Only_UI_=Must be a Java EE 1.2 Level module file only.
Project_location__1=Project location:
Project__1=Project:
Browse..._2=Browse...
New..._3=New...
Invalid_EAR_For_Selected_Module=The Java EE level of the Enterprise Application project is not valid for the selected module file
Invalid_Project_For_Selected_Module=The Java EE level of the destination project is not valid for the selected module file
Invalid_EAR_Name_For_Project_Creation=The Java EE level of the exisiting EAR project: {0} does not match the Java EE level of the project being creation
J2EEImportWizardPage1.EAR_project=EAR project:
J2EEImportWizardPage1.The_file_does_not_exist=The file does not exist.
NewJ2EEProjectCreationPage.Project_name=Project name:
NewJ2EEProjectCreationPage.Project_location=Project location:
NewJ2EEProjectCreationPage.EAR_project=EAR project:
Proj_EAR_Proj_Name_Cannot_Be_Same_UI_=Project and EAR project names cannot be same
Enable_Label_UI_=Enable server targeting support
Disable_Label_UI_=Disable server targeting support
Change_Module_Server_Target_Dialog_Message_UI_=EAR target server: "{0}" \nModule target server: "{1}"\n\nChange module target server to EAR target server?
Change_EAR_Server_Target_Dialog_Message_UI_=Selected module target server: "{0}"\nExisting EAR target server: "{1}" \n\nChange EAR target server to selected module target server?
CREATE_EJB_CLIENT_JAR_UI_=Create EJB client JAR projects for new EJB projects
Change_Server_Target_Dialog_Title_UI_=Change Target Server
Modify_Server_Target_Title_UI_=Modify Target Server
Server_Target_UI_=Target server:
Server_Target_Desc_UI_=Select a target server for the \"{0}\" project.
Server_Target_Checkbox_Label_UI_=Update EAR modules and utility projects to the selected target server
Server_Target_Change_Desc_UI_=The target server "{0}" of the existing EAR project "{1}" is incompatible \nwith the module project being created. \n\nDo you want to change the target server of the EAR project to the module target server:\n\n{2} ?
EJB_CLIENT_RADIO_UI_=References to EJB JARs with EJB Client JARs
USE_EJB_SERVER_JARs_UI_=Use EJB JARs
USE_EJB_CLIENT_JARs_UI_=Use EJB client JARs
USE_BOTH_UI_=Allow both
EJB_CLIENT_JARS_UI_=EJB Client JARs
JAR_DEPS_CLIENT_UI_=Java JAR Dependencies for references to EJB JARs:
USE_EJB_JAR_UI=Use EJB JAR
USE_EJB_JAR_DESC_UI=All referencing modules and JARs depend on the EJB JAR.  This is compatible with WebSphere 4.x, 5.x, and most application servers.
USE_EJB_CLIENT_JAR_UI_=Use EJB Client JAR, if it exists
USE_EJB_CLIENT_JAR_DESC_UI=All referencing modules and JARs depend on the EJB client JAR.  This is best practice, but is only compatibile with WebSphere 5.1 and any application servers that support EJB client JAR deployment.
NONE_SERVER_TARGET_STRING_UI_=No target server specified
Server_Invalid_For_Exisitng_EAR_UI_=Selected target server "{0}" is invalid for the existing EAR project "{1}"
Cannot_Set_Server_Target_UI_=Could not set server target\n\n
_UI_EJBLocalRef_localHome_feature=Local Home
_UI_EJBLocalRef_local_feature=Local
_UI_QName_type=QName:
_UI_CompatibilityDescriptionGroup_description_feature=Description
_UI_CompatibilityDescriptionGroup_description_feature_desc=
_UI_CompatibilityDescriptionGroup_displayName_feature=Display name
_UI_CompatibilityDescriptionGroup_displayName_feature_desc=
_UI_CompatibilityDescriptionGroup_smallIcon_feature=Small icon
_UI_CompatibilityDescriptionGroup_smallIcon_feature_desc=
_UI_CompatibilityDescriptionGroup_largeIcon_feature=Large icon
_UI_CompatibilityDescriptionGroup_largeIcon_feature_desc=
MessageDestination_UI_=Message Destination
MessageDestinationRefItemProvider_UI_0=MessageDestRef
INCREMENTAL_DEPLOYMENT_LABEL=Perform Incremental Deployment
GROUP_DEPLOYMENT_LABEL=Deployment

_UI_QName_localPart_feature=Local Part
_UI_QName_localPart_feature_desc=The QName local part.
_UI_QName_namespaceURI_feature=Namespace URI
_UI_QName_namespaceURI_feature_desc=The QName namespace URI
Usage_UI_=Usage
The_usage_property_UI_=The usage property
_UI_ParamValue_description_feature=Description
_UI_ParamValue_name_feature=Name
_UI_ParamValue_value_feature=Value
_UI_ParamValue_type=Param
_UI_ParamValue_value=Value

