# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# 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 an auto-synchronized library?
ImportSynLibToNoSynLib_Error=Importing library data from an auto-synchronized library to a synchronization required library is not supported
ImportNoSynLibToSynLib_Error=Importing library data from a synchronization required library to an auto-synchronized library is not supported
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
