# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

report.ci-management.access                                        = Access
report.ci-management.anthill.intro                                 = This project uses {Anthill, http://www.anthillpro.com/html/products/anthillos/}.
report.ci-management.bamboo.intro                                  = This project uses {Bamboo, http://www.atlassian.com/software/bamboo/}.
report.ci-management.buildforge.intro                              = This project uses {Build Forge, http://www-306.ibm.com/software/awdtools/buildforge/enterprise/}.
report.ci-management.continuum.intro                               = This project uses {Continuum, http://continuum.apache.org/}.
report.ci-management.cruisecontrol.intro                           = This project uses {CruiseControl, http://cruisecontrol.sourceforge.net/}.
report.ci-management.description                                   = This document lists the continuous integration management system of this project for building and testing code on a frequent, regular basis.
report.ci-management.general.intro                                 = This project uses Continuous Integration System.
report.ci-management.github.intro                                  = This project uses {GitHub Actions, https://github.com/features/actions/}.
report.ci-management.hudson.intro                                  = This project uses {Hudson, http://hudson-ci.org/}.
report.ci-management.jenkins.intro                                 = This project uses {Jenkins, https://www.jenkins.io/}.
report.ci-management.luntbuild.intro                               = This project uses {Luntbuild, http://luntbuild.javaforge.com/}.
report.ci-management.teamcity.intro                                = This project uses {TeamCity, https://www.jetbrains.com/teamcity/}.
report.ci-management.travis.intro                                  = This project uses {Travis CI, https://travis-ci.com/}.
report.ci-management.name                                          = CI Management
report.ci-management.nocim                                         = No continuous integration management system is defined. Please check back at a later date.
report.ci-management.notifiers.column.address                      = Address
report.ci-management.notifiers.column.configuration                = Configuration
report.ci-management.notifiers.column.type                         = Type
report.ci-management.notifiers.intro                               = Configuration for notifying developers/users when a build is unsuccessful, including user information and notification mode.
report.ci-management.notifiers.nolist                              = No notifiers are defined. Please check back at a later date.
report.ci-management.notifiers.title                               = Notifiers
report.ci-management.nourl                                         = No url to the continuous integration system is defined.
report.ci-management.overview.title                                = Overview
report.ci-management.title                                         = CI Management
report.ci-management.url                                           = The following is a link to the continuous integration system used by the project:
report.dependencies.column.artifactId                              = ArtifactId
report.dependencies.column.classifier                              = Classifier
report.dependencies.column.description                             = Description
report.dependencies.column.groupId                                 = GroupId
report.dependencies.column.licenses                                = Licenses
report.dependencies.column.optional                                = Optional
report.dependencies.column.isOptional                              = Yes
report.dependencies.column.isNotOptional                           = No
report.dependencies.column.type                                    = Type
report.dependencies.column.url                                     = URL
report.dependencies.column.version                                 = Version
report.dependencies.description                                    = This document lists the project's dependencies and provides information on each dependency.
report.dependencies.file.details.cell.debuginformation.yes         = Yes
report.dependencies.file.details.cell.debuginformation.no          = No
report.dependencies.file.details.cell.sealed.yes                   = Yes
report.dependencies.file.details.cell.sealed.no                    = No
report.dependencies.file.details.column.classes                    = Classes
report.dependencies.file.details.column.debuginformation           = Debug Information
report.dependencies.file.details.column.entries                    = Entries
report.dependencies.file.details.column.file                       = Filename
report.dependencies.file.details.column.javaVersion                = Java Version
report.dependencies.file.details.column.packages                   = Packages
report.dependencies.file.details.column.sealed                     = Sealed
report.dependencies.file.details.column.size                       = Size
report.dependencies.file.details.column.size.gb                    = GB
report.dependencies.file.details.column.size.mb                    = MB
report.dependencies.file.details.column.size.kb                    = kB
report.dependencies.file.details.columntitle.debuginformation      = Indicates whether these dependencies have been compiled with debug information.
report.dependencies.file.details.title                             = Dependency File Details
report.dependencies.file.details.total                             = Total
report.dependencies.graph.icon.close                               = [Close]
report.dependencies.graph.icon.information                         = [Information]
report.dependencies.graph.tables.licenses                          = Licenses
report.dependencies.graph.tables.unknown                           = Unknown
report.dependencies.graph.title                                    = Project Dependency Graph
report.dependencies.graph.tree.title                               = Dependency Tree
report.dependencies.intro.compile                                  = The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:
report.dependencies.intro.provided                                 = The following is a list of provided dependencies for this project. These dependencies are required to compile the application, but should be provided by default when using the library:
report.dependencies.intro.runtime                                  = The following is a list of runtime dependencies for this project. These dependencies are required to run the application:
report.dependencies.intro.system                                   = The following is a list of system dependencies for this project. These dependencies are required to compile the application:
report.dependencies.intro.test                                     = The following is a list of test dependencies for this project. These dependencies are only required to compile and run unit tests for the application:
report.dependencies.name                                           = Dependencies
report.dependencies.nolist                                         = There are no dependencies for this project. It is a standalone application that does not depend on any other project.
report.dependencies.repo.locations.artifact.breakdown              = Repository locations for each of the Dependencies.
report.dependencies.repo.locations.cell.release.disabled           = No
report.dependencies.repo.locations.cell.release.enabled            = Yes
report.dependencies.repo.locations.cell.snapshot.disabled          = No
report.dependencies.repo.locations.cell.snapshot.enabled           = Yes
report.dependencies.repo.locations.cell.blacklisted.disabled       = No
report.dependencies.repo.locations.cell.blacklisted.enabled        = Yes
report.dependencies.repo.locations.column.artifact                 = Artifact
report.dependencies.repo.locations.column.blacklisted              = Blacklisted
report.dependencies.repo.locations.column.release                  = Release
report.dependencies.repo.locations.column.repoid                   = Repo ID
report.dependencies.repo.locations.column.snapshot                 = Snapshot
report.dependencies.repo.locations.column.url                      = URL
report.dependencies.repo.locations.title                           = Dependency Repository Locations
report.dependencies.title                                          = Project Dependencies
report.dependencies.unnamed                                        = Unnamed
report.dependencies.transitive.intro                               = The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.
report.dependencies.transitive.nolist                              = No transitive dependencies are required for this project.
report.dependencies.transitive.title                               = Project Transitive Dependencies
report.dependency-convergence.convergence.caption                  = Dependencies used in modules
report.dependency-convergence.convergence.single.caption           = Dependencies used in this project
report.dependency-convergence.description                          = This document presents the convergence of dependency versions across the entire project, and its sub modules.
report.dependency-convergence.icon.error                           = [Error]
report.dependency-convergence.icon.success                         = [Success]
report.dependency-convergence.legend                               = Legend:
report.dependency-convergence.legend.different                     = At least one dependency has a differing version of the dependency or has SNAPSHOT dependencies.
report.dependency-convergence.legend.shared                        = All modules/dependencies share one version of the dependency.
report.dependency-convergence.name                                 = Dependency Convergence
report.dependency-convergence.reactor.name                         = Reactor Dependency Convergence
report.dependency-convergence.reactor.title                        = Reactor Dependency Convergence
report.dependency-convergence.stats.artifacts                      = Number of unique artifacts (NOA):
report.dependency-convergence.stats.caption                        = Statistics:
report.dependency-convergence.stats.convergence                    = Convergence (NOD/NOA):
report.dependency-convergence.stats.dependencies                   = Number of dependencies (NOD):
report.dependency-convergence.stats.readyrelease                   = Ready for release (100% convergence and no SNAPSHOTS):
report.dependency-convergence.stats.readyrelease.error             = Error
report.dependency-convergence.stats.readyrelease.error.convergence = You do not have 100% convergence.
report.dependency-convergence.stats.readyrelease.error.snapshots   = You have SNAPSHOT dependencies.
report.dependency-convergence.stats.readyrelease.success           = Success
report.dependency-convergence.stats.conflicting                    = Number of version-conflicting artifacts (NOC):
report.dependency-convergence.stats.snapshots                      = Number of SNAPSHOT artifacts (NOS):
report.dependency-convergence.stats.modules                        = Number of modules:
report.dependency-convergence.title                                = Dependency Convergence
report.dependency-info.name                                        = Maven Coordinates
report.dependency-info.title                                       = Maven Coordinates
report.dependency-info.description                                 = This document describes how to include this project as a dependency using various dependency management tools.
report.index.nodescription                                         = There is currently no description associated with this project.
report.index.title                                                 = About
report.issue-management.bugzilla.intro                             = This project uses {Bugzilla, http://www.bugzilla.org/}.
report.issue-management.custom.intro                               = This project uses %issueManagementSystem% to manage its issues.
report.issue-management.description                                = This document provides information on the issue management system used in this project.
report.issue-management.general.intro                              = This project uses an issue management system to manage its issues.
report.issue-management.github.intro                               = This project uses {GitHub, http://github.com/}.
report.issue-management.intro                                      = Issues, bugs, and feature requests should be submitted to the following issue management system for this project.
report.issue-management.jira.intro                                 = This project uses {JIRA, http://www.atlassian.com/software/jira}.
report.issue-management.name                                       = Issue Management
report.issue-management.noissueManagement                          = No issue management system is defined. Please check back at a later date.
report.issue-management.overview.title                             = Overview
report.issue-management.scarab.intro                               = This project uses {Scarab, http://scarab.tigris.org/}.
report.issue-management.title                                      = Issue Management
report.licenses.description                                        = This document lists the project license(s).
report.licenses.multiple                                           = This project is provided under multiple licenses:
report.licenses.name                                               = Licenses
report.licenses.nolicense                                          = No licenses are defined for this project.
report.licenses.overview.intro                                     = Typically the licenses listed for the project are that of the project itself, and not of dependencies.
report.licenses.overview.title                                     = Overview
report.licenses.originalText                                       = [Original text]
report.licenses.copy                                               = Copy of the license follows:
report.licenses.title                                              = Project Licenses
report.licenses.unnamed                                            = Unnamed
report.mailing-lists.column.archive                                = Archive
report.mailing-lists.column.name                                   = Name
report.mailing-lists.column.otherArchives                          = Other Archives
report.mailing-lists.column.post                                   = Post
report.mailing-lists.column.subscribe                              = Subscribe
report.mailing-lists.column.unsubscribe                            = Unsubscribe
report.mailing-lists.description                                   = This document provides subscription and archive information for this project's mailing lists.
report.mailing-lists.intro                                         = These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.
report.mailing-lists.name                                          = Mailing Lists
report.mailing-lists.nolist                                        = There are no mailing lists currently associated with this project.
report.mailing-lists.title                                         = Project Mailing Lists
report.scm.accessbehindfirewall.general.intro                      = Refer to the documentation of the SCM used for more information about access behind a firewall.
report.scm.accessbehindfirewall.svn.intro                          = For those users who are stuck behind a corporate firewall which is blocking HTTP access to the Subversion repository, you can try to access it via the developer connection:
report.scm.accessbehindfirewall.title                              = Access from Behind a Firewall
report.scm.accessthroughtproxy.svn.intro1                          = The Subversion client can go through a proxy, if you configure it to do so. First, edit your "servers" configuration file to indicate which proxy to use. The file's location depends on your operating system. On Linux or Unix it is located in the directory "~/.subversion". On Windows it is in "%APPDATA%\\Subversion". (Try "echo %APPDATA%", note this is a hidden directory.)
report.scm.accessthroughtproxy.svn.intro2                          = There are comments in the file explaining what to do. If you don't have that file, get the latest Subversion client and run any command; this will cause the configuration directory and template files to be created.
report.scm.accessthroughtproxy.svn.intro3                          = Example: Edit the 'servers' file and add something like:
report.scm.accessthroughtproxy.title                               = Access Through a Proxy
report.scm.anonymousaccess.general.intro                           = Refer to the documentation of the SCM used for more information about anonymously check out. The connection url is:
report.scm.anonymousaccess.git.intro                               = The source can be checked out anonymously from Git with this command (See {https://git-scm.com/docs/git-clone,https://git-scm.com/docs/git-clone}):
report.scm.anonymousaccess.hg.intro                                = The source can be checked out anonymously from Mercurial with this command (See {http://www.selenic.com/mercurial/hg.1.html#clone,http://www.selenic.com/mercurial/hg.1.html#clone}):
report.scm.anonymousaccess.svn.intro                               = The source can be checked out anonymously from Subversion with this command:
report.scm.anonymousaccess.title                                   = Anonymous Access
report.scm.description                                             = This document lists ways to access the online source repository.
report.scm.devaccess.general.intro                                 = Refer to the documentation of the SCM used for more information about developer check out. The connection url is:
report.scm.devaccess.git.intro                                     = Only project developers can access the Git tree via this method (See {https://git-scm.com/docs/git-clone,https://git-scm.com/docs/git-clone}).
report.scm.devaccess.hg.intro                                      = Only project developers can access the Mercurial tree via this method (See {http://www.selenic.com/mercurial/hg.1.html#clone,http://www.selenic.com/mercurial/hg.1.html#clone}).
report.scm.devaccess.svn.intro1.https                              = Everyone can access the Subversion repository via HTTP, but committers must checkout the Subversion repository via HTTPS.
report.scm.devaccess.svn.intro1.other                              = Committers must checkout the Subversion repository.
report.scm.devaccess.svn.intro1.svn                                = Committers must checkout the Subversion repository via SVN.
report.scm.devaccess.svn.intro1.svnssh                             = Committers must checkout the Subversion repository via SVN+SSH.
report.scm.devaccess.svn.intro2                                    = To commit changes to the repository, execute the following command to commit your changes (svn will prompt you for your password):
report.scm.devaccess.title                                         = Developer Access
report.scm.general.intro                                           = This project uses a source code management system to manage its source code.
report.scm.name                                                    = Source Code Management
report.scm.noscm                                                   = No source configuration management system is defined. Please check back at a later date.
report.scm.overview.title                                          = Overview
report.scm.git.intro                                               = This project uses {Git, https://git-scm.com/} to manage its source code. Instructions on Git use can be found at {https://git-scm.com/documentation,https://git-scm.com/documentation}.
report.scm.hg.intro                                                = This project uses {Mercurial, https://www.mercurial-scm.org/} to manage its source code. Instructions on Mercurial use can be found at {http://hgbook.red-bean.com/read/, http://hgbook.red-bean.com/read/}.
report.scm.svn.intro                                               = This project uses {Subversion, http://subversion.apache.org/} to manage its source code. Instructions on Subversion use can be found at {http://svnbook.red-bean.com/, http://svnbook.red-bean.com/}.
report.scm.title                                                   = Source Code Management
report.scm.webaccess.nourl                                         = There is no browsable version of the source code repository listed for this project. Please check back again later.
report.scm.webaccess.title                                         = Web Browser Access
report.scm.webaccess.url                                           = The following is a link to a browsable version of the source repository:
report.summary.build.artifactid                                    = ArtifactId
report.summary.build.groupid                                       = GroupId
report.summary.build.javaVersion                                   = Java Version
report.summary.build.title                                         = Build Information
report.summary.build.type                                          = Type
report.summary.build.version                                       = Version
report.summary.description                                         = This document lists other related information of this project
report.summary.field                                               = Field
report.summary.general.description                                 = Description
report.summary.general.homepage                                    = Homepage
report.summary.general.name                                        = Name
report.summary.general.title                                       = Project Information
report.summary.name                                                = Summary
report.summary.organization.name                                   = Name
report.summary.organization.title                                  = Project Organization
report.summary.organization.url                                    = URL
report.summary.noorganization                                      = This project does not belong to an organization.
report.summary.title                                               = Project Summary
report.summary.value                                               = Value
report.summary.download                                            = Download
report.team.contributors.actualtime                                = Actual Time (GMT)
report.team.contributors.email                                     = Email
report.team.contributors.intro                                     = The following additional people have contributed to this project through the way of suggestions, patches or documentation.
report.team.contributors.image                                     = Image
report.team.contributors.name                                      = Name
report.team.contributors.organization                              = Organization
report.team.contributors.organizationurl                           = Organization URL
report.team.contributors.properties                                = Properties
report.team.contributors.roles                                     = Roles
report.team.contributors.timezone                                  = Time Zone
report.team.contributors.title                                     = Contributors
report.team.contributors.url                                       = URL
report.team.description                                            = This document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.
report.team.developers.actualtime                                  = Actual Time (GMT)
report.team.developers.email                                       = Email
report.team.developers.image                                       = Image
report.team.developers.id                                          = Id
report.team.developers.intro                                       = The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.
report.team.developers.name                                        = Name
report.team.developers.organization                                = Organization
report.team.developers.organizationurl                             = Organization URL
report.team.developers.properties                                  = Properties
report.team.developers.roles                                       = Roles
report.team.developers.timezone                                    = Time Zone
report.team.developers.title                                       = Members
report.team.developers.url                                         = URL
report.team.intro.description1                                     = A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.
report.team.intro.description2                                     = The project team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.
report.team.intro.title                                            = Project Team
report.team.name                                                   = Team
report.team.nocontributor                                          = There are no contributors listed for this project. Please check back again later.
report.team.nodeveloper                                            = There are no developers working on this project.
report.team.title                                                  = Project Team
report.dependency-management.name                                  = Dependency Management
report.dependency-management.description                           = This document lists the dependencies that are defined through dependencyManagement.
report.dependency-management.title                                 = Project Dependency Management
report.dependency-management.nolist                                = There are no dependencies in the DependencyManagement of this project.
report.dependency-management.column.groupId                        = GroupId
report.dependency-management.column.artifactId                     = ArtifactId
report.dependency-management.column.version                        = Version
report.dependency-management.column.classifier                     = Classifier
report.dependency-management.column.type                           = Type
report.dependency-management.column.license                        = License
report.dependency-management.intro.compile                         = The following is a list of compile dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile and run the submodule:
report.dependency-management.intro.provided                        = The following is a list of provided dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile the submodule, but should be provided by default when using the library:
report.dependency-management.intro.runtime                         = The following is a list of runtime dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to run the submodule:
report.dependency-management.intro.system                          = The following is a list of system dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile the submodule:
report.dependency-management.intro.test                            = The following is a list of test dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile and run unit tests for the submodule:
report.plugin-management.nolist                                    = There are no plugins defined in the PluginManagement part of this project.
report.plugin-management.name                                      = Plugin Management
report.plugin-management.description                               = This document lists the plugins that are defined through pluginManagement.
report.plugin-management.title                                     = Project Plugin Management
report.plugins.name                                                = Plugins
report.plugins.description                                         = This document lists the build plugins and the report plugins used by this project.
report.plugins.title                                               = Project Plugins
report.plugins.build.title                                         = Project Build Plugins
report.plugins.report.title                                        = Project Report Plugins
report.plugins.nolist                                              = There are no plugins defined in the Build part of this project.
report.plugins.report.nolist                                       = There are no plugins reports defined in the Reporting part of this project.
report.modules.nolist                                              = There are no modules declared in this project.
report.modules.name                                                = Project Modules
report.modules.description                                         = This document lists the modules (sub-projects) of this project.
report.modules.title                                               = Project Modules
report.modules.intro                                               = This project has declared the following modules:
report.modules.header.name                                         = Name
report.modules.header.description                                  = Description
report.distribution-management.name                                = Distribution Management
report.distribution-management.description                         = This document provides informations on the distribution management of this project.
report.distribution-management.title                               = Project Distribution Management
report.distribution-management.nodistributionmanagement            = No distribution management is defined for this project.
report.distribution-management.overview.title                      = Overview
report.distribution-management.overview.intro                      = The following is the distribution management information used by this project.
report.distribution-management.downloadURL                         = Download URL
report.distribution-management.repository                          = Repository
report.distribution-management.snapshotRepository                  = Snapshot Repository
report.distribution-management.site                                = Site
report.distribution-management.relocation                          = Relocation
report.distribution-management.field                               = Field
report.distribution-management.value                               = Value
report.distribution-management.relocation.groupid                  = GroupId
report.distribution-management.relocation.artifactid               = ArtifactId
report.distribution-management.relocation.version                  = Version
report.distribution-management.relocation.message                  = Message
