###############################################################################
# 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.
AntClasspathTab.0=Add F&olders...

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.
