###############################################################################
# Copyright (c) 2000, 2019 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

JavaStackTraceHyperlink_Information_1=Information
JavaStackTraceHyperlink_Error=Hyperlink Error
JavaStackTraceHyperlink_0=Invalid Line Number
JavaStackTraceHyperlink_1=\ is not a valid line number in 
JavaStackTraceHyperlink_2=Searching...
JavaStackTraceHyperlink_3=Source Not Found
JavaStackTraceConsoleFactory_0=Java Stack Trace Console
JavaStackTraceConsole_0=Paste stack traces into this console and follow hyperlinks to source code.
JavaStackTraceConsole_1=Update Java Stack Trace Console
JavaStackTraceConsole_2=Failed to restore previous stack trace console content. Error: {0}
JavaStackTraceHyperlink_Source_not_found_for__0__2=Source not found for {0}
JavaStackTraceHyperlink_Unable_to_parse_type_name_from_hyperlink__5=Unable to parse type name from hyperlink.
JavaStackTraceHyperlink_Unable_to_parse_line_number_from_hyperlink__6=Unable to parse line number from hyperlink.
JavaStackTraceHyperlink_Unable_to_retrieve_hyperlink_text__8=Unable to retrieve hyperlink text.
AutoFormatSettingAction_0=Auto Format
AutoFormatSettingAction_1=Auto Format
