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

#---------------------------------------------------------------------------------------------------
# The I18n Strings
#---------------------------------------------------------------------------------------------------
ExtensionPoint_LdapLogger_name=LDAP Logger

ExtensionPoint_ConnectionListener_name=Connection Listener

ExtensionPoint_ConnectionInitializer_name=Connection Initializer

LdapLogger_LdifModificationLogger_name=LDIF Modification Logger
LdapLogger_LdifModificationLogger_description=Logs modifications in LDIF format to a file.

LdapLogger_LdifSearchLogger_name=LDIF Search Logger
LdapLogger_LdifSearchLogger_description=Logs searches in LDIF format to a file.
