# Copyright (c) 2011 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: 
#   Kenn Hussey (CEA) - initial API and implementation
#

# 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 Build

# "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 = Unified Modeling Language 2.x Build
