# =====================================
# (c) Copyright IBM Corp. 2002.
# All Rights Reserved.
# =====================================

#
# 'Compare with Patch' Action
#
PatchAction.ExceptionTitle=Saving Resources
PatchAction.Exception=Unexpected exception. See log for details
PatchAction.SavingDirtyEditorsTask=Saving dirty editors
PatchAction.AlwaysSaveQuestion=&Always save all modified resources automatically prior to patching
PatchAction.SaveAllQuestion=Save all modified resources
PatchAction.SaveAllDescription=All modified resources must be saved before this operation.\nPress OK to confirm or Cancel otherwise

#
# PatchWizard
#
PatchWizard.title=Resource Patcher

#
# InputPatchPage
#
InputPatchPage.title= Patch Input Specification
InputPatchPage.message= Define what resource to patch with which patch
InputPatchPage.Clipboard=Clipboard
InputPatchPage.SelectInput=Select a single file or folder to patch:
InputPatchPage.PatchErrorDialog.title=Patch Error
InputPatchPage.PatchErrorDialog=Patch Error
InputPatchPage.SelectPatch.title=Select Patch
InputPatchPage.FileButton.text=File
InputPatchPage.ChooseFileButton.text=&Browse...
InputPatchPage.UseClipboardButton.text=Clipboard
InputPatchPage.NothingSelected.message=Nothing selected to apply patch to
InputPatchPage.ClipboardIsEmpty.message=Clipboard is empty
InputPatchPage.NoTextInClipboard.message=Clipboard does not contain text
InputPatchPage.CouldNotReadClipboard.message=Couldn''t retrieve clipboard contents
InputPatchPage.CannotLocatePatch.message=Can''t locate patch file: 
InputPatchPage.NoFileName.message=No file name
InputPatchPage.SelectPatchFileDialog.title=Select Patch File
InputPatchPage.PatchFileNotFound.message=Patch file not found.
InputPatchPage.ParseError.message=Error while parsing patch
InputPatchPage.NoDiffsFound_Clipboard.message=Clipboard does not contain valid patch
InputPatchPage.NoDiffsFound_File.message=File does not contain valid patch

#
# PreviewPatchPage
#
PreviewPatchPage.title= Verify Patch
PreviewPatchPage.message= The tree shows the contents of the patch.\nA checked item indicates that a patch could be applied succesfully. Uncheck an item if you want to exclude it.
PreviewPatchPage.Left.title= Original
PreviewPatchPage.Right.title= Result
PreviewPatchPage.PatchOptions.title=Patch Options
PreviewPatchPage.IgnoreSegments.text=Ignore leading path name segments:
PreviewPatchPage.ReversePatch.text=Reverse Patch
PreviewPatchPage.FuzzFactor.text=Maximum fuzz factor:
PreviewPatchPage.FuzzFactor.tooltip=Allow context to shift this number of lines from the original place
PreviewPatchPage.IgnoreWhitespace.text=Ignore Whitespace
PreviewPatchPage.NoName.text=no name
PreviewPatchPage.FileExists.error=(file already exists)
PreviewPatchPage.FileDoesNotExist.error=(file doesn''t exist)
PreviewPatchPage.NoMatch.error=(no match)

#
# Patcher
#
Patcher.ErrorDialog.title=title
Patcher.DeleteError.message=Error while deleting resource
Patcher.UpdateError.message=Error while updating resource
Patcher.RefreshError.message=Error while refreshing from local
Patcher.Marker.message=Rejected patch
Patcher.Task.message=Patching

#
# PatchCompareInput
#
PatchCompareInput.RightTitle.format= Patch: {0}
