###############################################################################
# Copyright (c) 2000, 2009 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
#     dakshinamurthy.karra@gmail.com - bug 165371
###############################################################################

AddVariableStringAction_1=Add Varia&ble...
AddVariableStringAction_2=&Classpath Entry Value:
AddVariableStringAction_3=&Variables...
AddVariableStringAction_4=Add Variable Classpath Entry

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

AntJRETab_2=Run in the same &JRE as the workspace
AntJRETab_3=Se&parate JRE:

AntBuilderTargetsTab_0=<Builder is not set to run for this build kind>
AntBuilderTargetsTab_1=After a "Clean":
AntBuilderTargetsTab_2=&Set Targets...
AntBuilderTargetsTab_3=Manual Build:
AntBuilderTargetsTab_4=Set &Targets...
AntBuilderTargetsTab_5=Auto Build:
AntBuilderTargetsTab_6=Set T&argets...
AntBuilderTargetsTab_7=During a "Clean":
AntBuilderTargetsTab_8=Set Tar&gets...
AntBuilderTargetsTab_10=<default target selected>

AntMainTab__Select_a_build_file__1=&Select a buildfile:
AntMainTab_3=Base Direct&ory:
AntMainTab_6=Buildfi&le:
AntMainTab_0=Set an Input &handler
AntMainTab_1=Error reading configuration

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_Error_reading_configuration_12=Error reading configuration
AntTargetsTab_12=&Hide internal targets not selected for execution
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.
AntTargetsTab_0=Buildfile contains errors/problems. Check syntax and classpath
AntTargetsTab_1=No targets could be determined for the buildfile
AntClasspathTab_0=Add F&olders...

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.
SetTargetsDialog_0=Set Targets

AntWorkingDirectoryBlock_0=Exception occurred reading configuration: {0}
