# 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=y
report.SetRangeUnknown=Cambios a partir de una rango desconocido
report.SetRangeSince=Cambios desde
report.SetRangeBetween=Cambios entre
report.SetTagCreation=Cambios desde la creaci\u00F3n del proyecto
report.SetTagSince=Cambios desde etiqueta
report.SetTagBetween=Cambios entre etiquetas
report.SetTagUntil=hasta etiqueta
report.To=a
report.TotalCommits=Total commits

#Changelog
report.changelog.name=Log de Cambios
report.changelog.description=Log de Cambios generados a partir de SCM.
report.changelog.header=Informe de Log de Cambios
report.changelog.mainTitle=Informe de Log de Cambios
report.changelog.ChangedSetsTotal=N\u00FAmero Total de cambios en conjunto
report.changelog.FilesChanged=N\u00FAmero Total de archivos cambiados
report.changelog.timestamp=Fecha y Hora
report.changelog.author=Autor
report.changelog.details=Detalles
report.changelog.revision=Revisi\u00F3n
report.changelog.nosources=No se encontraron archivos fuente para crear un informe.

#Developer Activity
report.dev-activity.name=Actividad por Desarrollador
report.dev-activity.description=Informe de actividad por desarrollador generado a partir de SCM.
report.dev-activity.header=Informe de Actividad por Desarrollador
report.dev-activity.mainTitle=Informe de Actividad por Desarrollador
report.dev-activity.noDevelopers=No se encontraron desarrolladores en pom.
report.dev-activity.range=Rango
report.dev-activity.filesChanged=N\u00FAmero Total de Archivos Cambiados
report.dev-activity.developer=Desarrollador

#File Activity
report.file-activity.name=Actividad por Archivo
report.file-activity.description=Informe de actividad por archivo generado a partir de SCM.
report.file-activity.header=Informe de Actividad por Archivo
report.file-activity.mainTitle=Informe de Actividad por Archivo
report.file-activity.range=Rango
report.file-activity.filesChanged=N\u00FAmero Total de Archivos Cambiados
report.file-activity.timesChanged=N\u00FAmero de Veces Cambiado
report.file-activity.filename=Archivo
