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

AntClasspathBlock.1=Choose a folder to add to the classpath:
AntClasspathBlock.addFolderButtonTitle = Add &Folder...
AntClasspathBlock.addJarButtonTitle = Add &JARs...
AntClasspathBlock.upButtonTitle = &Up
AntClasspathBlock.downButtonTitle = Do&wn
AntClasspathBlock.removeButtonTitle = R&emove
AntClasspathBlock.addFolderButtonTitle2 = Add F&older...
AntClasspathBlock.addJarButtonTitle2 = Add JAR&s...
AntClasspathBlock.upButtonTitle2 = U&p
AntClasspathBlock.downButtonTitle2 = Dow&n
AntClasspathBlock.removeButtonTitle2 = Re&move
AntClasspathBlock.3=Choose a folder that will be used as the location of ANT_HOME
AntClasspathBlock.Specified_ANT_HOME_does_not_contain_a___lib___directory_7=Specified ANT_HOME does not contain a \"lib\" directory
AntClasspathBlock.Run&time_classpath__8=Runt&ime classpath:
AntClasspathBlock.Set_ANT_HO&ME_9=Set ANT_&HOME
AntClasspathBlock.&Browse..._10=&Browse...
AntClasspathBlock.Additional_classpath_entries__11=Additional &classpath entries:
AntClasspathBlock.31=No tools.jar
AntClasspathBlock.32=The specified Ant runtime classpath does not include a tools.jar library. This may affect the ability to use various tasks. Ignore this possible problem?
AntClasspathBlock.33=&Show this tools.jar warning again
AntClasspathBlock.34=No tools.jar is specified in the Ant runtime classpath
AntClasspathBlock.35=Xerces JARs
AntClasspathBlock.36=The Xerces JAR {0} is on the Ant runtime classpath. Ignore this possible problem?
AntClasspathBlock.37=&Show this Xerces warning again
AntClasspathBlock.38=Xerces JAR {0} is specified in the Ant runtime classpath
AntClasspathBlock.42=Add E&xternal JARs...
AntClasspathBlock.43=Add Externa&l JARs...
AntClasspathBlock.44=JAR Selection
AntClasspathBlock.45=&Choose JARs and ZIPs to add:

AntClasspathPage.title = C&lasspath

AddCustomDialog.Bad_Format=Specified zip file is not in the correct format
AddCustomDialog.Unreadable=Specified zip file could not be read
AddCustomDialog.&Name__3=&Name:
AddCustomDialog.Could_not_close_zip_file_{0}_4=Could not close zip file {0}
AddCustomDialog.&Location=&Location:
AddCustomDialog.mustSelect=A class file must be selected from the specified location

AntPreferencePage.description = Settings used when running Ant buildfiles:
AntPreferencePage.General=General Ant Settings:
AntPreferencePage.Enter=File names used to emulate \"-find\".\nUsed by \"Run As > Ant Build\" when the current selection is not a buildfile.\nList is comma separated (e.g. export.xml, build.xml, clean.xml).
AntPreferencePage.&Names__3=&Names:
AntPreferencePage.Ant_Color_Options__6=Ant Color &Options:
AntPreferencePage.Color__7=&Color:
AntPreferencePage.&Error__2=Ant error message in console
AntPreferencePage.&Warning__3=Ant warning message in console
AntPreferencePage.I&nformation__4=Ant information message in console
AntPreferencePage.Ve&rbose__5=Ant verbose message in console
AntPreferencePage.Deb&ug__6=Ant debug message in console
AntPreferencePage.10=Warn when an Ant runtime classpath does not contain a &tools.jar library (used for tasks such as javac)
AntPreferencePage.11=Warn when &Xerces JARs are included in an Ant runtime classpath
AntPreferencePage.12=&Show error dialog when Ant build fails

AntTasksPage.1 = Add &Task...
AntTasksPage.2 = &Edit Task...
AntTasksPage.3 = Remo&ve
AntTasksPage.addTaskDialogTitle = Add Task
AntTasksPage.title = Tas&ks
AntTasksPage.editTaskDialogTitle = Edit Task
AntTasksPage.8=A task with the name {0} already exists
AntTasksPage.9=A name must be provided for the new task

AntObjectLabelProvider.10=\ [contributed by {0}]

