# Copyright (c) 2003, 2013 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 v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors: 
#   IBM - initial API and implementation
#   Kenn Hussey (Embarcadero Technologies) - 204200
#   Kenn Hussey - 314388, 341158
#   Kenn Hussey - 351776
#   Christian W. Damus (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 Common Run-time APIs

# "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 = The common run-time APIs supporting the implementation of the UML metamodel and any model generated by the UML2 SDK from a UML source.
