###############################################################################
# Copyright (c) 2007, 2019 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
#     Rapicorp, Inc - prompt to install debian package
#     SAP SE - bug 465602
###############################################################################

BackupStore_closed_store=Can not perform operation on closed backup store.
BackupStore_0_of_1_items_restored={0} items out of {1} items restored.
BackupStore_can_not_copy_directory=Can not copy a directory: {0}
BackupStore_can_not_create_placeholder=Can not create placeholder file: {0}
BackupStore_can_not_delete_after_copy_0=File that was copied to backup could not be deleted: {0}
BackupStore_can_not_delete_tmp_file=Can not delete temporary file - it is safe to delete it manually: {0}
BackupStore_can_not_remove=Can not remove : {0}
BackupStore_can_not_remove_bu_directory=Could not remove temporary backup directory (it is safe to manually delete it and its contents): {0}
BackupStore_can_not_remove_bu_file=Could not remove temporary backup file (it is safe to manually delete it): {0}
BackupStore_directory_file_mismatch=File already backed up as a directory: {0}
BackupStore_directory_not_empty=Directory is not empty: {0}
BackupStore_errors_while_restoring_see_log=Errors while restoring - see earlier logged errors
BackupStore_externally_modified_0_of_1_restored=Backup store modified externally\! {0} items out of {1} items restored. Remaining items can not be found.
BackupStore_file_directory_mismatch=File already backed up as a file - and is now required as a directory: {0}
BackupStore_file_not_found=File does not exist: {0}.
BackupStore_manual_restore_needed=Restore failed: {0}. Manual restore of backup needed for: {1}
BackupStore_missing_backup_directory=Missing backup directory - can not restore: {0}
BackupStore_not_a_directory=File is not a directory: {0}
BlockMacUpdate_0=Installation impossible
BlockMacUpdate_1=The installation/update you are trying to perform can not be completed because of structural changes to Eclipse. The installation/update will stop and will leave your existing Eclipse installation intact. You need to retrieve a new version of Eclipse from http://download.eclipse.org/.

action_0_status=The action {0} was performed.
action_0_failed_on_file_1_reason_2=The action {0} on file {1} failed. Reason: {2}
action_0_failed_file_1_doesNotExist=The action {0} failed - file {1} does not exist
artifact_not_available=The artifact for {0} is not available.
unzipping=Extracting {0}
param_not_set=The \"{0}\" parameter was not set in the \"{1}\" action.
chmod_param_cant_be_set_together=The parameters targetFile and absoluteFiles can't be set at the same time.
artifact_repo_not_found=The artifact repository manager could not be found.
could_not_obtain_download_cache=Could not obtain the download cache location.
download_cache_not_writeable=Agent download cache not writeable: {0}.
copy_failed=I/O Error while copying {0} - see details.
failed_backup_restore=Restore of backup failed - see log for details. Backup directory name: {0}.
backup_file_failed=Backup of file {0} failed.

Cannot_Check_Package=Failed to check the status of native package: {0} version {1} on {2}. 
Cannot_Find_status=Could not find script to check the status of the package on 
Error_list_children_0=Error while retrieving children of directory: {0}
Incorrect_Command=Incorrect use of the command. One of the parameter is missing.
link_failed=Could not create link {0}.
mkdir_failed=Could not create directory {0}.
NativePackageExtractionApplication_FolderNotFound=The folder to analyze could not be found: 
NativePackageExtractionApplication_MissingParameters=Missing arguments, please specify {0} and {1}.
NativePackageExtractionApplication_MissingValue=The value is missing for argument {0}.  
NativePackageExtractionApplication_PersistencePb=error while persisting results in 
NativeTouchpoint_PromptForNative_RequiredBy=(Required by {0})
NativeTouchpoint_PromptForNative_YouCanDownloadFrom=You can download those from the following locations:\n
PromptForNative_InstallText=\n You can install those by executing the following command: \n\t
PromptForNative_IntroText=The software you installed requires the following OS packages to be installed: \n
PromptForNative_DialogTitle=Install Native Software Packages
rmdir_failed=Could not remove directory {0}.
Util_Invalid_Zip_File_Format=Invalid zip file format
Util_Error_Unzipping=Error unzipping {0}: {1}
