# <copyright>
# 
# Copyright (c) 2008-2010 See4sys and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
# 
# Contributors: 
#     See4sys - Initial API and implementation
# 
# </copyright>

# ====================================================================
# To code developer:
#   Do NOT change the properties between this line and the
#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
#   Make a new property name, append to the end of the file and change
#   the code to use the new property.
# ====================================================================

# ====================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# ====================================================================

pluginName=Sphinx EMF Plug-in (Incubation)
providerName=Eclipse Modeling Project

customCommands.name=Custom Commands
editingDomainFactoryListeners.name=Editing Domain Factory Listeners
metaModelDescriptors.name=Meta-Model Descriptors
modelConvertes.name=Model Converters
resourceHandlers.name=Resource Handlers
resourceLocators.name=Resource Locators
resourceScopeProviders.name=Resource Scope Providers
metaModelServices.name=Meta-Model Services

resourcescopingproblemmarker.name=Resource Scoping Problem
xmlwellformednessproblemmarker.name=XML Wellformedness Problem
xmlvalidityproblemmarker.name=XML Validity Problem
xmlintegrityproblemmarker.name=XML Integrity Problem
proxyuriintegrityproblemmarker.name=Proxy URI Integrity Problem
