# Copyright (c) 2014-2016 Eike Stepper (Loehne, Germany) 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:
#    Eike Stepper - initial API and implementation

pluginName = Oomph Setup PDE Edit Support
providerName = Eclipse Oomph Project

_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
_UI_CreateChild_text3 = {1}
_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.

_UI_PropertyDescriptor_description = The {0} of the {1}

_UI_Unknown_type = Object
_UI_Unknown_datatype= Value
_UI_Unknown_feature = Unspecified

_UI_APIBaselineFromTargetTask_from_target = from Target
_UI_APIBaselineFromTargetTask_targetName_feature = Target Name
_UI_APIBaselineFromTargetTask_type = API Baseline from Target
_UI_APIBaselineTask_location_feature = Location
_UI_APIBaselineTask_name_feature = Name
_UI_APIBaselineTask_remoteURI_feature = Remote URI
_UI_APIBaselineTask_type = API Baseline
_UI_APIBaselineTask_version_feature = Version
_UI_AbstractAPIBaselineTask_activate_feature = Activate
_UI_AbstractAPIBaselineTask_name_feature = Name
_UI_AbstractAPIBaselineTask_type = Abstract API Baseline
_UI_AbstractAPIBaselineTask_version_feature = Version
_UI_TargetPlatformTask_name_feature = Name
_UI_TargetPlatformTask_type = Target Platform
_UI_TargetPlatformTask_activate_feature = Activate
