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

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.Could_not_load_the_version_information._{0}_9=Could not load the version information. {0}
InternalAntRunner.Could_not_load_the_version_information._10=Could not load the version information.
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_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.12=print information that might be helpful to
InternalAntRunner.13=\t\t\t\t\t\t\tdiagnose or report problems.
InternalAntRunner.19=load all properties from file with -D
InternalAntRunner.20=\t\t\t\t\t\t\tproperties taking precedence
InternalAntRunner.22=the class which will handle input requests
InternalAntRunner.1=\t\t\t\t\'\'
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.The_diagnositics_options_is_an_Ant_1.5.*_feature._Please_update_your_Ant_classpath_to_include_an_Ant_version_greater_than_this._4=The diagnostics 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.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.157=-lib not supported\nConfigure the Ant runtime classpath using either the\nglobal Ant runtime classpath or the Ant runtime classpath\n for this particular build
InternalAntRunner.158=\t\t\tdo not allow interactive input
InternalAntRunner.159=\t\texecute all targets that do not depend
InternalAntRunner.160=\t\t\t\t\t\ton failed target(s)
InternalAntRunner.161=Class {0} not found for task {1}
InternalAntRunner.162=Class {0} not found for type {1}

RemoteAntBuildLogger.1=BUILD FAILED
RemoteAntBuildLogger.Total_time=Total time: 
RemoteAntBuildLogger._minutes_2=\ minutes
RemoteAntBuildLogger._minute_3=\ minute
RemoteAntBuildLogger._seconds_4=\ seconds
RemoteAntBuildLogger._second_5=\ second
RemoteAntBuildLogger._milliseconds_6=\ milliseconds

SWTInputHandler.0=Unable to respond to input request as a result of the user specified -noinput command
SWTInputHandler.1=Ant Input Request
SWTInputHandler.2=Unable to respond to <input> request
SWTInputHandler.3=Input does not match validargs attribute
SWTInputHandler.4=OK
SWTInputHandler.5=Cancel
