#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2007 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 implementation.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR
#
# Message ID Range:
#

# Import XML Wizard
importXMLWizard_title=Import XML

# Select Import XML File Wizard Page
selectXMLFilePage_title=Specify import file
selectXMLFilePage_desc=Specify the XML file containing the method library content to import, and select the appropriate import operation to perform.
fileLabel_text=XML File:
browseButton_text=Browse...
optionGroup_text=Merge option
optionGroup1_text=Check base plug-in option
overwriteRadioButton_text=Override existing method library content with the imported content
mergeRadioButton_text=Merge imported content into the existing method library

# Progress Messages
importingXML_text=Importing XML library content into the current method library...

# Import XML Error Dialog
review_log_files=The import operation has been completed. Review the log files in the \n''{0}'' folder for any errors.
importXMLError_msg=IUPM0000E: The import operation cannot proceed.
importXMLError_reason=IUPM0009E: The current method library is read-only.\n\nMake sure that ''{0}'' is writable or create a new method library and try again.

# Error Messages
invalidXMLFile_error=The specified XML file is not valid.
versionMismatch_oldData=IUPM0010E: The specified XML file was exported by a previous version ({0}) of {1}. The files must be exported using the current version of {1}.
versionMismatch_oldData_unknown=IUPM0011E: The specified XML file was exported by a previous version of {0}. The files must be exported using the current version of {0}.
versionMismatch_oldTool=IUPM0012E: The specified XML file was exported by a newer version ({0}) of {1}. You must upgrade {1} in order to import the file.  
versionMismatch_oldTool_unknown=IUPM0013E: The specified XML file cannot be opened. You must upgrade {0} in order to import the file.  

importXMLService_element_not_handled=Element not handled: {0}
importXMLService_element_without_id=Element without ID: {0}
importXMLService_import_failed=Import failed: {0}
importXMLService_missing_plugin=Missing required plug-in {0}
importXMLService_error_missing_plugins=Missing required plug-in(s). Please check the log files for details

library_error_no_eclass=Error creating ContentCategory: Unable to get EClass for {0}
library_no_package=Unable to find owning package for object {0}
library_error_create_element=Error creating element: {0}
library_object_string=object {0}, feature {1}
library_error_set_attribute_2=Error setting attribute: Invalid attribute feature value {0}
library_error_set_attribute=Error setting attribute for object {0}, feature {1}, and value {2}
library_error_set_attribute_3=Do not know how to set attribute for object {0}, feature {1}, and value {2}
library_error_set_reference=Error setting reference for feature {0}: no element with id {1}
library_error_set_reference_2=Error setting reference for object {0}, feature {1}, and value {2}

