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

BuilderPropertyPage.description = Configure the builders for the &project:
BuilderPropertyPage.newButton = &New...
BuilderPropertyPage.editButton = &Edit...
BuilderPropertyPage.removeButton = &Remove
BuilderPropertyPage.upButton = &Up
BuilderPropertyPage.downButton = &Down
BuilderPropertyPage.statusMessage = Internal error
BuilderPropertyPage.errorTitle = External Tool Builder Problem
BuilderPropertyPage.errorMessage = Internal error
BuilderPropertyPage.invalidBuildTool = Invalid External Tool Builder
BuilderPropertyPage.missingBuilder = Missing builder ({0})
BuilderPropertyPage.Exists=Builder launch configuration {0} no longer exists
BuilderPropertyPage.External_Tool_Builder_{0}_Not_Added_2=External Tool Builder {0} Not Added
BuilderPropertyPage.&Import..._3=&Import...
BuilderPropertyPage.4=Import launch configuration
BuilderPropertyPage.5=&Choose a launch configuration from the workspace to import.\nThis will create a copy of the selected configuration.
BuilderPropertyPage.New_Builder_7=New_Builder
BuilderPropertyPage.Choose_configuration_type_8=Choose configuration type
BuilderPropertyPage.Choose_an_external_tool_type_to_create_9=&Choose an external tool type to create:
BuilderPropertyPage.Migrate_project_builder_10=Migrate project builder
BuilderPropertyPage.Not_Support=This project builder is stored in a format that is no longer supported. If you wish to edit this builder, it will first be migrated to a new format. If you proceed, this project builder will not be understood by installations using the old format.\n\nProceed with migration?
BuilderPropertyPage.Prompt=&Do not prompt before migrating project builders
BuilderPropertyPage.error=An error occurred while saving the project\'s build commands
BuilderPropertyPage.13=Command error

FileSelectionDialog.Choose_Location_1=Choose Location
FileSelectionDialog.Ok_2=Ok
FileSelectionDialog.Cancel_3=Cancel

ExternalToolsPreferencePage.External_tool_project_builders_migration_2=External tool project builders stored in an old format will be migrated to a new format when edited. Once migrated, project builders will not be understood by installations using the old format.
ExternalToolsPreferencePage.Prompt_before_migrating_3=&Confirm before migrating external tool project builders
BuilderPropertyPage.39=Error Saving Builder
BuilderPropertyPage.40=An exception occurred while attempting to save builder {0}

ExternalToolMigration.37=An exception occurred accessing external tool\'s \"run in background\" attribute
ExternalToolMigration.38=An exception occurred attempting to migrate external tool\'s \"run in background\" attribute
