# 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 - initial API and implementation
#
# $Id: plugin.properties,v 1.4 2005/08/31 15:26:27 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 Ecore Code Generation UI
providerName = Eclipse.org

_UI_PropertyDescriptor_description = The {0} of the {1}

_UI_GenCacheAdapterScope_None_literal = None
_UI_GenCacheAdapterScope_Global_literal = Global
_UI_GenCacheAdapterScope_Resource_literal = Resource
_UI_GenCacheAdapterScope_ResourceSet_literal = Resource Set

_UI_Unknown_datatype= Value

_UI_GenModel_cacheAdapterSupport_feature = Cache Adapter Support
_UI_GenModel_editTestsDirectory_feature = Edit Tests Directory
_UI_GenModel_editTestSuiteClass_feature = Edit Test Suite Class
_UI_GenModel_factoryMethods_feature = Factory Methods
_UI_GenModel_invariantPrefix_feature = Invariant Prefix
_UI_GenModel_operationsClasses_feature = Operations Classes
_UI_GenModel_pluralizedGetters_feature = Pluralized Getters
_UI_GenModel_safeStrings_feature = Safe Strings
_UI_GenModel_virtualImplementations_feature = Virtual Implementations

_UI_GenPackage_operationsPackage_feature = Operations Package
_UI_GenPackage_resourceInterfaces_feature = Resource Interfaces

_UI_GenFeature_key_feature = Key

_UI_GenOperation_cacheAdapterScope_feature = Cache Adapter Scope

_UI_Unknown_feature = Unspecified

_UI_UML2PropertyCategory = UML2

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