# <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 Common UI Plug-in (Incubation)
providerName=Eclipse Modeling Project

sphinx.examples.common.ui.perspectives.sphinx.name=Sphinx
sphinx.examples.common.ui.views.category.sphinxExampleViews.name=Sphinx Example Views
sphinx.examples.common.ui.newWizards.category.sphinxExampleWizards.name=Sphinx Example Wizards
sphinx.examples.common.ui.newWizards.category.examples.sphinx=Sphinx
sphinx.examples.common.ui.newWizards.modelFile.name=Model File

menu.showIn.label=Show In
menu.showIn.mnemonic = I
