################################################################################
# Copyright (c) 2008, 2015 Obeo.
# 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:
#     Obeo - initial API and implementation
################################################################################
## note : apostrophes need to be doubled in these messages or they'll be ignored
# generic keys
BundleClassLookupFailure = Couldn''t load class {0}. Check that its containing package is exported.
BundleClassConstructorFailure = Couldn''t instantiate class {0} in bundle {1}. Services should define a public default constructor.
BundleClassInstantiationFailure = Unexpected exception while instantiating class {0} in bundle {1}.

# org.eclipse.acceleo.common
AcceleoLogger.ElementNotFound = Required element not found.
AcceleoLogger.JavaException = A java exception has been thrown.
AcceleoLogger.LogNullStatus = Status to be logged cannot be null.
AcceleoLogger.LogNullException = Exception to be logged cannot be null.
AcceleoLogger.UnexpectedException = Unexpected Acceleo problem.
AcceleoLogger.MissingHandle = No library connector to handle {0}

AcceleoServicesRegistry.ClassLookupFailure = Couldn''t find class {0} in the classpath.
AcceleoServicesRegistry.ClassConstructorFailure = Couldn''t instantiate class {0}. Services should define a public default constructor.
AcceleoServicesRegistry.ClassInstantiationFailure = Unexpected exception while instantiating class {0}.

# org.eclipse.acceleo.common.internal.utils
WorkspaceUtil.IllegalBundleState = Bundle {0} is in a wrong state : {1}
WorkspaceUtil.UninstallationFailure = Unexpected exception while trying to uninstall workspace-defined bundle {0}
WorkspaceUtil.InstallationFailure = Unexpected exception while trying to install workspace-defined bundle {0} : {1}

# org.eclipse.acceleo.common.utils
ModelUtils.LoadFailure = Unable to load model at {0}.
ModelUtils.NullInputStream = Input Stream for the model to load cannot be null.
ModelUtils.NullPath = Path cannot be null or empty.
ModelUtils.NullSaveRoot = Cannot serialize null object.
ModelUtils.NullRoot = Cannot attach ''null'' to a resource.
ModelUtils.LoadingError = An error has occurred during the loading of ''{0}''.
ModelUtils.DiagnosticMessage = Message: {0}
ModelUtils.DiagnosticLocation = Location: {0} at line {1} and column {2} 

AcceleoNonStandardLibrary.LoadFailure = Couldn''t load the Acceleo non-standard library.

AcceleoStandardLibrary.LoadFailure = Couldn''t load the Acceleo standard library.

AcceleoModelManager.ProcessingAcceleoChanges = Processing Acceleo changes since last activation
AcceleoModelManager.CannotSaveState = Error saving last build state for project ''{0}''
AcceleoModelManager.WrongFileFormat = The format of the state file saved previously is invalid.
AcceleoModelManager.ProjectDoesNotExists = The project ''{0}'' does not exists.
AcceleoModelManager.BuildStateFileDoesNotExists = The build state file ''{0}'' does not exists.


AcceleoProjectState.ProjectDoesNotMatch = The project name does not match the name of the project in the properties previously saved.