# /**
#  * 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 v2.0
#  * which accompanies this distribution, and is available at
#  * http://www.eclipse.org/legal/epl-v20.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_Create_XML_Schema_to_Ecore_Map_message = Creating an XML Schema to Ecore map is very time consuming for relatively large schemas.  The map is purely informational and is not required to produce an Ecore model.
_UI_Sort_Attributes = &Sort Attributes Alphabetically

_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

_UI_Mapping_message = Mapping {0}
