# <copyright>
#
# Copyright (c) 2008-2019 See4sys, itemis 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:
#     See4sys - Initial API and implementation
#     itemis - [409458] Enhance ScopingResourceSetImpl#getEObjectInScope() to enable cross-document references between model files with different metamodels
#
# </copyright>

# ----------------------------------------------------------- #
#  Internal messages for org.eclipse.sphinx.emf.internal.messages  #
# ----------------------------------------------------------- #
job_addingNewModelResources=Adding New Model Resources
job_addingNewModelResource=Adding New Model Resource
task_addingNewModelResources=Adding New Model Resources
task_addingNewModelResource=Adding New Model Resource
operation_addingNewModelResources=Adding New Model Resources
operation_addingNewModelResource=Adding New Model Resource

job_savingNewModelResources=Saving New Model Resources
job_savingNewModelResource=Saving New Model Resource
task_savingNewModelResources=Saving New Model Resources
task_savingNewModelResource=Saving New Model Resource
operation_savingNewModelResources=Saving New Model Resources
operation_savingNewModelResource=Saving New Model Resource

job_savingModels=Saving Models
job_savingModel=Saving Model
task_savingModelResources=Saving Model Resources
task_savingModelResource=Saving Model Resource
operation_savingModelResources=Saving Model Resources
operation_savingModelResource=Saving Model Resource

subtask_addingResource=Adding resource \"{0}\"
subtask_savingResource=Saving resource \"{0}\"

task_unloadingModelFiles=Unloading Model Files
subtask_unloadingModelFile=Unloading \"{0}\"

task_unloadingModelResources=Unloading Model Resources
subtask_unloadingModelResource=Unloading resource:\"{0}\"

job_addingModelDescriptors=Adding Model Descriptors
job_movingModelDescriptors=Moving Model Descriptors
job_updatingModelDescriptors=Updating Model Descriptors
job_updatingReferencedModelDescriptors=Updating Referenced Model Descriptors
job_removingModelDescriptors=Removing Model Descriptors
job_clearingOldMetaModelDescriptors=Clearing Old Meta-model Descriptors
job_initializingModelDescriptorRegistry= Initializing Model Descriptor Registry
job_addingProblemMarkers=Adding Problem Markers
job_removingProblemMarkers=Removing Problem Markers
task_analyzingProjects=Analyzing projects
subtask_analyzingFile=Analyzing file \"{0}\"
task_validatingResourceScopes=Validating Resource Scopes
task_cleaningResourceScopeMarkers=Cleaning Resource Scope Markers

propertyDescriptionPostfix_mustBeADataTypeEgDefaultValue=(must be a {0}, e.g. {1})
propertyDescriptionPostfix_mustBeADataType=(must be a {0})

problem_transactionFailed=\"{0}\" transaction failed

error_cannotCompareObjects=Cannot perform comparison of given objects (unexpected types \"{0}\" and \"{1}\").
error_mmDescriptorIdentifierNotEqual=Meta-model descriptor identifier from Extension (\"{0}\") is not equal to identifier from contributed descriptor (\"{1}\").

warning_mmDescriptorHasNoIdentifier=Meta-model descriptor \"{0}\" has no identifier.
warning_mmDescriptorIdentifierNotUnique=Meta-model descriptor identifier \"{0}\" is not unique.
warning_mmNsURIPatternNotUnique=Meta-model NsURI Pattern \"{0}\" is not unique.

warning_targetMetaModelDescriptorProviderWithoutId=A target meta-model descriptor provider without an associated id has been encountered.
warning_targetMetaModelDescriptorProviderIdNotUnique=The target meta-model descriptor provider id  \"{0}\" is not unique.
warning_multipleTargetMetaModelDescriptorProvidersOverride=Multiple target meta-model descriptor providers override \"{0}\".
warning_fileExtensionForTargetMetaModelDescriptorProviderMustNotBeNull=File extension for target meta-model descriptor provider must not be null.
warning_fileExtensionForTargetMetaModelDescriptorProviderNotUnique=Some other target meta-model descriptor provider is already registered for file extension: \"{0}\".
warning_contentTypeIdForTargetMetaModelDescriptorProviderMustNotBeNull=Content type id for target meta-model descriptor provider must not be null.
warning_contentTypeIdForTargetMetaModelDescriptorProviderNotUnique=Some other target meta-model descriptor provider is already registered for content type: \"{0}\".

warning_multipleOverridesForSameResourceScopeProvider=Multiple overrides for same resource scope provider \"{0}\".
warning_multipleResourceScopeProvidersContributedForSameMetaModelDescriptor=Multiple resource scope providers contributed for same meta model descriptor \"{0}\".
warning_serviceIdNotUnique=Meta-model service identifier \"{0}\" is not unique. Service is not installed.
warning_noServiceToOverride=Service \"{0}\" fails to override a non existing service \"{1}\"

error_invalidEditingDomainFactoryListenerObject=Invalid editing domain factory listener object: "{0}"

label_unknownProxyURI=Unknown proxy URI

attribute_line=line {0}

msg_xmlWellformednessProblemFormatString=The XML document is not well-formed: {0}
msg_xmlValidityProblemFormatString=The XML document is not valid with respect to underlying schema: {0}
msg_waitingForModelsBeingLoaded=Waiting for models being loaded...

error_problemOccurredWhenResolvingReferencesOfObject=Problem occurred when resolving references of "{0}" object
error_problemOccurredWhenResolvingProxyURI=Problem occurred when resolving proxy URI "{0}"
error_problemOccurredWhenLoadingResource=Problem occurred when loading resource "{0}"
error_problemOccurredWhenSavingResource=Problem occurred when saving resource "{0}"

error_metaModelServiceAlreadyExists=A service with the same name {0} for the meta-model {1} already exists, service not installed
error_unknownMetaModel=The contributor {0} contributes a service for an unknown meta-model(s) \"{1}\"
error_missingMetaModelDescriptor=The contributor {0} does not specify a meta-model descriptor ID
error_invalidMetaModelServiceClass=Invalid service class, expected {0}, but got {1}
error_missingMetaModelServiceType=The contributor {0} does not specify the type of the service that it implements
