###############################################################################
# Copyright (c) 2009, 2019 Mia-Software 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:
#     Nicolas Bros (Mia-Software) - initial API and implementation
###############################################################################
# NLS_MESSAGEFORMAT_VAR

# ==============================================================================
# Do not change the properties between this line and the last line containing:
# %%% END OF TRANSLATED PROPERTIES %%%
# Instead, either redefine an existing property, or create a new property,
# append it to the end of the file, and change the code to use the new name.
# ==============================================================================

# This file 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)
# This file should be translated.

# "featureName" property - name of the feature
featureName=MoDisco Master Feature

# "providerName" property - name of the company that provides the feature
providerName=Eclipse Modeling Project

# "description" property - description of the feature
description=MoDisco is a framework for model driven reverse engineering and \
software modernization. This feature is the master feature: contains the other \
MoDisco features.

# label for the update site
ModelingUpdateSiteName=Eclipse Modeling Project Updates
