# /**
#  * <copyright>
#  *
#  * Copyright (c) 2002-2005 IBM Corporation 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
#  *
#  * </copyright>
#  *
#  * $Id: plugin.properties,v 1.3 2009/06/06 18:14:26 ewillink Exp $
#  */

# 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.
# ==============================================================================

# ==============================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# The above properties have been shipped for translation.
# ==============================================================================

pluginName = QVT Declarative Rose UML Importer
providerName = Eclipse Modeling Project

_UI_RoseUMLModelImporter_label = Rose UML class model
_UI_RoseUMLModelImporter_description = Create the Ecore model based on a Rose UML class diagram

_UI_RoseUMLModelImport_title = Rose UML Model Import
_UI_RoseUMLModelImportFile_description = Specify a '.mdl' file, load and specify any path map symbols, and load the model
_UI_RoseUMLModelImportNewProject_description = Specify a '.mdl' file, load and specify any path map symbols, load the model, and choose a file name for the generator model
