# /**
#  * <copyright>
#  *
#  * Copyright (c) 2002-2004 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.5.2.2 2007/06/02 05:34:58 nickb 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.
# ==============================================================================

pluginName = XML Schema Editor
providerName = Eclipse.org
sampleEditor = Sample XML Schema Editor

_UI_Semantics_title = Semantics
_UI_Syntax_title = Syntax

_UI_XSDEditor_menu = &XSD Editor

_UI_CreateChild_menu_item = &New Child
_UI_CreateSibling_menu_item = N&ew Sibling 

_UI_XSDEditorFilenameDefaultBase = MySchema
_UI_XSDEditorFilenameExtension = xsd

_UI_Wizard_category = Example EMF Model Creation Wizards
_UI_XSDModelWizard_label = XSD Model
_UI_XSDModelWizard_description = Create a new XSD model

_WARN_FilenameExtension = The filename must end in ".{0}"

_UI_ModelObject = Model Object
_UI_Wizard_initial_object_description = Select a model object to create

_UI_SchemaPrefix_label = Target Namespace Prefix
_UI_SchemaNamespaceURI_label = Target Namespace 

_UI_SchemaForSchemaPrefix_label = Schema for Schema Prefix
_UI_SchemaForSchemaNamespaceURI_label = Schema for Schema Namespace URI

_UI_Validating_message = Validating
_UI_ReportingErrors_message = Reporting errors

_UI_NoObjectSelected = Selected Nothing
_UI_SingleObjectSelected = Selected Object: {0}
_UI_MultiObjectSelected = Selected {0} Objects

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

_UI_ShowPropertiesView_menu_item = Show &Properties View
_UI_RefreshViewer_menu_item = &Refresh
_UI_ValidateAutomatically_menu_item = &Validate Automatically