###############################################################################
# Copyright (c) 2008, 2010 Sonatype, Inc. and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0# 
# Contributors:
#     Sonatype, Inc. - initial API and implementation
###############################################################################
# feature.properties
# contains externalized strings for feature.xml
# "%foo" in feature.xml corresponds to the key "foo" in this file
# java.io.Properties file (ISO 8859-1 with "\" escapes)
# This file should be translated.

# "featureName" property - name of the feature
featureName=m2e - slf4j over logback logging (Optional)

# "providerName" property - name of the company that provides the feature
providerName=Eclipse.org - m2e

# "updateSiteName" property - label for the update site
#updateSiteName=The Eclipse Project Updates

# "description" property - description of the feature
description=slf4j over logback logging configuration for Maven Integration for Eclipse.\
Includes Maven Console View support for logback logging backend. 

# "copyright" property - text of the "Feature Update Copyright"
copyright=\
Copyright (c) 2008-2010 Sonatype, Inc.\n\
All rights reserved. This program and the accompanying materials\n\
are made available under the terms of the Eclipse Public License 2.0\n\
which accompanies this distribution, and is available at\n\
https://www.eclipse.org/legal/epl-2.0/\n\
\n\
  SPDX-License-Identifier: EPL-2.0\n\
\n\
Contributors:\n\
     Sonatype, Inc. - initial API and implementation\n
################ end of copyright property ####################################
