###############################################################################
# Copyright (c) 2000, 2012 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

AbstractAnnotationHover_action_configureAnnotationPreferences= Configure Annotation Preferences
AbstractAnnotationHover_message_singleQuickFix= 1 quick fix available:
AbstractAnnotationHover_message_multipleQuickFix= {0} quick fixes available:
AbstractAnnotationHover_multifix_variable_description=Fix {0} problems of same category in file
JavaTextHover_createTextHover= Could not create Java text hover

NoBreakpointAnnotation_addBreakpoint= Add a breakpoint

NLSStringHover_NLSStringHover_PropertiesFileNotDetectedWarning= The properties file could not be detected
NLSStringHover_NLSStringHover_missingKeyWarning= <b>Warning:</b> The key is missing!
NLSStringHover_NLSStringHover_PropertiesFileCouldNotBeReadWarning=<b>Warning:</b> The properties file could not be read!
NLSStringHover_open_in_properties_file=Open in Properties File
JavadocHover_back= Back
JavadocHover_back_toElement_toolTip=Back to {0}
JavadocHover_noAttachments= <em>Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.</em>
JavadocHover_noAttachedSource= <em>Note: This element has no attached source and the Javadoc could not be found in the attached Javadoc.</em>
JavadocHover_noAttachedJavadoc= <em>Note: This element has no attached Javadoc and the Javadoc could not be found in the attached source.</em>
JavadocHover_noInformation= <em>Note: The Javadoc for this element could neither be found in the attached source nor the attached Javadoc.</em>
# The first parameter is the constant value string and the second is its hex representation 
JavadocHover_constantValue_hexValue={0} [{1}]
JavadocHover_error_gettingJavadoc= <em>Note: An exception occurred while getting the Javadoc. See log for details.</em>
JavadocHover_forward= Forward
JavadocHover_forward_toElement_toolTip=Forward to {0}
JavadocHover_forward_toolTip=Forward
JavadocHover_openDeclaration= Open Declaration
JavadocHover_showInJavadoc= Show in Javadoc View
JavaSourceHover_skippedLines=... {0} lines skipped
ProblemHover_action_configureProblemSeverity=Configure Problem Severity
ProblemHover_chooseSettingsTypeDialog_button_cancel=Cancel
ProblemHover_chooseSettingsTypeDialog_button_project=Configure &Project
ProblemHover_chooseSettingsTypeDialog_button_workspace=Configure &Workspace
ProblemHover_chooseSettingsTypeDialog_checkBox_dontShowAgain=&Always configure the workspace settings
ProblemHover_chooseSettingsTypeDialog_message=The project ''{0}'' does not have any project specific problem severity settings yet.\n\nDo you want to create and configure the project settings or do you want to configure the workspace settings?
ProblemHover_chooseSettingsTypeDialog_title=Configure Problem Severity
