###############################################################################
# Copyright (c) 2000, 2004 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.0=Add Buildfiles
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