# Copyright (c) 2003, 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 - initial API and implementation
#
# $Id: plugin.properties,v 1.10 2005/06/09 02:34:41 khussey Exp $

# NLS_MESSAGEFORMAT_VAR

# ====================================================================
# 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.
# ====================================================================

pluginName = UML2 Examples UI
providerName = Eclipse.org

_UI_editorActions_label = UML2 Examples UI Editor Actions

_UI_ElementMenu_label = &Element
_UI_PackageMenu_label = P&ackage
_UI_ProfileMenu_label = Pr&ofile
_UI_StereotypeMenu_label = &Stereotype

_UI_ApplyStereotypeAction_label = &Apply Stereotype...
_UI_DestroyElementAction_label = &Destroy
_UI_UnapplyStereotypeAction_label = &Unapply Stereotype...

_UI_ApplyProfileAction_label = &Apply Profile...
_UI_ImportPrimitiveTypeAction_label = &Import Primitive Type...
_UI_UnapplyProfileAction_label = &Unapply Profile...

_UI_CreateExtensionAction_label = &Create Extension...

_UI_DefineProfileAction_label = &Define
_UI_ReferenceMetaclassAction_label = &Reference Metaclass...

_UI_ApplyStereotypeActionCommand_label = Apply Stereotype(s)
_UI_DestroyElementActionCommand_label = Destroy Element ''{0}''
_UI_UnapplyStereotypeActionCommand_label = Unapply Stereotype(s)

_UI_ApplyProfileActionCommand_label = Apply Profile(s)
_UI_ImportPrimitiveTypeActionCommand_label = Import Primitive Type(s)
_UI_UnapplyProfileActionCommand_label = Unapply Profile(s)

_UI_DefineProfileActionCommand_label = Define Profile ''{0}''
_UI_ReferenceMetaclassActionCommand_label = Reference Metaclass(es)

_UI_CreateExtensionActionCommand_label = Create Extension(s)

# ==============================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# The above properties have been shipped for translation.
# ==============================================================================

_UI_DiagnosticOK_message = The operation was successful.
_UI_DiagnosticProblems_message = Problems were ecountered.

_UI_OptionsDialog_message = Please choose options.

_UI_MergePackageAction_label = &Merge...
_UI_MergePackageActionCommand_label = Merge Package ''{0}''
_UI_MergingPackage_message = Merging package ''{0}''...

_UI_ConvertToEcoreAction_label = &Convert to Ecore...
_UI_ConvertToEcoreActionCommand_label = Convert Package ''{0}'' to Ecore
_UI_ConvertingToEcore_message = Converting package ''{0}'' to Ecore...

_UI_ConvertFromEcoreAction_label = &Convert to UML2...
_UI_ConvertFromEcoreActionCommand_label = Convert Ecore Package ''{0}'' to UML2
_UI_ConvertingFromEcore_message = Converting Ecore package ''{0}'' to UML2...

_UI_ModelMenu_label = &Model
_UI_GenerateMenu_label = &Generate

_UI_ConvertToMetamodelAction_label = Convert to &Metamodel
_UI_ConvertToMetamodelActionCommand_label = Convert Model {0} to a Metamodel
_UI_ConvertToModelLibraryAction_label = Convert to Model &Library
_UI_ConvertToModelLibraryActionCommand_label = Convert Model {0} to a Model Library

_UI_GenerateEcorePrimitiveTypesAction_label = &Ecore Primitive Types
_UI_GenerateEcorePrimitiveTypesActionCommand_label = Generate Ecore Primitive Types into Model {0}
_UI_GenerateJavaPrimitiveTypesAction_label = &Java Primitive Types
_UI_GenerateJavaPrimitiveTypesActionCommand_label = Generate Java Primitive Types into Model {0}
_UI_GenerateUML2PrimitiveTypesAction_label = &UML2 Primitive Types
_UI_GenerateUML2PrimitiveTypesActionCommand_label = Generate UML2 Primitive Types into Model {0}

_UI_ExternalizeLabelsAction_label = &Externalize Labels

_UI_ExternalizeKeywordsAction_label = &Externalize Keywords

_UI_GenerateBasicStereotypesAction_label = &Basic Stereotypes
_UI_GenerateBasicStereotypesActionCommand_label = Generate Basic Stereotypes into Profile {0}
_UI_GenerateIntermediateStereotypesAction_label = &Intermediate Stereotypes
_UI_GenerateIntermediateStereotypesActionCommand_label = Generate Intermediate Stereotypes into Profile {0}
_UI_GenerateCompleteStereotypesAction_label = &Complete Stereotypes
_UI_GenerateCompleteStereotypesActionCommand_label = Generate Complete Stereotypes into Profile {0}
_UI_GenerateEcoreStereotypesAction_label = &Ecore Stereotypes
_UI_GenerateEcoreStereotypesActionCommand_label = Generate Ecore Stereotypes into Profile {0}

