###############################################################################
# Copyright (c) 2000, 2010 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
#     dakshinamurthy.karra@gmail.com - bug 165371
###############################################################################

ExternalToolsMainTab__Location___2=&Location:
ExternalToolsMainTab__Browse_Workspace____3=Browse Works&pace...
ExternalToolsMainTab_Brows_e_File_System____4=Brows&e File System...
ExternalToolsMainTab_Working__Directory__5=Working &Directory:
ExternalToolsMainTab_Browse_Wor_kspace____6=Browse Wor&kspace...
ExternalToolsMainTab_Browse_F_ile_System____7=Browse File Syste&m...
ExternalToolsMainTab_Error_reading_configuration_10=Error reading configuration
ExternalToolsMainTab__Main_17=Main
ExternalToolsMainTab_External_tool_location_cannot_be_empty_18=External tool location cannot be empty
ExternalToolsMainTab_External_tool_location_does_not_exist_19=External tool location does not exist
ExternalToolsMainTab_External_tool_location_specified_is_not_a_file_20=External tool location specified is not a file
ExternalToolsMainTab_External_tool_working_directory_does_not_exist_or_is_invalid_21=External tool working directory does not exist or is invalid
ExternalToolsMainTab_Select_a_resource_22=Select a resource:
ExternalToolsMainTab_23=Select a working directory:
ExternalToolsMainTab__Arguments___1=&Arguments:
ExternalToolsMainTab_Varia_bles____2=Variable&s...
ExternalToolsMainTab_3=Note: Enclose an argument containing spaces using double-quotes (\").
ExternalToolsMainTab_Error_reading_configuration_7=Error reading configuration
ExternalToolsMainTab_Not_a_directory=The specified location is not a directory
ExternalToolsMainTab_30=Please specify the location of the external tool you would like to configure.
ExternalToolsMainTab_31=Var&iables...
ExternalToolsMainTab_32=Varia&bles...

ExternalToolsBuildTab_1=&Build before launch
ExternalToolsBuildTab_2=The &entire workspace
ExternalToolsBuildTab_3=The &project containing the selected resource
ExternalToolsBuildTab_4=&Specific projects
ExternalToolsBuildTab_5=P&rojects...
ExternalToolsBuildTab_6=Include referenced pro&jects
ExternalToolsBuildTab_7=Select &Projects:
ExternalToolsBuildTab_8=Build
ExternalToolsBuildTab_9=No projects specified

# these messages are present for compatibility with 3.4 - see bug 301183
ExternalToolsUtil_Location_not_specified_by__0__1=Location not specified by {0}
ExternalToolsUtil_invalidLocation__0_ = The file does not exist for the external tool named {0}.
ExternalToolsUtil_invalidDirectory__0_ = The working directory {0} does not exist for the external tool named {1}.
# end 

ExternalToolsBuilderTab_Run_this_builder_for__1=Run the builder:
ExternalToolsBuilderTab__Full_builds_2=A&fter a \"Clean\"
ExternalToolsBuilderTab_Full=Runs on the first build that occurs after a clean.
ExternalToolsBuilderTab__Incremental_builds_4=&During manual builds
ExternalToolsBuilderTab_Inc=Runs whenever the user invokes a build (but not for auto-build).
ExternalToolsBuilderTab__Auto_builds__Not_recommended__6=During a&uto builds
ExternalToolsBuilderTab_Auto=Runs whenever a resource in the workspace is modified if autobuilding is enabled. Enabling this option should be paired with a specifying a resource working set.
ExternalToolsBuilderTab_Build_Options_9=&Build Options
ExternalToolsBuilderTab_workingSet_label=Specify working set of &relevant resources
ExternalToolsBuilderTab_workingSet_tooltip=The working set of resources that if changed from a manual or auto build will trigger the external tool builder
ExternalToolsBuilderTab_buildKindError=At least one type of build kind must be selected
ExternalToolsBuilderTab_14=Launch in bac&kground
ExternalToolsBuilderTab_13=&Specify Resources...
ExternalToolsBuilderTab_16=Must select resources in working set.
ExternalToolsBuilderTab_15=workingSet
ExternalToolsBuilderTab_17=Standard Input and Output
ExternalToolsBuilderTab_18=Allocate &Console (necessary for input)
ExternalToolsBuilderTab_19=Fi&le
ExternalToolsBuilderTab_0=During a "&Clean"
ExternalToolsBuilderTab_1=Runs when a "clean" has been initiated
ExternalToolsBuilderTab_2=Note: Not applied for the builds during or after a \"Clean\"
ExternalToolsBuilderTab_20=Browse Worksp&ace...
ExternalToolsBuilderTab_21=Browse File Syste&m...
ExternalToolsBuilderTab_22=Varia&bles...
ExternalToolsBuilderTab_23=A&ppend
ExternalToolsBuilderTab_24=Select a Resource
ExternalToolsBuilderTab_25=Select a resource to redirect output to:
ExternalToolsBuilderTab_26=No file specified for process output
