# Copyright (c) 2014, 2015 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 Projects 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_ProjectsImportTask_type = Projects Import
_UI_ProjectsImportTask_sourceLocators_feature = Source Locators
_UI_PathVariableTask_type = Path Variable
_UI_PathVariableTask_name_feature = Name
_UI_PathVariableTask_uRI_feature = URI
_UI_ProjectsBuildTask_type = Projects Build
_UI_ProjectsBuildTask_predicates_feature = Predicates
_UI_ProjectsBuildTask_onlyOncePerProject_feature = Only Once Per Project
_UI_ProjectsBuildTask_refresh_feature = Refresh
_UI_ProjectsBuildTask_clean_feature = Clean
_UI_ProjectsBuildTask_build_feature = Build
_UI_ProjectsBuildTask_onlyNewProjects_feature = Only New Projects
