#-------------------------------------------------------------------------------
# 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: IUPE0200E - IUPE0299E
#

# Import Library Configuration Wizard
importConfigWizard_title=Import Library Configuration
selectConfigDirWizardPage_title=Specify import directory
selectConfigDirWizardPage_text=Specify the directory containing the library configuration to import.
reviewChangesWizardPage_title=Review library changes
reviewChangesWizardPage_text=Review the changes that will be made to the current method library.
selectConfigSpecsWizardPage_title=Select configuration specifications
selectConfigSpecsWizardPage_text=Select one or more configuration specifications to import.

# Import Method Plug-ins Wizard
importPluginsWizard_title=Import Method Plug-ins
selectPluginsDirWizardPage_title=Specify import directory
selectPluginsDirWizardPage_text=Specify the directory containing the method plug-ins to import.
selectPluginsWizardPage_title=Select method plug-ins
selectPluginsWizardPage_text=Select one or more method plug-ins to import. If a selected plug-in already exists in the current method library, verify the version differences.
importPluginsWizard_ERR_Import_plugin=Import plug-in failed

ConfigurationImportService_MSG0=Validating selected library configuration...
ConfigurationImportService_MSG1=The specified directory does not contain a valid configuration.
ConfigurationImportService_MSG3=Importing method configuration...
ConfigurationImportService_MSG2=Cannot import the currently opened library into itself.
ImportConfigurationWizard_MSG1=Importing method configuration...
ImportConfigurationWizard_ERR_Import_configuration=Import configuration failed

FileModifyChecker_Checkout_failed_title=Checkout failed
FileModifyChecker_Checkout_failed_msg=Some files are not checked out, do you want to try again?

ImportConfigReportPage_title=Importing Configuration Report
ImportPluginWizard_readonly=IUPE0201E: Library is read-only.
ImportPluginWizard_MSG1=Importing method plug-in...
ImportPluginWizard_error=Error
ImportPluginWizard_warn_existing_plugins=IUPE0200E: The following selected plug-in(s) already exist and re-importing the same plug-in(s) will overwrite the existing one(s):\n\n {0} \n\nAre you sure you want to continue?
ImportPluginWizard_confirm_continue=\n\nAre you sure you want to continue?
ImportPluginWizard_warn_circular_plugins=Circular references detected among the following plug-ins
ImportNoSynLib_ConvertMsg=Do you want to convert the imported library to a process synchronization free library?
ImportSynLibToNoSynLib_Error=Cannot import a process synchronization required library to a process synchronization free library.

SelectConfigsToImport_label1=The following elements will be imported:
ImportConfigurationWizard_error=Error
SelectImportConfigurationSource_MSG1=Analyzing
SelectConfigSpecsToImportPage_title2=Select configuration specifications to import
SelectImportPluginSource_not_used=not_used
SelectImportPluginSource_no_path=The specified directory does not exist.
SelectImportPluginSource_no_dir=No directory specified
SelectPluginsToImport_label_plugins=Available plug-ins in the import directory:
SelectPluginsToImport_label_author=Author:
SelectPluginsToImport_label_version=Version:
SelectPluginsToImport_label_desc=Brief description:
ImportConfigurationWizard_readonly=IUPE0201E: Library is read-only.
PluginImportingService_MSG0=Validating selected plug-ins...
PluginImportingService_MSG1=The specified path does not contain a valid method plug-in.
PluginImportingService_MSG3=Importing method plug-in...
PluginImportingService_MSG5=The selected method plug-in cannot be imported. Its dependent plug-in ''{0}'' cannot be found in the current method library.
PluginImportingService_MSG6=The selected method plug-in cannot be imported. A dependent plug-in cannot be found in the current method library.
DiffReportViewer_content=Content
DiffReportViewer_in_import=In Import
SelectPluginsToImport_MSG1=Analyzing files...
DiffReportLabelProvider_yes=Yes
SelectPluginsToImport_error=Error
DiffReportViewer_in_lib=In Library
DiffReportViewer_status=Status
SelectPluginsToImport_libraryPluginExists=Selected plug-in found in the current library
SelectPluginsToImport_libraryPluginNotExists=Selected plug-in not found in the current library
SelectConfigSpecsToImportPage_libraryConfigSpecExists=Configuration found in the current library
SelectConfigSpecsToImportPage_configSpecNoSelection=No configuration specification selected.
SelectConfigSpecsToImportPage_configSpecDataLabel=Selected configuration in the import directory
SelectConfigSpecsToImportPage_label_configs=Available configuration specifications in the import directory:
SelectImportConfigurationSource_not_used=not_used
SelectConfigSpecsToImportPage_label_desc=Brief description:
SelectImportConfigurationSource_no_path=The specified path does not exist.
SelectPluginsToImport_pluginNoSelection=No plug-in selected.
SelectImportConfigurationSource_no_dir=No directory specified
SelectImportConfigurationSource_plugin_readonly=Plug-in {0} is read-only\n
SelectImportConfigurationSource_plugin_locked=IUPE0203E: Plug-in {0} is locked\n
SelectImportConfigurationSource_error_not_updatable=Some of the plug-in(s) in the library are either locked or read-only.\n Please unlock the plug-ins and make sure the files are updatable.
SelectPluginsToImport_pluginDataLabel=Selected plug-in in the import directory
DiffReportViewer_type=Content Type
SelectConfigSpecsToImportPage_libraryConfigSpecNotExists=Selected configuration not found in the current library.
versionMismatch_oldData=IUPE0204E: The specified files were exported by a previous version ({0}) of {1}. The files must be exported using the current version of {1}.
versionMismatch_oldData_unknown=IUPE0205E: The specified files were exported by a previous version of {0}. The files must be exported using the current version of {0}.
versionMismatch_oldTool=IUPE0206E: The specified files were exported by a newer version ({0}) of {1}. You must upgrade {1} in order to import the files.  
versionMismatch_oldTool_unknown=IUPE0207E: The specified files cannot be opened. You must upgrade {0} in order to import the files.
ConfigurationImportService_handleToolVersion_error=IUPE0208E: Failed to upgrade the plug-in(s).
optionGroup_text=Import option
checkBaseRadioButton_text=Check base plug-ins
ignoreRemoveRadioButton_text=Ignore and remove unresolved references