AntTypesPage.1 = Remo&ve
AntTypesPage.2 = Add &Type...
AntTypesPage.3 = &Edit Type...
AntTypesPage.typesPageTitle = T&ypes
AntTypesPage.addTypeDialogTitle = Add Type
AntTypesPage.editTypeDialogTitle = Edit Type
AntTypesPage.8=A type with the name {0} already exists
AntTypesPage.9=A name must be provided for the new type

AntPropertiesPage.title = Proper&ties
AntPropertiesPage.&Global_properties__1=&Global properties:
AntPropertiesPage.Glo&bal_property_files__2=Glo&bal property files:

AntPropertiesBlock.1 = Add P&roperty...
AntPropertiesBlock.2 = &Edit Property...
AntPropertiesBlock.3 = Rem&ove
AntPropertiesBlock.4 = Add F&ile...
AntPropertiesBlock.removeFileButton = Re&move
AntPropertiesBlock.Add_Property_2=Add Property
AntPropertiesBlock.Edit_User_Property_5=Edit User Property
AntPropertiesBlock.12=Property File Selection
AntPropertiesBlock.13=&Choose the property files add:
AntPropertiesBlock.14=Add E&xternal...
AntPropertiesBlock.15=Overwrite property?
AntPropertiesBlock.16=A property named {0} already exists. Overwrite?
AntPropertiesBlock.17=Cannot overwrite
AntPropertiesBlock.18=A property named {0} is contributed from the {1} plug-in.

AddPropertyDialog.&Name__1=&Name:
AddPropertyDialog.&Value__2=&Value:

AntEditorPreferencePage.description=Ant Editor settings:
AntEditorPreferencePage.annotationsTab.title= Annotation&s
AntEditorPreferencePage.annotationPresentationOptions= Annotation &presentation:
AntEditorPreferencePage.annotations.showInText= Show in &text
AntEditorPreferencePage.annotations.showInOverviewRuler= Show in overview &ruler
AntEditorPreferencePage.annotations.color= C&olor:
AntEditorPreferencePage.invalid_input_print_margin= Invalid print margin column specified
AntEditorPreferencePage.empty_input_print_margin= No print margin column specified
AntEditorPreferencePage.invalid_input_auto_activation= Invalid auto activation delay specified
AntEditorPreferencePage.empty_input_auto_activation= No auto activation delay specified

AntEditorPreferencePage.codeAssistTab.title= &Code Assist
AntEditorPreferencePage.backgroundForCompletionProposals=Completion proposal background
AntEditorPreferencePage.foregroundForCompletionProposals=Completion proposal foreground

AntEditorPreferencePage.general=Appeara&nce
AntEditorPreferencePage.printMarginColumn=Print margin col&umn:
AntEditorPreferencePage.showOverviewRuler=Show overview &ruler
AntEditorPreferencePage.showLineNumbers=Show lin&e numbers
AntEditorPreferencePage.highlightCurrentLine=Hi&ghlight current line
AntEditorPreferencePage.showPrintMargin=Sho&w print margin
AntEditorPreferencePage.color=C&olor:
AntEditorPreferencePage.appearanceOptions=Appearance co&lor options:
AntEditorPreferencePage.lineNumberForegroundColor=Line number foreground
AntEditorPreferencePage.currentLineHighlighColor=Current line highlight
AntEditorPreferencePage.printMarginColor=Print margin
AntEditorPreferencePage.Ant_editor_text_1=Text
AntEditorPreferencePage.Ant_editor_processing_instuctions_2=Processing instructions
AntEditorPreferencePage.Ant_editor_constant_strings_3=Constant strings
AntEditorPreferencePage.Ant_editor_tags_4=Tags
AntEditorPreferencePage.Ant_editor_comments_5=Comments
AntEditorPreferencePage.Insert=Insert single &proposals automatically
AntEditorPreferencePage.&Enable_auto_activation_2=&Enable auto activation
AntEditorPreferencePage.Auto_activation_&delay__3=Auto activation &delay:
AntEditorPreferencePage.Auto_activation_tri&ggers__4=Auto activation tri&ggers:
AntEditorPreferencePage.Code_assist_colo&r_options__5=Code assist colo&r options:
AntEditorPreferencePage.Col&or__6=Col&or:
