# /**
#  * Copyright (c) 2002-2008 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
#  */

# NLS_MESSAGEFORMAT_VAR

pluginName = XSD Ecore Importer
providerName = Eclipse Modeling Project

_UI_XSDImporter_label = XML Schema
_UI_XSDModelImporter_description = Create the Ecore model based on XML Schema or WSDL

_UI_XSDImport_title = XML Schema Import
_UI_XSDImportFile_description = Specify one or more '.xsd' or '.wsdl' URIs and try to load them
_UI_XSDImportNewProject_description = Specify one or more '.xsd' or '.wsdl' URIs, try to load them, and choose a file name for the generator model

_UI_Create_XML_Schema_to_Ecore_Map = Create XML Schema to Ecore &Map

_UI_ErrorsWereDetectedXMLSchema_message =  Problems were detected while validating and converting the XML Schemas
_UI_SpecifyAValidXMLSchema_message = Specify a valid XML Schema and try loading again
