###############################################################################
# Copyright (c) 2000, 2003 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials 
# are made available under the terms of the Common Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/cpl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

SearchForBuildFilesDialog.Search_for_Build_Files_1=Search for Buildfiles
SearchForBuildFilesDialog.&Input=&Input a buildfile name (* = any string, ? = any character):
SearchForBuildFilesDialog.Build_name_cannot_be_empty_3=Build name cannot be empty
SearchForBuildFilesDialog.&Search_4=&Search
SearchForBuildFilesDialog.Scope_5=Scope
SearchForBuildFilesDialog.&Workspace_6=&Workspace
SearchForBuildFilesDialog.Wor&king_Set__7=Wor&king Set:
SearchForBuildFilesDialog.&Choose..._8=&Choose...
SearchForBuildFilesDialog.Include_errors=Include &buildfiles that contain errors
SearchForBuildFilesDialog.Must_select_a_working_set_10=Must select a working set
SearchForBuildFilesDialog.No_searchable=No searchable resources found in the selected working set
AntViewOpenWithMenu.Editor_failed=Editor failed to open for {0}
AntViewOpenWithMenu.Default_Editor_4=Default Editor
AddBuildFilesAction.1=&Add Buildfiles
AddBuildFilesAction.2=&Select buildfiles:
AddBuildFilesAction.3=Adding Buildfile(s)...
RemoveAllAction.Remove_All=Remove A&ll Buildfiles
RemoveProjectAction.Remove=Remo&ve Buildfile
RemoveProjectAction.Remove_2=Remove Selected Buildfile
RunTargetAction.Run_1=R&un
RunTargetAction.4=&Run Ant...
RunTargetAction.Run_Default=Run the Default Target of the Selected Buildfile
RunTargetAction.2=Launching Ant buildfile
RunTargetAction.3=No target found
SearchForBuildFilesAction.Search_1=Search
SearchForBuildFilesAction.Add_build_files_with_search_2=Add Buildfiles with Search
SearchForBuildFilesAction.Processing_search_results_3=Processing search results...
SearchForBuildFilesAction.Adding_{0}_4=Adding {0}
RefreshBuildFilesAction.Refresh_Buildfiles_1=Re&fresh Buildfiles
RefreshBuildFilesAction.Refreshing_buildfiles_3=Refreshing buildfiles...
RefreshBuildFilesAction.Refreshing_{0}_4=Refreshing {0}
FilterInternalTargetsAction.0=Hide Internal Targets