###############################################################################
# Copyright (c) 2009, 2015 Tasktop Technologies 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:
#      Tasktop Technologies - initial API and implementation
###############################################################################
#Properties file for org.eclipse.mylyn.discovery.site.categories
Bundle-Name.0 = Mylyn Discovery Categories

connectorCategory.name.eclipse = Eclipse.org
connectorCategory.description.eclipse = Connectors hosted on Eclipse. Community supported via bugs.eclipse.org.

connectorCategory.name.community = Community
connectorCategory.description.community = Connectors provided by the Mylyn Community. Level of support may vary.

connectorDescriptor.description.bugzilla = Integration for the open source Bugzilla bug tracking system.
connectorDescriptor.provider.bugzilla = Eclipse Mylyn
connectorDescriptor.license.bugzilla = Free, EPL
connectorDescriptor.name.bugzilla = Mozilla Bugzilla
connectorDescriptor.overview.summary.bugzilla = \
Bugzilla is a free and open source system for managing bugs, software \
projects and more. Key features include \
advanced search, time tracking, reports and attachments.\n\
\n\
The Bugzilla Connector is the reference implementation for Mylyn connectors \
and provides robust support for viewing and updating Bugzilla from Eclipse. \
Key connector features include support for attachments, subtasks, custom \
fields, change notifications, offline access and advanced query \
capabilities.\n\
\n\
Supported Versions: 3.6 to 5.1.

connectorDescriptor.description.trac = Integration for the open source Trac issue tracking system.
connectorDescriptor.provider.trac = Eclipse Mylyn
connectorDescriptor.license.trac = Free, EPL
connectorDescriptor.name.trac = Edgewall Trac
connectorDescriptor.overview.summary.trac = Trac is an enhanced wiki and issue tracking system for software development projects. Trac uses a minimalistic approach to web-based software project management. \n\
\n\
Our mission is to help developers write great software while staying out of the way. Trac should impose as little as possible on a team's established development process and policies.\n\
\n\
The Trac connector supports attachments and access through the web-interface and XML-RPC.\n\
\n\
Supported Versions: 0.12 to 1.0.

connectorDescriptor.description.mantis = Integration for the open source Mantis bug tracker.
connectorDescriptor.license.mantis = Free, EPL
connectorDescriptor.name.mantis = Mantis
connectorDescriptor.provider.mantis = Mylyn-Mantis
connectorDescriptor.overview.summary.mantis = MantisBT is a free popular web-based bugtracking system.\n\
\n\
The Mantis connector allows you to manage your bugs straight from Eclipse.\n\
\n\
Supported features include: creating and updating tasks, synchronizing tasks, commenting and uploading and downloading attachments.\n\
\n\
Supported Versions: 0.0.5 or 1.1.0a4 or greater.

connectorDescriptor.description.foglyn = Integration for the FogBugz project management system.
connectorDescriptor.license.foglyn = Free, EPL
connectorDescriptor.name.foglyn = Foglyn
connectorDescriptor.provider.foglyn = www.foglyn.com
connectorDescriptor.overview.summary.foglyn = Foglyn \u2013 FogBugz connector for Mylyn\n\
\n\
Foglyn allows you to list, view and edit your cases, attach new files or screenshots and resolve or reassign cases to somebody else.\n\
\n\
Foglyn works with FogBugz versions 6, 7 and 8 and FogBugz on Demand service.

connectorDescriptor.description.tuleap = Integration for the Tuleap open ALM system.
connectorDescriptor.license.tuleap = Free, EPL
connectorDescriptor.name.tuleap = Tuleap
connectorDescriptor.provider.tuleap = Obeo, Enalean, Ericsson
connectorDescriptor.overview.summary.tuleap = Tuleap Agile connector for Mylyn\n\
\n\
Access & edit Tuleap artifacts (tasks, bugs, stories...) as well as agile tools (releases, sprints planning, card-wall, burn-down) right from Eclipse.\n\
\n\
Tuleap is a full free Open Source Suite for Application Lifecycle Management. \
Traditional development, Requirements Management, Agile Development, IT Service management... \
Tuleap makes software projects more productive, collaborative and industrialized.\n\
\n\
Supported features include: creating and updating tasks, querying tasks, commenting, uploading and downloading attachments.\n\
Agile development is now also supported: Planning sprints or releases, managing tasks in a card-wall, Burn-down chart.
\n\
Supported versions: Tuleap 7.1 and higher.

connectorDescriptor.description.gerrit = Integration for the open source Gerrit code review system.
connectorDescriptor.provider.gerrit = Eclipse Mylyn
connectorDescriptor.license.gerrit = Free, EPL
connectorDescriptor.name.gerrit = Gerrit
connectorDescriptor.overview.summary.gerrit = Gerrit is a web based code review system, facilitating online code reviews for projects using the Git version control system.\n\
\n\
Gerrit makes reviews easier by showing changes in a side-by-side display, and allowing inline comments to be added by any reviewer.\n\
\n\
Supported Versions: 2.9 to 2.15.

connectorDescriptor.name.hudson = Hudson/Jenkins
connectorDescriptor.license.hudson = Free, EPL
connectorDescriptor.provider.hudson = Eclipse Mylyn
connectorDescriptor.description.hudson = Monitor builds and work with build artifacts in your workspace.
overview.summary.hudson = You can now complete your daily work with Hudson/Jenkins entirely from within the Eclipse IDE, including monitoring and running builds, and inspecting \
results. Accessing build information is instant and available offline. One of the most useful time savers is the ability to run tests that failed on the server within your workspace, \
with just one click. A significant feature that is now available is support for traceability between tasks, source and builds.\n\
\n\
Supported Versions: Hudson 2.2 to 3.3, Jenkins 1.466 to 2.32
.
