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


#
# This file contains localization strings for configuration labels and
# descriptions as used in the metatype.xml descriptor generated by the
# the Maven SCR plugin

workspacepicker.name = Apache Sling Workspace Picker
workspacepicker.description = Servlet filter which selects a workspace \
 based on a request parameter and stores it in a cookie.

workspacepicker.param.name.name = Parameter Name
workspacepicker.param.name.description = Name of the workspace parameter

workspacepicker.cookie.name.name = Cookie Name
workspacepicker.cookie.name.description = Name of the workspace cookie