# 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 Git 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_GitCloneTask_type = Git Clone
_UI_GitCloneTask_location_feature = Location
_UI_GitCloneTask_remoteName_feature = Remote Name
_UI_GitCloneTask_remoteURI_feature = Remote URI
_UI_GitCloneTask_pushURI_feature = Push URI
_UI_GitCloneTask_userID_feature = User ID
_UI_GitCloneTask_checkoutBranch_feature = Checkout Branch

_UI_GitCloneTask_recursive_feature = Recursive
_UI_ConfigSection_type = Config Section
_UI_ConfigSubsection_type = Config Subsection
_UI_ConfigProperty_type = Config Property
_UI_GitCloneTask_configSections_feature = Config Sections
_UI_ConfigSection_subsections_feature = Subsections
_UI_ConfigSubsection_name_feature = Name
_UI_ConfigSubsection_properties_feature = Properties
_UI_ConfigProperty_key_feature = Key
_UI_ConfigProperty_value_feature = Value
_UI_GitCloneTask_restrictToCheckoutBranch_feature = Restrict To Checkout Branch
_UI_GitCloneTask_locationQualifier_feature = Location Qualifier
_UI_GitCloneTask_locationQualifier_description = The qualifier used in the computed location to help ensure that the Git repository's folder name is unique
