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

ConsolePreferencePage.Console_settings=Debug Console Settings.
ConsolePreferencePage.Show_&Console_View_when_there_is_program_error_3=Show when &program writes to standard error
ConsolePreferencePage.Show_&Console_View_when_there_is_program_output_3=&Show when program writes to standard out
ConsolePreferencePage.Standard_Error__3=Standard &Error text color:
ConsolePreferencePage.Standard_In__4=Standard &In text color:
ConsolePreferencePage.Standard_Out__2=Standard &Out text color:
ConsolePreferencePage.Wrap_text_1=Fixed &width console
ConsolePreferencePage.Console_width=&Maximum character width:
ConsolePreferencePage.Limit_console_output_1=&Limit console output
ConsolePreferencePage.Console_buffer_size_(characters)__2=Console &buffer size (characters):
ConsolePreferencePage.The_console_buffer_size_must_be_at_least_1000_characters._1=The console buffer size must be at least 1000 characters.
ConsolePreferencePage.console_width=The console character width must be at least 80 characters

DebugActionGroupsPreferencePage.&Available_Debug_Action_Groups__2=A&vailable Debug Action Groups:
DebugActionGroupsPreferencePage.Actions_in_Group__3=Actions in &Group:
DebugActionGroupsPreferencePage.Select_the_action_groups_to_be_displayed_in_Debug_views_1=Action groups to be displayed in debug views.\nThe action(s) of a deselected action groups will not be visible in debug views.

DebugActionGroupsActionContentProvider.Updated_when_Debug_perspective_activated_1=Updated when Debug perspective activated

DebugActionGroupsLabelProvider.<Unknown>_1=<Unknown>

DebugActionGroupsManager._view__6=\ view 
DebugActionGroupsManager.context_menu_8=context menu
DebugActionGroupsManager.pull-down_menu_1=pull-down menu
DebugActionGroupsManager.Improperly_specified_debug_action_group_4=Improperly specified debug action group
DebugActionGroupsManager.toolbar_7=toolbar
DebugActionGroupsManager.Duplicate_action_group_id=Duplicate debug action group id: \"{0}\"; duplicate(s) ignored.

DebugPreferencePage.&Never_5=&Never
DebugPreferencePage.&Prompt_6=Pro&mpt
DebugPreferencePage.auto_build_before_launch=&Build (if required) before launching
DebugPreferencePage.Auto-sav&e_7=Auto-sav&e
DebugPreferencePage.General_Settings_for_Debugging_1=General Settings for Debugging.
DebugPreferencePage.Remove_terminated_launches_when_a_new_launch_is_created_1=&Remove terminated launches when a new launch is created
DebugPreferencePage.Save_dirty_editors_before_launching_4=Save dirty editors before launching
DebugPreferencePage.Reuse_editor_when_displa&ying_source_code_1=Reuse editor when displaying &source code
DebugPreferencePage.Activate_the_&workbench_when_a_breakpoint_is_hit_1=Activate the &workbench when a breakpoint is hit
DebugPreferencePage.1=&Changed variable color:

LaunchHistoryPreferencePage.description=Manage Launch History.
LaunchHistoryPreferencePage.Maximum_launch_history_size_1=Ma&ximum launch history size:
LaunchHistoryPreferencePage.The_size_of_the_launch_history_should_be_between_{0}_and_{1}_1=The size of the launch history should be between {0} and {1}
LaunchHistoryPreferenceTab.Fa&vorites__1=Fa&vorites:
LaunchHistoryPreferenceTab.Ma&ke_Recent_2=Ma&ke Recent
LaunchHistoryPreferenceTab.&Launch_History__3=&Launch History:

LaunchHistoryPreferenceTab.Add_&Config_1=Add &Config...
LaunchHistoryPreferenceTab.Do&wn_4=Do&wn
LaunchHistoryPreferenceTab.Make_&Favorite_5=Make &Favorite
LaunchHistoryPreferenceTab.Re&move_2=&Remove
LaunchHistoryPreferenceTab.Remo&ve_6=Re&move
LaunchHistoryPreferenceTab.Select_Launch_Configurations_7=Select &Launch Configurations:
LaunchHistoryPreferenceTab.U&p_3=U&p

ProcessPropertyPage.Command_Line__1=Command Line:

SimpleVariablePreferencePage.3=Variable
SimpleVariablePreferencePage.4=Value
SimpleVariablePreferencePage.5=Description
SimpleVariablePreferencePage.6=&Create and configure simple launch variables.
SimpleVariablePreferencePage.7=&New
SimpleVariablePreferencePage.8=&Edit
SimpleVariablePreferencePage.9=&Remove
SimpleVariablePreferencePage.10=&Name:
SimpleVariablePreferencePage.11=&Value:
SimpleVariablePreferencePage.12=&Description:
SimpleVariablePreferencePage.13=New Launch Variable
SimpleVariablePreferencePage.14=Edit Launch Variable
SimpleVariablePreferencePage.15=Overwrite variable?
SimpleVariablePreferencePage.16=A variable named {0} already exists. Overwrite?
SimpleLaunchVariablePreferencePage.21=Remove Contributed Variables
SimpleLaunchVariablePreferencePage.22=The following variables were contributed by plug-ins. Removing them may cause unknown problems.\n{0}\nProceed?
SimpleLaunchVariablePreferencePage.23=\ (contributed)
