# <copyright>
#
# Copyright (c) 2008-2013 See4sys, itemis 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:
#     See4sys - Initial API and implementation
#     itemis - [402945] Add a new Hummingbird project creation wizard for Hummingbird examples
#     itemis - [402951] Add a new Hummingbird file creation wizard for Hummingbird examples
#
# </copyright>

# ====================================================================
# To code developer:
#   Do NOT change the properties between this line and the
#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
#   Make a new property name, append to the end of the file and change
#   the code to use the new property.
# ====================================================================

# ====================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# ====================================================================

pluginName=Sphinx Examples Hummingbird IDE UI Plug-in (Incubation)
providerName=Eclipse Modeling Project

sphinx.examples.hummingbird.ide.ui.editors.hummingbird.name=Generic Hummingbird Form Editor
sphinx.examples.hummingbird.ide.ui.propertyTabs.advanced.label=Advanced

sphinx.examples.hummingbird.ide.ui.navigatorContent.hummingbird=Hummingbird Models

sphinx.examples.hummingbird.ide.ui.decorators.hummingbirdProject.label=Hummingbird Project Decorator
sphinx.examples.hummingbird.ide.ui.decorators.hummingbirdProject.description=Decorates Hummingbird projects according to the Hummingbird metamodel version configured in its settings.

sphinx.examples.hummingbird.ide.ui.newWizards.category.hummingbirdExampleWizards.name=Hummingbird
sphinx.examples.hummingbird.ide.ui.newWizards.hummingbirdFile.name=Hummingbird File
sphinx.examples.hummingbird.ide.ui.newWizards.hummingbirdProject.name=Hummingbird Project
