# ==============================================================================
#*+------------------------------------------------------------------------+
#*| Copyright (c) 2005  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                    |
#*+------------------------------------------------------------------------+
# ==============================================================================
# ==============================================================================
# Presentation - Translation Instruction: section to be translated
# ==============================================================================

Plugin.name = GMF Diagram UI
Plugin.providerName = Eclipse Modeling Project

# ===============================================================================
# Diagram UI Internal - Translation Instruction : do not translate this section 
# ===============================================================================

# The extension point names

extPoint.semanticProviders = Presentation Semantic Providers
extPoint.viewProviders = Presentation View Providers
extPoint.editpartProviders = Presentation EditPart Providers
extPoint.editpolicyProviders = Presentation EditPolicy Providers
extPoint.paletteProviders = Presentation Palette Providers
extPoint.layoutProviders = Presentation Layout Providers
extPoint.decoratorProviders = Presentation Decorator Providers

# The extension names

ext.presentationSemanticProvider = Presentation Semantic Provider
ext.presentationLayoutProvider = Presentation Layout Provider
ext.presentationPropertiesProvider = Presentation Properties Provider
ext.presentationDecoratorProvider = Presentation Decorator Provider
ext.presentationContributionItemProvider = Presentation Contribution Item Provider
ext.printingContributionItemProvider = Presentation Printing Contribution Item Provider
ext.presentationParserProviders = Presentation Parser Provider
ext.presentationViewProviders = Presentation View Provider
ext.presentationPaletteProviders = Presentation Palette Provider
ext.presentationEditPartProviders = Presentation EditPart Provider
ext.readOnlyPropertiesModifier = Read Only Properties Modifier


# ==============================================================================
#  Diagram UI - section to be translated
# ==============================================================================

#Diagram - Palette Info
NoteTool.Label = Note
NoteTool.Description = Create a Note
TextTool.Label = Text
TextTool.Description = Create a Text
NoteAttachmentTool.Label = Note Attachment
NoteAttachmentTool.Description = Create a Note Attachment
NoteStack.Label = Notes
NoteStack.Description = Notes Stack
Advanced= Advanced
GMFDiagramContext.name = Diagram Editing
GMFDiagramContext.description = GMF Diagram Editing