###############################################################################
# Copyright (c) 2001, 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
###############################################################################
Ejb_provider_plugin_prob=Ejb provider plugin startup - Problem initializing plugin
Ejbext_provider_plugin_prob=Ejbext provider plugin startup - Problem initializing plugin
EJB_UI_STARTUP=EJB UI STARTUP
EJB_Path__=EJB Path:
Size__=Size:
Edit_the_bean_class=Edit the bean class
EJB_Tree=EJB Tree
EJB_Jar_Components=EJB JAR Components
EJB_Models=EJB Models
EJB_Features=EJB Features
Exception_loading_plugin=Exception loading plugin
Create=Create
Create_Attribute...=Create Attribute...
createAttribute=createAttribute
Edit=Edit
Add_To_Key=Add To Key
delete=delete
Unknown=Unknown
Remove_From_Key=Remove From Key
Delete=Delete
Delete_Attribute...=Delete Attribute...
additions=additions
CMDS_Cannot_reflect_JavaClass_ERROR_=IWAE0068E Cannot reflect JavaClass because its name is not set for
CMDS_CLASS_SET_FAILED_STRING_ERROR_=IWAE0069E The Java type named {0} could not be set for the {1} because its EJB is null.
CMDS_Cannot_perform_INFO_=IWAE0070I Cannot perform the command request because the EJB is null for the command:
CMDS_Cannot_add_the_feat_INFO_=IWAE0071I Cannot add the feature to the key because the feature is null for the command:
CMDS_Cannot_remove_the_INFO_=IWAE0072I Cannot remove the feature from the key because the feature is null for the command:
CMDS_Initializing_UI_=Initializing...
CMDS_Generating_UI_=Generating...
CMDS_Finishing_UI_=Finishing...
CMDS_Analyzing_UI_=Analyzing...
CMDS_Cancelled_WARNING_=Cancelled
CMDS_Multiple_EnterpriseBean_Up_INFO_=IWAE0073I Multiple EnterpriseBean Updates
CMDS_CREATING_TASK_UI_=Creating bean named "{0}"
CMDS_UPDATING_TASK_UI_=Updating bean named "{0}"
CMDS_DELETING_TASK_UI_=Deleting bean named "{0}"
CMDS_Updating_Metadata..._UI_=-- Updating Metadata...
Updating=Updating
New_key_attribute_added_wi=New key attribute added without attribute helper.
Error_has_occurred=Error has occurred

