###############################################################################
# Copyright (c) 2012 Ericsson AB 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:
#     Ericsson AB - initial API and implementation
###############################################################################
#
# File describing the string use in the Report R4E plug-in
#
#
#
reportWarning.moveReview=Proceeding with the report generation, \n\
					    but this review ( {0} ) was initially under another group ( {1} ) 
reportWarning.noPropertyFile=There is no property file for this review: \n\
                        ({0} ), no report will be generated for it.

# Pop-up string
#
Popup.messageTitle=R4E information
Popup.messageOneMoment=One moment please
Popup.infoTitle=R4E Information
Popup.warningTitle=R4E Warning
Popup.errorTitle=R4E Error
Popup.accessDenied=The access is denied to save the report at : \n {0}
Popup.noReview=No review registered for the report
Popup.noReportDir=Could not create the report directory
#
#
#
messageError1=Error On Open
messageError2=EngineException
