# Copyright (c) 2014 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 Targlets UI
providerName = Eclipse Oomph Project

targletProvisioner.name = Targlet Container
targletProvisioner.description = Download plug-ins from a software site such as a p2 repository or update site.

targetDefinitionExportWizard.name = Target Definition
targetDefinitionExportWizard.description = Export a target definition to a file system folder.