###############################################################################
# Copyright (c) 2000, 2003 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
###############################################################################

ExternalToolsMainTab.&Location___2=&Location: 
ExternalToolsMainTab.&Browse_Workspace..._3=&Browse Workspace...
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 F&ile System...
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.&Select_a_directory__23=&Select a working directory:
ExternalToolsMainTab.&Arguments___1=&Arguments: 
ExternalToolsMainTab.Varia&bles..._2=Variable&s...
ExternalToolsMainTab.Note__Enclose_an_argument_containing_spaces_using_double-quotes_(__)._Not_applicable_for_variables._3=Note: Enclose an argument containing spaces using double-quotes (\").\nNot applicable for variables.
ExternalToolsMainTab.Run_tool_in_bac&kground_4=&Run tool in background
ExternalToolsMainTab.Error_reading_configuration_7=Error reading configuration
ExternalToolsMainTab.Select_variable_10=Select variable
ExternalToolsMainTab.&Choose_a_variable__11=&Choose a variable:
ExternalToolsMainTab.Invalid_selection_12=Invalid selection

ExternalToolsRefreshTab.Recursively_&include_sub-folders_1=Recursively &include sub-folders
ExternalToolsRefreshTab.Choose_scope_v&ariable___2=Choose scope v&ariable: 
ExternalToolsRefreshTab.Exception_reading_launch_configuration_3=Exception reading launch configuration
ExternalToolsRefreshTab.Refres&h_6=Refresh
ExternalToolsRefreshTab.&Refresh_resources_after_running_tool_1=&Refresh resources after running tool

ExternalToolsUtil.Location_not_specified_by_{0}_1=Location not specified by {0}
ExternalToolsUtil.Exception(s)_occurred_during_refresh._2=Exception(s) occurred during refresh.
ExternalToolsUtil.runProblem = Could not run the external tool.

ExternalToolsUtil.invalidLocation = The file does not exist for the external tool named {0}.
ExternalToolsUtil.invalidDirectory = The working directory {0} does not exist for the external tool named {1}.
ExternalToolsUtil.refreshResources = Refresh resources...

ExternalToolsUtil.invalidRefreshVarFormat = Invalid refresh scope variable format for the external tool named {0}.
ExternalToolsUtil.noRefreshVarNamed = Could not find refresh scope variable called ''{1}'' for the external tool named {0}.

ExternalToolsBuilderTab.Run_this_builder_for__1=Run this builder for:
ExternalToolsBuilderTab.&Full_builds_2=&Full builds
ExternalToolsBuilderTab.Full=Runs whenever a full build is invoked. The \"Rebuild All\" action causes a full build.
ExternalToolsBuilderTab.&Incremental_builds_4=&Incremental builds
ExternalToolsBuilderTab.Inc=Runs whenever an incremental build is invoked. The \"Build All\" action causes an incremental build.
ExternalToolsBuilderTab.&Auto_builds_(Not_recommended)_6=&Auto builds (Not recommended)
ExternalToolsBuilderTab.Auto=Runs whenever a resource in the workspace is modified if autobuilding is enabled. Enabling this option will cause the builder to run very often and is not recommended.
ExternalToolsBuilderTab.Build_Options_9=Build Options
ExternalToolsMainTab.Invalid_Expected_closing_}=Invalid variable format. Expected closing }
ExternalToolsMainTab.No_variable_specified=Invalid variable format. No variable specified
ExternalToolsMainTab.Unknown_variable=Unknown variable: {0}
ExternalToolsMainTab.Not_a_directory=The specified location is not a directory
