# 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.

#Commons
report.And=and
report.SetRangeUnknown=Changes from an unknown range
report.SetRangeSince=Changes since
report.SetRangeBetween=Changes between
report.SetTagCreation=Changes since project creation
report.SetTagSince=Changes since tag
report.SetTagBetween=Changes between tags
report.To=to
report.TotalCommits=Total commits

#Changelog
report.changelog.name=Change Log
report.changelog.description=Generated change log report from SCM.
report.changelog.header=Change Log Report
report.changelog.mainTitle=Change Log Report
report.changelog.ChangedSetsTotal=Total number of changed sets
report.changelog.FilesChanged=Total number of files changed
report.changelog.timestamp=Timestamp
report.changelog.author=Author
report.changelog.details=Details
report.changelog.revision=Revision
report.changelog.nosources=No sources found to create a report.

#Developer Activity
report.dev-activity.name=Developer Activity
report.dev-activity.description=Generated developer activity report from SCM.
report.dev-activity.header=Developer Activity Report
report.dev-activity.mainTitle=Developer Activity Report
report.dev-activity.noDevelopers=No developers found in pom.
report.dev-activity.range=Range
report.dev-activity.filesChanged=Total Number of Files Changed
report.dev-activity.developer=Developer

#File Activity
report.file-activity.name=File Activity
report.file-activity.description=Generated file activity report from SCM.
report.file-activity.header=File Activity Report
report.file-activity.mainTitle=File Activity Report
report.file-activity.range=Range
report.file-activity.filesChanged=Total Number of Files Changed
report.file-activity.timesChanged=Number of Times Changed
report.file-activity.filename=Filename
