###############################################################################
# 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
###############################################################################

AntLaunchDelegate.Launching_{0}_1=Launching {0}
AntLaunchDelegate.Running_{0}_2=Running {0}
AntLaunchDelegate.Build_In_Progress=Ant build {0} already in progress. Concurrent Ant builds are possible if you specify to build in a separate JRE.
AntLaunchDelegate.Failure=Failure of Background Ant Build
AntLaunchDelegate.22=&Do not show error dialog when Ant build fails
AntLaunchDelegate.23=Ant Build Failed
AntLaunchDelegate.28=Waiting for virtual machine to exit...

AntLaunchShortcut.Unable=Unable to find an Ant file to run.
AntLaunchShortcut.An_exception_occurred_while_creating_a_default_Ant_launch_configuration_for_{0}_2=An exception occurred while creating a default Ant launch configuration for {0}
AntLaunchShortcut.An_exception_occurred_while_retrieving_Ant_launch_configurations._3=An exception occurred while retrieving Ant launch configurations.
AntLaunchShortcut.Ant_Configuration_Selection_4=Ant Configuration Selection
AntLaunchShortcut.Choose_an_ant_configuration_to_run_5=&Choose an Ant configuration to run:
AntLaunchShortcut.Ant_builds_only_support___run___mode._6=Ant builds only support \'run\' mode.
AntLaunchShortcut.Error_7=Error
AntLaunchShortcut.Build_Failed_2=Build Failed
AntLaunchShortcut.Exception_launching=An exception occurred while launching {0}
AntLaunchShortcut.12=Location of file could not be determined: {0}

AntPropertiesTab.&Properties__6=&Properties:
AntPropertiesTab.Property_f&iles__7=P&roperty files:
AntPropertiesTab.P&roperties_8=Properties
AntPropertiesTab.Error_reading_configuration_9=Error reading configuration
AntPropertiesTab.6=Use &global properties as specified in the Ant runtime preferences

AntTargetLabelProvider.default_target_1=default target

AntJRETab.2=&Run in the same JRE as the workspace

AntHomeClasspathEntry.8=ANT_HOME (Default)
AntHomeClasspathEntry.9=ANT_HOME ({0})
AntHomeClasspathEntry.10=ANT_HOME {0} does not exist
AntHomeClasspathEntry.11=ANT_HOME {0} does not contain a "lib" directory

AntMainTab.&Select_a_build_file__1=&Select a buildfile:
AntMainTab.Base_&Directory__3=Base &Directory:
AntMainTab.Capture_&output_1=Capture &output
AntMainTab.6=Buildfi&le:

AntTargetsTab.Check_targets_to_e&xecute__1=Check targets to e&xecute:
AntTargetsTab.0_out_of_0_selected_2=0 out of 0 selected
AntTargetsTab.Target_execution_order__3=Target execution order:
AntTargetsTab.&Order..._4=&Order...
AntTargetsTab.Name_5=Name
AntTargetsTab.Description_6=Description
AntTargetsTab.{0}_out_of_{1}_selected_7={0} out of {1} selected
AntTargetsTab.Tar&gets_14=Targets
AntTargetsTab.No_targets=No targets selected for build
AntTargetsTab.Error_reading_configuration_12=Error reading configuration
AntTargetsTab.12=&Hide internal targets
AntTargetsTab.13={0} out of {1} selected ({2} internal target(s) hidden)
AntTargetsTab.14=&Sort targets

ContributedClasspathEntriesEntry.1=Additional Tasks & Support

EditAntHomeEntryAction.1=Ant &Home...

TargetOrderDialog.Order_Targets_1=Order Targets
TargetOrderDialog.&Specify_target_execution_order__2=&Specify target execution order:
TargetOrderDialog.&Up_3=&Up
TargetOrderDialog.&Down_4=&Down
