# <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 v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.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
