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

AntBuildTab.1=&Build before launch
AntBuildTab.2=The &entire workspace
AntBuildTab.3=The &project containing the selected resource
AntBuildTab.4=&Specific projects
AntBuildTab.5=P&rojects...
AntBuildTab.6=Include referenced pro&jects
AntBuildTab.7=Select Projects
AntBuildTab.8=Build
AntBuildTab.9=No projects specified

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 o&utput
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.
