# Copyright (c) 2003, 2018 IBM Corporation, Embarcadero Technologies, CEA, and others.
# All rights reserved.   This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v20.html
#
# Contributors: 
#   IBM - initial API and implementation
#   Kenn Hussey (Embarcadero Technologies) - 204200
#   Kenn Hussey - 314388, 341158, 351776, 535301
#   Christian W. Damus (CEA) - 227616
#   Kenn Hussey (CEA) - 227616
#

# NLS_MESSAGEFORMAT_VAR

# feature.properties
# contains externalized strings for feature.xml
# "%foo" in feature.xml corresponds to the key "foo" in this file
# java.io.Properties file (ISO 8859-1 with "\" escapes)

# "feature.label" property - name of the feature
feature.label = UML2 Ecore Code Generation

# "feature.provider-name" property - name of the company that provides the feature
feature.provider-name = Eclipse Modeling Project

# "update.label" property - label for the update site
update.label = Eclipse Modeling Project Updates

# "description" property - description of the feature
description = Provides code generation templates for generation of EMF-based Java APIs for class models described with UML.
