###############################################################################
# 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.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.0=Project Migration
BuilderPropertyPage.2=&Do not prompt before migrating projects
BuilderPropertyPage.1=This project stores its builders in a format that is no longer supported. If any changes are made, the project will be migrated to the new format which will not be understood by installations using the old format.\n\nProceed? (Selecting "No" will open the page read-only)
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.13=Command error
BuilderPropertyPage.39=Error Saving Builder
BuilderPropertyPage.3=Updating builders...
BuilderPropertyPage.40=An exception occurred while attempting to save builder {0}

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. Projects which store builders using an old format will be migrated whenever a change is made. Once migrated, project builders will not be understood by installations using these older formats.
ExternalToolsPreferencePage.Prompt_before_migrating_3=&Confirm before migrating external tool project builders for edit
ExternalToolsPreferencePage.1=C&onfirm before migrating projects to the new format

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
