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

AddVariableStringAction.1=Add Varia&ble...
AddVariableStringAction.2=&Classpath Entry Value:
AddVariableStringAction.3=&Variables...
AddVariableStringAction.4=Add Variable Classpath Entry
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.0=A location could not be resolved for buildfile

AntLaunchShortcut.Unable=Unable to find an Ant file to run.
AntLaunchShortcut.2=An exception occurred while creating a default Ant launch configuration for {0}
AntLaunchShortcut.3=An exception occurred while retrieving Ant launch configurations.
AntLaunchShortcut.4=Ant Configuration Selection
AntLaunchShortcut.5=&Choose an Ant configuration to run:
AntLaunchShortcut.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}

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
AntJRETab.3=Separate &JRE:

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
AntTargetsTab.15=Buildfile does not exist
AntTargetsTab.16=Buildfile specified is not a file
AntTargetsTab.17=Target selection is not possible as buildfile location contains variable(s) that cannot be resolved until runtime.

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

AntEnvironmentTab.0=An environment can only be used when running in a separate JRE.\nThis setting can be configured on the JRE tab.
