###############################################################################
# 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
###############################################################################
#This properties file contains string for Archive operations of EARs,EJBs and Application Clients.

ARCHIVE_OPERATION_SaveMofResources=Error occured saving the metadata file.
ARCHIVE_OPERATION_SaveFile=Error occured saving the File..
ARCHIVE_OPERATION_ProjectNature=Error getting project nature runtime..
ARCHIVE_OPERATION_SaveManifest=Error occured saving the manifest..
ARCHIVE_OPERATION_FileNotFound=Error: File not found
ARCHIVE_OPERATION_FileContents=Core exception caught in gettting file contents..
ARCHIVE_OPERATION_ErroOccured=Error occured...
ARCHIVE_OPERATION_FilesFromProject=Unable to get files from the project..
ARCHIVE_OPERATION_OpeningArchive=Error opening archive for export..
ARCHIVE_OPERATION_InvalidEJBJar=The JAR file is not a valid EJB JAR
ARCHIVE_OPERATION_InvalidImportEJBJar=The import file is not a valid EJB JAR
ARCHIVE_OPERATION_ImportOperation=Import Operation Failed!
EJB_IMPORT_OPERATION_STRING=Importing EJB JAR..
EJB_IMPORT_FILE_STRING=Importing file..
IMPORT_MOFRESOURCE_STRING=Importing meta-data..
IMPORT_OPERATION_STRING=Importing JAR..
ERROR_COPYING_FILES_FROM_ORIGINAL_JAR=An error occurred copying files from the original EJB JAR file
ERROR_IMPORTING_MODULE_FILE=Error importing Module File
Yes_UI=Yes
No_UI=No
Yes_To_All_UI=Yes to All
Cancel_UI_=Cancel
Error_exporting__UI_=Error exporting
EJB_Jar_File_UI_=EJB JAR File

