# ==============================================================================
#*+------------------------------------------------------------------------+
#*| Copyright (c) 2005, 2009  IBM Corporation 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:                                                          |
#*|    IBM Corporation - initial API and implementation                    |
#*+------------------------------------------------------------------------+
# ==============================================================================
# ==============================================================================
# Common UI Services - Translation Instruction: section to be translated
# ==============================================================================
Plugin.name = GMF Common UI Services
Plugin.providerName = Eclipse Modeling Project

# ===============================================================================
# Extension Points - Translation Instruction : section to be translated
# ===============================================================================
extPoint.editorProviders =  GMF Editor Providers
extPoint.iconProviders =  GMF Icon Providers
extPoint.markerNavigationProviders =  GMF Marker Navigation Providers
extPoint.parserProviders =  GMF Parser Providers
extPoint.elementSelectionProviders = GMF Element Selection Providers
statusLineContributionItemProviders = GMF Status Line Contribution Item Providers

# ==============================================================================
# Marker UI Text - Translation Instruction: section to be translated
# ==============================================================================
marker.name= Modeling Marker