# 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=och
report.SetRangeUnknown=\u00c4ndringar fr\u00e5n ett ok\u00e4nt omf\u00e5ng
report.SetRangeSince=\u00c4ndringar sedan
report.SetRangeBetween=\u00c4ndringar mellan
report.SetTagCreation=\u00c4ndringar sedan projeket skapades
report.SetTagSince=\u00c4ndringar sedan tag
report.SetTagBetween=\u00c4ndringar mellan tags
report.SetTagUntil=till tag
report.To=till
report.TotalCommits=Totalt antal incheckningar

#Changelog
report.changelog.name=\u00c4ndringslogg
report.changelog.description=Genererad rapport \u00f6ver \u00e4ndringslogg fr\u00e5n SCM.
report.changelog.header=\u00c4ndringsloggsrapport
report.changelog.mainTitle=\u00c4ndringsloggsrapport
report.changelog.ChangedSetsTotal=Totalt antal change sets
report.changelog.FilesChanged=Totalt antal filer som \u00e4ndrats
report.changelog.timestamp=Tidsst\u00e4mpel
report.changelog.author=F\u00f6rfattare
report.changelog.details=Detaljer
report.changelog.revision=Revision
report.changelog.nosources=Ingen k\u00e4llkod hittades som det g\u00e5r att skapa en rapport av.

#Developer Activity
report.dev-activity.name=Utvecklaraktivitet
report.dev-activity.description=Genererad rapport \u00f6ver utvecklaraktivitet fr\u00e5n SCM.
report.dev-activity.header=Utvecklaraktivitetsrapport
report.dev-activity.mainTitle=Utvecklaraktivitetsrapport
report.dev-activity.noDevelopers=Inga utvecklare hittades i POM.
report.dev-activity.range=Omf\u00e5ng
report.dev-activity.filesChanged=Totalt antal filer som \u00e4ndrats
report.dev-activity.developer=Utvecklare

#File Activity
report.file-activity.name=Filaktivitet
report.file-activity.description=Genererad rapport \u00f6ver filaktivitet fr\u00e5n SCM.
report.file-activity.header=Filaktivitetsrapport
report.file-activity.mainTitle=Filaktivitetsrapport
report.file-activity.range=Omf\u00e5ng
report.file-activity.filesChanged=Totalt antal files som \u00e4ndrats
report.file-activity.timesChanged=Antal g\u00e5nger den \u00e4ndrats
report.file-activity.filename=Filnamn
