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

InternalAntRunner.Build_file__{0}_1=Buildfile: {0}
InternalAntRunner.Arguments__{0}_2=Arguments: {0}
InternalAntRunner.Default_target__3=Default target:
InternalAntRunner.Main_targets__4=Main targets:
InternalAntRunner.Subtargets__5=Subtargets:
InternalAntRunner.Unable_to_instantiate_logger__{0}_6=Unable to instantiate logger: {0}
InternalAntRunner.options_13=options
InternalAntRunner.target_15=target
InternalAntRunner.Options___21=Options: 
InternalAntRunner.print_this_message_23=print this message
InternalAntRunner.print_project_help_information_25=print project help information
InternalAntRunner.print_the_version_information_and_exit_27=print the version information and exit
InternalAntRunner.be_extra_quiet_29=be extra quiet
InternalAntRunner.be_extra_verbose_31=be extra verbose
InternalAntRunner.print_debugging_information_33=print debugging information
InternalAntRunner.produce_logging_information_without_adornments_35=produce logging information without adornments
InternalAntRunner.use_given_file_for_log_37=use given file for log
InternalAntRunner.the_class_which_is_to_perform_logging_39=the class which is to perform logging
InternalAntRunner.add_an_instance_of_class_as_a_project_listener_41=add an instance of class as a project listener
InternalAntRunner.use_given_buildfile_43=use given buildfile
InternalAntRunner.use_value_for_given_property_45=use value for given property
InternalAntRunner.Using_{0}_file_as_build_log._1=Using {0} file as build log.
InternalAntRunner.Could_not_write_to_the_specified_log_file__{0}._Make_sure_the_path_exists_and_you_have_write_permissions._2=Cannot write on the specified log file: {0}. Make sure the path exists and you have write permissions.
InternalAntRunner.BUILD_SUCCESSFUL_1=BUILD SUCCESSFUL
InternalAntRunner.Unknown_argument__{0}_2=Unknown argument: {0}
InternalAntRunner.Buildfile__{0}_does_not_exist_!_1=Buildfile: {0} does not exist\!
InternalAntRunner.{0}_which_was_specified_to_be_a_build_listener_is_not_an_instance_of_org.apache.tools.ant.BuildListener._1={0} which was specified to be a build listener is not an instance of org.apache.tools.ant.BuildListener.
InternalAntRunner.{0}_which_was_specified_to_perform_logging_is_not_an_instance_of_org.apache.tools.ant.BuildLogger._2={0} which was specified to perform logging is not an instance of org.apache.tools.ant.BuildLogger.
InternalAntRunner.You_must_specify_a_classname_when_using_the_-listener_argument_1=You must specify a classname when using the -listener argument
InternalAntRunner.You_must_specify_a_classname_when_using_the_-logger_argument_2=You must specify a classname when using the -logger argument
InternalAntRunner.You_must_specify_a_log_file_when_using_the_-log_argument_3=You must specify a log file when using the -log argument
InternalAntRunner.You_must_specify_a_buildfile_when_using_the_-buildfile_argument_4=You must specify a buildfile when using the -buildfile argument
InternalAntRunner.print_information_that_might_be_helpful_to_12=print information that might be helpful to
InternalAntRunner._t_t_t_t_t_t_t_t_t_t_tdiagnose_or_report_problems._13=\t\t\t\t\t\t\t\t\t\t\tdiagnose or report problems.
InternalAntRunner._t_t_t_t_t_t_t_t_____15=\t\t\t\t\t\t\t\t\'\'
InternalAntRunner.load_all_properties_from_file_with_-D_19=load all properties from file with -D
InternalAntRunner._t_t_t_t_t_t_t_t_t_t_tproperties_taking_precedence_20=\t\t\t\t\t\t\t\t\t\t\tproperties taking precedence
InternalAntRunner.the_class_which_will_handle_input_requests_22=the class which will handle input requests
InternalAntRunner._t_t_t_t_t_t_t_____1=\t\t\t\t\t\t\t\'\'
InternalAntRunner.Class_{0}_not_found_for_task_{1}_1=Class {0} not found for task {1}
InternalAntRunner.Class_{0}_not_found_for_type_{1}_2=Class {0} not found for type {1}
InternalAntRunner.Only_one_logger_class_may_be_specified_1=Only one logger class may be specified
InternalAntRunner.You_must_specify_a_classname_when_using_the_-inputhandler_argument_1=You must specify a classname when using the -inputhandler argument
InternalAntRunner.Only_one_input_handler_class_may_be_specified._2=Only one input handler class may be specified.
InternalAntRunner.You_must_specify_a_property_filename_when_using_the_-propertyfile_argument_3=You must specify a property filename when using the -propertyfile argument
InternalAntRunner.Could_not_load_property_file_{0}__{1}_4=Could not load property file {0}: {1}
InternalAntRunner.The_specified_input_handler_class_{0}_does_not_implement_the_org.apache.tools.ant.input.InputHandler_interface_5=The specified input handler class {0} does not implement the org.apache.tools.ant.input.InputHandler interface
InternalAntRunner.Unable_to_instantiate_specified_input_handler_class_{0}___{1}_6=Unable to instantiate specified input handler class {0} : {1}
InternalAntRunner.Specifying_an_InputHandler_is_an_Ant_1.5.*_feature._Please_update_your_Ant_classpath_to_include_an_Ant_version_greater_than_this._2=Specifying an InputHandler is an Ant 1.5.* feature. Please update your Ant classpath to include an Ant version greater than this.
InternalAntRunner.The_diagnositics_options_is_an_Ant_1.5.*_feature._Please_update_your_Ant_classpath_to_include_an_Ant_version_greater_than_this._4=The diagnositics options is an Ant 1.5.* feature. Please update your Ant classpath to include an Ant version greater than this.
InternalAntRunner.Specifying_property_files_is_a_Ant_1.5.*_feature._Please_update_your_Ant_classpath._6=Specifying property files is a Ant 1.5.* feature. Please update your Ant classpath to include an Ant version greater than this.
InternalAntRunner.Default_target_{0}{1}{2}_does_not_exist_in_this_project_1=Default target {0}{1}{2} does not exist in this project
InternalAntRunner.ANT_HOME_must_be_set_to_use_Ant_diagnostics_2=ANT_HOME must be set to use Ant diagnostics
InternalAntRunner.Buildfile__{0}_is_not_a_file_1=Buildfile: {0} is not a file
InternalAntRunner.-find_not_supported=-find not supported.\nCan be emulated using Run As > Ant Build located\nin the Run > External Tools menu
InternalAntRunner.Error_setting_Ant_task=Error setting Ant task {0}
InternalAntRunner.Missing_Class=Could not load a class required for parsing targets

ProgressBuildListener.Build_cancelled._5=Build cancelled.
