# 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=und
report.SetRangeUnknown=\u00C4nderungen seit unbekanntem Breich
report.SetRangeSince=\u00C4nderungen seit
report.SetRangeBetween=\u00C4nderungen zwischen
report.SetTagCreation=\u00C4nderungen seit Projekterstellung
report.SetTagSince=\u00C4nderungen seit Markierung
report.SetTagBetween=\u00C4nderungen zwischen Markierungen
report.To=an
report.TotalCommits=Summe Festschreibungen

#Changelog
report.changelog.name=\u00C4nderungsprotokollbericht
report.changelog.description=Aus SCM erstellter \u00C4nderungsprotokollbericht.
report.changelog.header=\u00C4nderungsprotokollbericht
report.changelog.mainTitle=\u00C4nderungsprotokollbericht
report.changelog.ChangedSetsTotal=Summe der ge\u00E4nderten S\u00E4tze
report.changelog.FilesChanged=Summe ge\u00E4nderter Dateien
report.changelog.timestamp=Zeitstempel
report.changelog.author=Autor
report.changelog.details=Details
report.changelog.revision=Revision

#Developer Activity
report.dev-activity.name=Entwickler-Aktivit\u00E4t
report.dev-activity.description=Aus SCM erstellter Entwickler-Aktivit\u00E4ten-Bericht.
report.dev-activity.header=Entwickler-Aktivit\u00E4ten-Bericht
report.dev-activity.mainTitle=Entwickler-Aktivit\u00E4ten-Bericht
report.dev-activity.noDevelopers=Keine Entwickler in POM gefunden.
report.dev-activity.range=Bereich
report.dev-activity.filesChanged=Summe ge\u00E4nderter Dateien
report.dev-activity.developer=Entwickler

#File Activity
report.file-activity.name=Datei-Aktivit\u00E4t
report.file-activity.description=Aus SCM erstellter Datei-Aktivit\u00E4ten-Bericht.
report.file-activity.header=Datei-Aktivit\u00E4ten-Bericht
report.file-activity.mainTitle=Datei-Aktivit\u00E4ten-Bericht
report.file-activity.range=Bereich
report.file-activity.filesChanged=Summe ge\u00E4nderter Dateien
report.file-activity.timesChanged=Anzahl \u00C4nderungen
report.file-activity.filename=Dateiname
