# 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 = UML 2.x Metamodel

# "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 = Implementation of the Unified Modeling Language 2.x (UML) metamodel and supporting model resources such as standard profiles and model libraries.
