################################################################################
# Copyright (c) 2008, 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:
#     Mia-Software - source plugin
################################################################################
# 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 Java 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 provides components for the Java technology \
(metamodels, model discoverers, transformations, etc.)

# "updateSiteName" property - label for the update site
ModelingUpdateSiteName=Eclipse Modeling Project Updates
