--- /dev/null
+[codespell]
+skip = ./build*,.git,*.notifyrc,*.desktop,*.json,*.xml
+interactive = 3
+ignore-words-list = accessort
--- /dev/null
+# SPDX-FileCopyrightText: 2022 Laurent Montel <montel@kde.org>
+# SPDX-License-Identifier: CC0-1.0
--- /dev/null
+# SPDX-License-Identifier: CC0-1.0
+# SPDX-FileCopyrightText: none
+# clang-format
+9418ca074bd33a24bf8fc7f8a63bcd8af8858d48
--- /dev/null
+# SPDX-License-Identifier: CC0-1.0
+# SPDX-FileCopyrightText: none
+# Ignore the following files
+*~
+*.[oa]
+*.diff
+*.kate-swp
+*.kdev4
+.kdev_include_paths
+*.kdevelop.pcs
+*.moc
+*.moc.cpp
+*.orig
+*.user
+.*.swp
+.swp.*
+Doxyfile
+Makefile
+/build*/
+.cmake/
+CMakeLists.txt.user*
+*.unc-backup*
+compile_commands.json
+.clang-format
+.clangd
+.idea
+/cmake-build*
+.cache
--- /dev/null
+# SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+# SPDX-License-Identifier: CC0-1.0
+
+include:
+ - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml
+ - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml
+ - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/windows.yml
--- /dev/null
+# SPDX-FileCopyrightText: None
+# SPDX-License-Identifier: CC0-1.0
+
+Dependencies:
+- 'on': ['@all']
+ 'require':
+ 'frameworks/extra-cmake-modules': '@latest'
+ 'frameworks/kio': '@stable'
+ 'frameworks/ki18n': '@stable'
+ 'frameworks/kdoctools': '@stable'
+
+Options:
+ require-passing-tests-on: [ 'Linux', 'FreeBSD', 'Windows' ]
--- /dev/null
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: BSD-3-Clause
+cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
+set(PIM_VERSION "5.21.3")
+
+project(KLdap VERSION ${PIM_VERSION})
+
+# ECM setup
+set(KF5_MIN_VERSION "5.95.0")
+
+find_package(ECM ${KF5_MIN_VERSION} CONFIG REQUIRED)
+set(CMAKE_MODULE_PATH ${KLdap_SOURCE_DIR}/cmake ${ECM_MODULE_PATH})
+
+include(KDEInstallDirs)
+include(KDECMakeSettings)
+include(KDECompilerSettings NO_POLICY_SCOPE)
+
+include(GenerateExportHeader)
+include(ECMGenerateHeaders)
+include(ECMGeneratePriFile)
+
+include(ECMSetupVersion)
+include(FeatureSummary)
+include(KDEGitCommitHooks)
+include(KDEClangFormat)
+file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
+kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
+
+include(ECMQtDeclareLoggingCategory)
+include(ECMDeprecationSettings)
+include(ECMAddQch)
+
+set(KLDAP_LIB_VERSION ${PIM_VERSION})
+
+find_package(KF5KIO ${KF5_MIN_VERSION} CONFIG REQUIRED)
+find_package(KF5I18n ${KF5_MIN_VERSION} CONFIG REQUIRED)
+find_package(KF5DocTools ${KF5_MIN_VERSION} CONFIG)
+
+find_package(Qt${QT_MAJOR_VERSION}Keychain CONFIG)
+set_package_properties(Qt${QT_MAJOR_VERSION}Keychain PROPERTIES
+ DESCRIPTION "Provides support for secure credentials storage"
+ URL "https://github.com/frankosterfeld/qtkeychain"
+ TYPE REQUIRED)
+
+# tell what is missing without doctools
+set_package_properties(KF5DocTools PROPERTIES DESCRIPTION "Provides tools to generate documentation in various format from DocBook files"
+ TYPE OPTIONAL
+ PURPOSE "Required to build documentation")
+
+ecm_setup_version(PROJECT VARIABLE_PREFIX KLDAP
+ VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kldap_version.h"
+ PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5LdapConfigVersion.cmake"
+ SOVERSION 5
+)
+
+option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF)
+add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)")
+
+
+option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" OFF)
+set(COMPILE_WITH_UNITY_CMAKE_SUPPORT OFF)
+if (USE_UNITY_CMAKE_SUPPORT)
+ set(COMPILE_WITH_UNITY_CMAKE_SUPPORT ON)
+endif()
+
+########### Find packages ###########
+find_package(KF5WidgetsAddons ${KF5_MIN_VERSION} CONFIG REQUIRED)
+
+ecm_set_disabled_deprecation_versions(QT 5.15.2 KF 5.96.0)
+
+
+find_package(Ldap)
+set_package_properties(Ldap PROPERTIES
+ TYPE RECOMMENDED
+ PURPOSE "Needed to provide LDAP functionality in KDE"
+)
+
+find_package(Sasl2)
+set_package_properties(Sasl2 PROPERTIES TYPE REQUIRED)
+
+if (Ldap_FOUND)
+ set(LDAP_FOUND 1)
+endif()
+
+add_definitions(-DTRANSLATION_DOMAIN=\"libkldap5\")
+
+
+########### CMake Config Files ###########
+set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Ldap")
+
+configure_package_config_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/KF5LdapConfig.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/KF5LdapConfig.cmake"
+ INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
+)
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/KF5LdapConfig.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/KF5LdapConfigVersion.cmake"
+ DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+ COMPONENT Devel
+)
+
+install(EXPORT KF5LdapTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5LdapTargets.cmake NAMESPACE KF5::)
+
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/kldap_version.h
+ DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KLDAP
+ COMPONENT Devel
+)
+
+########### Targets ###########
+add_subdirectory(src)
+add_subdirectory(kioslave)
+if(BUILD_TESTING)
+ add_subdirectory(autotests)
+ add_subdirectory(tests)
+endif()
+
+ecm_qt_install_logging_categories(
+ EXPORT KLDAP
+ FILE kldap.categories
+ DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
+ )
+
+kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
+ki18n_install(po)
+if(KF5DocTools_FOUND)
+ #kdoctools_install(po)
+endif()
+
+if (BUILD_QCH)
+ ecm_install_qch_export(
+ TARGETS KF5LDap_QCH
+ FILE KF5LDapQchTargets.cmake
+ DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+ COMPONENT Devel
+ )
+ set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5LDapQchTargets.cmake\")")
+endif()
+
+feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
--- /dev/null
+{
+ "version": 3,
+ "configurePresets": [
+ {
+ "name": "base",
+ "displayName": "base preset",
+ "generator": "Ninja",
+ "binaryDir": "${sourceDir}/build-${presetName}",
+ "installDir": "$env{KF5}",
+ "hidden": true
+ },
+ {
+ "name": "dev",
+ "displayName": "Build as debug",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+ "inherits": [
+ "base"
+ ]
+
+ },
+ {
+ "name": "coverage",
+ "displayName": "Build as debug",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug",
+ "BUILD_COVERAGE": "ON",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+ "inherits": [
+ "base"
+ ]
+ },
+ {
+ "name": "dev-qt6",
+ "displayName": "Build against qt6",
+ "binaryDir": "${sourceDir}/build-qt6",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug",
+ "BUILD_WITH_QT6": "ON",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+ "inherits": [
+ "base"
+ ]
+ },
+ {
+ "name": "dev-disable-deprecated",
+ "displayName": "Build as without deprecated methods",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
+ "CMAKE_CXX_FLAGS_INIT": "-DQT_DISABLE_DEPRECATED_BEFORE=0x060000 -DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x060000"
+ },
+ "inherits": [
+ "base"
+ ]
+ },
+ {
+ "name": "asan",
+ "displayName": "Build with Asan support.",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug",
+ "ECM_ENABLE_SANITIZERS" : "'address;undefined'",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+ "inherits": [
+ "base"
+ ]
+ },
+ {
+ "name": "pch",
+ "displayName": "Build with PCH support.",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug",
+ "COMPILE_WITH_CMAKE_PCH_SUPPORT": "ON",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+ "inherits": [
+ "base"
+ ]
+ },
+ {
+ "name": "dev-clang",
+ "displayName": "dev-clang",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+ "environment": {
+ "CXX": "clang++",
+ "CCACHE_DISABLE": "ON"
+ },
+ "inherits": [
+ "base"
+ ]
+ },
+ {
+ "name": "unity",
+ "displayName": "Build with CMake unity support.",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug",
+ "USE_UNITY_CMAKE_SUPPORT": "ON",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+ "inherits": [
+ "base"
+ ]
+ },
+ {
+ "name": "release",
+ "displayName": "Build as release mode.",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Release"
+ },
+ "inherits": [
+ "base"
+ ]
+ },
+ {
+ "name": "profile",
+ "displayName": "profile",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "RelWithDebInfo",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+ "inherits": [
+ "base"
+ ]
+ },
+ {
+ "name": "clazy",
+ "displayName": "clazy",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug"
+ },
+ "environment": {
+ "CXX": "clazy",
+ "CCACHE_DISABLE": "ON"
+ },
+ "inherits": [
+ "base"
+ ]
+ }
+
+ ],
+ "buildPresets": [
+ {
+ "name": "dev",
+ "configurePreset": "dev"
+ },
+ {
+ "name": "dev-qt6",
+ "configurePreset": "dev-qt6"
+ },
+ {
+ "name": "dev-disable-deprecated",
+ "configurePreset": "dev-disable-deprecated"
+ },
+ {
+ "name": "pch",
+ "configurePreset": "pch"
+ },
+ {
+ "name": "release",
+ "configurePreset": "release"
+ },
+ {
+ "name": "coverage",
+ "configurePreset": "coverage"
+ },
+ {
+ "name": "dev-clang",
+ "configurePreset": "dev-clang"
+ },
+ {
+ "name": "asan",
+ "configurePreset": "asan"
+ },
+ {
+ "name": "unity",
+ "configurePreset": "unity"
+ },
+ {
+ "name": "clazy",
+ "configurePreset": "clazy",
+ "environment": {
+ "CLAZY_CHECKS" : "level0,level1,detaching-member,ifndef-define-typo,isempty-vs-count,qrequiredresult-candidates,reserve-candidates,signal-with-return-value,unneeded-cast,function-args-by-ref,function-args-by-value,returning-void-expression,no-ctor-missing-parent-argument,isempty-vs-count,qhash-with-char-pointer-key,raw-environment-function,qproperty-type-mismatch,old-style-connect,qstring-allocations,container-inside-loop,heap-allocated-small-trivial-type,inefficient-qlist,qstring-varargs,level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo",
+ "CCACHE_DISABLE" : "ON"
+ }
+ }
+ ],
+ "testPresets": [
+ {
+ "name": "dev",
+ "configurePreset": "dev",
+ "output": {"outputOnFailure": true},
+ "execution": {"noTestsAction": "error", "stopOnFailure": false}
+ },
+ {
+ "name": "asan",
+ "configurePreset": "asan",
+ "output": {"outputOnFailure": true},
+ "execution": {"noTestsAction": "error", "stopOnFailure": true}
+ }
+ ]
+}
--- /dev/null
+# SPDX-FileCopyrightText: 2021-2022 Laurent Montel <montel@kde.org>
+# SPDX-License-Identifier: BSD-3-Clause
--- /dev/null
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: BSD-3-Clause
+
+
+@PACKAGE_INIT@
+
+include("${CMAKE_CURRENT_LIST_DIR}/KF5LdapTargets.cmake")
--- /dev/null
+Copyright (c) <year> <owner>. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors
+may be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--- /dev/null
+Creative Commons Legal Code
+
+CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
+NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
+AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
+ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
+OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
+LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
+OR WORKS PROVIDED HEREUNDER.
+
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer exclusive
+Copyright and Related Rights (defined below) upon the creator and subsequent
+owner(s) (each and all, an "owner") of an original work of authorship and/or
+a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for the
+purpose of contributing to a commons of creative, cultural and scientific
+works ("Commons") that the public can reliably and without fear of later claims
+of infringement build upon, modify, incorporate in other works, reuse and
+redistribute as freely as possible in any form whatsoever and for any purposes,
+including without limitation commercial purposes. These owners may contribute
+to the Commons to promote the ideal of a free culture and the further production
+of creative, cultural and scientific works, or to gain reputation or greater
+distribution for their Work in part through the use and efforts of others.
+
+For these and/or other purposes and motivations, and without any expectation
+of additional consideration or compensation, the person associating CC0 with
+a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
+and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
+and publicly distribute the Work under its terms, with knowledge of his or
+her Copyright and Related Rights in the Work and the meaning and intended
+legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be protected
+by copyright and related or neighboring rights ("Copyright and Related Rights").
+Copyright and Related Rights include, but are not limited to, the following:
+
+i. the right to reproduce, adapt, distribute, perform, display, communicate,
+and translate a Work;
+
+ ii. moral rights retained by the original author(s) and/or performer(s);
+
+iii. publicity and privacy rights pertaining to a person's image or likeness
+depicted in a Work;
+
+iv. rights protecting against unfair competition in regards to a Work, subject
+to the limitations in paragraph 4(a), below;
+
+v. rights protecting the extraction, dissemination, use and reuse of data
+in a Work;
+
+vi. database rights (such as those arising under Directive 96/9/EC of the
+European Parliament and of the Council of 11 March 1996 on the legal protection
+of databases, and under any national implementation thereof, including any
+amended or successor version of such directive); and
+
+vii. other similar, equivalent or corresponding rights throughout the world
+based on applicable law or treaty, and any national implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention of,
+applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
+unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
+and Related Rights and associated claims and causes of action, whether now
+known or unknown (including existing as well as future claims and causes of
+action), in the Work (i) in all territories worldwide, (ii) for the maximum
+duration provided by applicable law or treaty (including future time extensions),
+(iii) in any current or future medium and for any number of copies, and (iv)
+for any purpose whatsoever, including without limitation commercial, advertising
+or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
+benefit of each member of the public at large and to the detriment of Affirmer's
+heirs and successors, fully intending that such Waiver shall not be subject
+to revocation, rescission, cancellation, termination, or any other legal or
+equitable action to disrupt the quiet enjoyment of the Work by the public
+as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason be
+judged legally invalid or ineffective under applicable law, then the Waiver
+shall be preserved to the maximum extent permitted taking into account Affirmer's
+express Statement of Purpose. In addition, to the extent the Waiver is so
+judged Affirmer hereby grants to each affected person a royalty-free, non
+transferable, non sublicensable, non exclusive, irrevocable and unconditional
+license to exercise Affirmer's Copyright and Related Rights in the Work (i)
+in all territories worldwide, (ii) for the maximum duration provided by applicable
+law or treaty (including future time extensions), (iii) in any current or
+future medium and for any number of copies, and (iv) for any purpose whatsoever,
+including without limitation commercial, advertising or promotional purposes
+(the "License"). The License shall be deemed effective as of the date CC0
+was applied by Affirmer to the Work. Should any part of the License for any
+reason be judged legally invalid or ineffective under applicable law, such
+partial invalidity or ineffectiveness shall not invalidate the remainder of
+the License, and in such case Affirmer hereby affirms that he or she will
+not (i) exercise any of his or her remaining Copyright and Related Rights
+in the Work or (ii) assert any associated claims and causes of action with
+respect to the Work, in either case contrary to Affirmer's express Statement
+of Purpose.
+
+ 4. Limitations and Disclaimers.
+
+a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
+licensed or otherwise affected by this document.
+
+b. Affirmer offers the Work as-is and makes no representations or warranties
+of any kind concerning the Work, express, implied, statutory or otherwise,
+including without limitation warranties of title, merchantability, fitness
+for a particular purpose, non infringement, or the absence of latent or other
+defects, accuracy, or the present or absence of errors, whether or not discoverable,
+all to the greatest extent permissible under applicable law.
+
+c. Affirmer disclaims responsibility for clearing rights of other persons
+that may apply to the Work or any use thereof, including without limitation
+any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
+responsibility for obtaining any necessary consents, permissions or other
+rights required for any use of the Work.
+
+d. Affirmer understands and acknowledges that Creative Commons is not a party
+to this document and has no duty or obligation with respect to this CC0 or
+use of the Work.
--- /dev/null
+GNU LIBRARY GENERAL PUBLIC LICENSE
+
+Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc.
+
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is numbered 2 because
+it goes with version 2 of the ordinary GPL.]
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public Licenses are intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.
+
+This license, the Library General Public License, applies to some specially
+designated Free Software Foundation software, and to any other libraries whose
+authors decide to use it. You can use it for your libraries, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for this service if you
+wish), that you receive source code or can get it if you want it, that you
+can change the software or use pieces of it in new free programs; and that
+you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to
+deny you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of
+the library, or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or for
+a fee, you must give the recipients all the rights that we gave you. You must
+make sure that they, too, receive or can get the source code. If you link
+a program with the library, you must provide complete object files to the
+recipients so that they can relink them with the library, after making changes
+to the library and recompiling it. And you must show them these terms so they
+know their rights.
+
+Our method of protecting your rights has two steps: (1) copyright the library,
+and (2) offer you this license which gives you legal permission to copy, distribute
+and/or modify the library.
+
+Also, for each distributor's protection, we want to make certain that everyone
+understands that there is no warranty for this free library. If the library
+is modified by someone else and passed on, we want its recipients to know
+that what they have is not the original version, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that companies distributing free software will individually
+obtain patent licenses, thus in effect transforming the program into proprietary
+software. To prevent this, we have made it clear that any patent must be licensed
+for everyone's free use or not licensed at all.
+
+Most GNU software, including some libraries, is covered by the ordinary GNU
+General Public License, which was designed for utility programs. This license,
+the GNU Library General Public License, applies to certain designated libraries.
+This license is quite different from the ordinary one; be sure to read it
+in full, and don't assume that anything in it is the same as in the ordinary
+license.
+
+The reason we have a separate public license for some libraries is that they
+blur the distinction we usually make between modifying or adding to a program
+and simply using it. Linking a program with a library, without changing the
+library, is in some sense simply using the library, and is analogous to running
+a utility program or application program. However, in a textual and legal
+sense, the linked executable is a combined work, a derivative of the original
+library, and the ordinary General Public License treats it as such.
+
+Because of this blurred distinction, using the ordinary General Public License
+for libraries did not effectively promote software sharing, because most developers
+did not use the libraries. We concluded that weaker conditions might promote
+sharing better.
+
+However, unrestricted linking of non-free programs would deprive the users
+of those programs of all benefit from the free status of the libraries themselves.
+This Library General Public License is intended to permit developers of non-free
+programs to use free libraries, while preserving your freedom as a user of
+such programs to change the free libraries that are incorporated in them.
+(We have not seen how to achieve this as regards changes in header files,
+but we have achieved it as regards changes in the actual functions of the
+Library.) The hope is that this will lead to faster development of free libraries.
+
+The precise terms and conditions for copying, distribution and modification
+follow. Pay close attention to the difference between a "work based on the
+library" and a "work that uses the library". The former contains code derived
+from the library, while the latter only works together with the library.
+
+Note that it is possible for a library to be covered by the ordinary General
+Public License rather than by this special one.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any software library which contains a
+notice placed by the copyright holder or other authorized party saying it
+may be distributed under the terms of this Library General Public License
+(also called "this License"). Each licensee is addressed as "you".
+
+A "library" means a collection of software functions and/or data prepared
+so as to be conveniently linked with application programs (which use some
+of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which has
+been distributed under these terms. A "work based on the Library" means either
+the Library or any derivative work under copyright law: that is to say, a
+work containing the Library or a portion of it, either verbatim or with modifications
+and/or translated straightforwardly into another language. (Hereinafter, translation
+is included without limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for making modifications
+to it. For a library, complete source code means all the source code for all
+modules it contains, plus any associated interface definition files, plus
+the scripts used to control compilation and installation of the library.
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running a program
+using the Library is not restricted, and output from such a program is covered
+only if its contents constitute a work based on the Library (independent of
+the use of the Library in a tool for writing it). Whether that is true depends
+on what the Library does and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and disclaimer
+of warranty; keep intact all the notices that refer to this License and to
+the absence of any warranty; and distribute a copy of this License along with
+the Library.
+
+You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Library or any portion of it,
+thus forming a work based on the Library, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all
+of these conditions:
+
+ a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices stating that
+you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no charge to all
+third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a table of
+data to be supplied by an application program that uses the facility, other
+than as an argument passed when the facility is invoked, then you must make
+a good faith effort to ensure that, in the event an application does not supply
+such function or table, the facility still operates, and performs whatever
+part of its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has a purpose
+that is entirely well-defined independent of the application. Therefore, Subsection
+2d requires that any application-supplied function or table used by this function
+must be optional: if the application does not supply it, the square root function
+must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Library, and can be reasonably
+considered independent and separate works in themselves, then this License,
+and its terms, do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as part of a whole
+which is a work based on the Library, the distribution of the whole must be
+on the terms of this License, whose permissions for other licensees extend
+to the entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise
+the right to control the distribution of derivative or collective works based
+on the Library.
+
+In addition, mere aggregation of another work not based on the Library with
+the Library (or with a work based on the Library) on a volume of a storage
+or distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public License
+instead of this License to a given copy of the Library. To do this, you must
+alter all the notices that refer to this License, so that they refer to the
+ordinary GNU General Public License, version 2, instead of to this License.
+(If a newer version than version 2 of the ordinary GNU General Public License
+has appeared, then you can specify that version instead if you wish.) Do not
+make any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for that copy,
+so the ordinary GNU General Public License applies to all subsequent copies
+and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the Library
+into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative of
+it, under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you accompany it with the complete corresponding
+machine-readable source code, which must be distributed under the terms of
+Sections 1 and 2 above on a medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy from a designated
+place, then offering equivalent access to copy the source code from the same
+place satisfies the requirement to distribute the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+5. A program that contains no derivative of any portion of the Library, but
+is designed to work with the Library by being compiled or linked with it,
+is called a "work that uses the Library". Such a work, in isolation, is not
+a derivative work of the Library, and therefore falls outside the scope of
+this License.
+
+However, linking a "work that uses the Library" with the Library creates an
+executable that is a derivative of the Library (because it contains portions
+of the Library), rather than a "work that uses the library". The executable
+is therefore covered by this License. Section 6 states terms for distribution
+of such executables.
+
+When a "work that uses the Library" uses material from a header file that
+is part of the Library, the object code for the work may be a derivative work
+of the Library even though the source code is not. Whether this is true is
+especially significant if the work can be linked without the Library, or if
+the work is itself a library. The threshold for this to be true is not precisely
+defined by law.
+
+If such an object file uses only numerical parameters, data structure layouts
+and accessors, and small macros and small inline functions (ten lines or less
+in length), then the use of the object file is unrestricted, regardless of
+whether it is legally a derivative work. (Executables containing this object
+code plus portions of the Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may distribute
+the object code for the work under the terms of Section 6. Any executables
+containing that work also fall under Section 6, whether or not they are linked
+directly with the Library itself.
+
+6. As an exception to the Sections above, you may also compile or link a "work
+that uses the Library" with the Library to produce a work containing portions
+of the Library, and distribute that work under terms of your choice, provided
+that the terms permit modification of the work for the customer's own use
+and reverse engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the Library
+is used in it and that the Library and its use are covered by this License.
+You must supply a copy of this License. If the work during execution displays
+copyright notices, you must include the copyright notice for the Library among
+them, as well as a reference directing the user to the copy of this License.
+Also, you must do one of these things:
+
+a) Accompany the work with the complete corresponding machine-readable source
+code for the Library including whatever changes were used in the work (which
+must be distributed under Sections 1 and 2 above); and, if the work is an
+executable linked with the Library, with the complete machine-readable "work
+that uses the Library", as object code and/or source code, so that the user
+can modify the Library and then relink to produce a modified executable containing
+the modified Library. (It is understood that the user who changes the contents
+of definitions files in the Library will not necessarily be able to recompile
+the application to use the modified definitions.)
+
+b) Accompany the work with a written offer, valid for at least three years,
+to give the same user the materials specified in Subsection 6a, above, for
+a charge no more than the cost of performing this distribution.
+
+c) If distribution of the work is made by offering access to copy from a designated
+place, offer equivalent access to copy the above specified materials from
+the same place.
+
+d) Verify that the user has already received a copy of these materials or
+that you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the Library" must
+include any data and utility programs needed for reproducing the executable
+from it. However, as a special exception, the source code distributed need
+not include anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the operating
+system on which the executable runs, unless that component itself accompanies
+the executable.
+
+It may happen that this requirement contradicts the license restrictions of
+other proprietary libraries that do not normally accompany the operating system.
+Such a contradiction means you cannot use both them and the Library together
+in an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library side-by-side
+in a single library together with other library facilities not covered by
+this License, and distribute such a combined library, provided that the separate
+distribution of the work based on the Library and of the other library facilities
+is otherwise permitted, and provided that you do these two things:
+
+a) Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities. This must be distributed
+under the terms of the Sections above.
+
+b) Give prominent notice with the combined library of the fact that part of
+it is a work based on the Library, and explaining where to find the accompanying
+uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute the Library
+except as expressly provided under this License. Any attempt otherwise to
+copy, modify, sublicense, link with, or distribute the Library is void, and
+will automatically terminate your rights under this License. However, parties
+who have received copies, or rights, from you under this License will not
+have their licenses terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute the
+Library or its derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or distributing the Library
+(or any work based on the Library), you indicate your acceptance of this License
+to do so, and all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the Library),
+the recipient automatically receives a license from the original licensor
+to copy, distribute, link with or modify the Library subject to these terms
+and conditions. You may not impose any further restrictions on the recipients'
+exercise of the rights granted herein. You are not responsible for enforcing
+compliance by third parties to this License.
+
+11. If, as a consequence of a court judgment or allegation of patent infringement
+or for any other reason (not limited to patent issues), conditions are imposed
+on you (whether by court order, agreement or otherwise) that contradict the
+conditions of this License, they do not excuse you from the conditions of
+this License. If you cannot distribute so as to satisfy simultaneously your
+obligations under this License and any other pertinent obligations, then as
+a consequence you may not distribute the Library at all. For example, if a
+patent license would not permit royalty-free redistribution of the Library
+by all those who receive copies directly or indirectly through you, then the
+only way you could satisfy both it and this License would be to refrain entirely
+from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents
+or other property right claims or to contest validity of any such claims;
+this section has the sole purpose of protecting the integrity of the free
+software distribution system which is implemented by public license practices.
+Many people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose
+that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in certain
+countries either by patents or by copyrighted interfaces, the original copyright
+holder who places the Library under this License may add an explicit geographical
+distribution limitation excluding those countries, so that distribution is
+permitted only in or among countries not thus excluded. In such case, this
+License incorporates the limitation as if written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new versions of
+the Library General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to address
+new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library specifies
+a version number of this License which applies to it and "any later version",
+you have the option of following the terms and conditions either of that version
+or of any later version published by the Free Software Foundation. If the
+Library does not specify a license version number, you may choose any version
+ever published by the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free programs
+whose distribution conditions are incompatible with these, write to the author
+to ask for permission. For software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we sometimes make exceptions
+for this. Our decision will be guided by the two goals of preserving the free
+status of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
+OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
+OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
+OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Libraries
+
+If you develop a new library, and you want it to be of the greatest possible
+use to the public, we recommend making it free software that everyone can
+redistribute and change. You can do so by permitting redistribution under
+these terms (or, alternatively, under the terms of the ordinary General Public
+License).
+
+To apply these terms, attach the following notices to the library. It is safest
+to attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the "copyright"
+line and a pointer to where the full notice is found.
+
+one line to give the library's name and an idea of what it does.
+
+Copyright (C) year name of author
+
+This library is free software; you can redistribute it and/or modify it under
+the terms of the GNU Library General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+This library is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more
+details.
+
+You should have received a copy of the GNU Library General Public License
+along with this library; if not, write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the library, if necessary. Here
+is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in
+
+the library `Frob' (a library for tweaking knobs) written
+
+by James Random Hacker.
+
+signature of Ty Coon, 1 April 1990
+
+Ty Coon, President of Vice
+
+That's all there is to it!
--- /dev/null
+MIT License Copyright (c) <year> <copyright holders>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- /dev/null
+# KLDAP #
+
+Allows LDAP accessing with a convenient Qt style C++ API.
--- /dev/null
+SPDX-FileCopyrightText: 2016 Daniel Vrátil <dvratil@kde.org>
+SPDX-License-Identifier: CC0-1.0
--- /dev/null
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: BSD-3-Clause
+include(ECMAddTests)
+
+find_package(Qt${QT_MAJOR_VERSION}Test CONFIG REQUIRED)
+
+if(Ldap_FOUND)
+ ecm_add_tests(testkldap.cpp NAME_PREFIX "kldap-" LINK_LIBRARIES KF5::Ldap Qt${QT_MAJOR_VERSION}::Test)
+endif()
+
+add_executable(ldapclientsearchconfigreadconfigjobtest ldapclientsearchconfigreadconfigjobtest.cpp)
+add_test(NAME ldapclientsearchconfigreadconfigjobtest COMMAND ldapclientsearchconfigreadconfigjobtest)
+ecm_mark_as_test(ldapclientsearchconfigreadconfigjobtest)
+target_link_libraries(ldapclientsearchconfigreadconfigjobtest Qt${QT_MAJOR_VERSION}::Test KF5::Ldap KF5::ConfigCore)
+
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapclientsearchconfigreadconfigjobtest.h"
+#include "widgets/ldapclientsearchconfigreadconfigjob.h"
+#include <QTest>
+QTEST_MAIN(LdapClientSearchConfigReadConfigJobTest)
+LdapClientSearchConfigReadConfigJobTest::LdapClientSearchConfigReadConfigJobTest(QObject *parent)
+ : QObject(parent)
+{
+}
+
+void LdapClientSearchConfigReadConfigJobTest::shouldHaveDefaultValues()
+{
+ KLDAP::LdapClientSearchConfigReadConfigJob job;
+ QVERIFY(!job.active());
+ QCOMPARE(job.serverIndex(), -1);
+ QVERIFY(!job.canStart());
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+
+#include <QObject>
+
+class LdapClientSearchConfigReadConfigJobTest : public QObject
+{
+ Q_OBJECT
+public:
+ explicit LdapClientSearchConfigReadConfigJobTest(QObject *parent = nullptr);
+ ~LdapClientSearchConfigReadConfigJobTest() override = default;
+private Q_SLOTS:
+ void shouldHaveDefaultValues();
+};
--- /dev/null
+/*
+ This file is part of libkdepim.
+
+ SPDX-FileCopyrightText: 2004 Tobias Koenig <tokoe@kde.org>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "testkldap.h"
+
+#include "ber.h"
+#include "ldapconnection.h"
+#include "ldapdn.h"
+#include "ldapoperation.h"
+#include "ldapsearch.h"
+#include "ldapserver.h"
+#include "ldapurl.h"
+#include "ldif.h"
+
+#include <QDebug>
+#include <QFile>
+#include <QTest>
+QTEST_MAIN(KLdapTest)
+
+KLdapTest::KLdapTest(QObject *parent)
+ : QObject(parent)
+{
+}
+
+void KLdapTest::initTestCase()
+{
+ /*
+ Read in the connection details of an LDAP server to use for testing.
+ You should copy the file testurl.txt.tmpl to testurl.txt and specify a url in this file.
+ The specified server should not be a production server in case we break anything here.
+ You have been warned!
+ */
+ const QString filename(QStringLiteral("testurl.txt"));
+ QFile file(filename);
+ if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ QTextStream stream(&file);
+ stream >> m_url;
+ file.close();
+ }
+
+ m_search = new LdapSearch;
+}
+
+void KLdapTest::testBer()
+{
+ Ber ber1;
+ Ber ber2;
+ Ber ber3;
+ Ber ber4;
+ Ber ber5;
+ Ber ber6;
+ Ber ber7;
+ Ber bber;
+
+ int ainteger;
+ QByteArray aoctetString1;
+ QByteArray aoctetString2;
+ QByteArray aoctetString3;
+ QList<QByteArray> alist1;
+ QList<QByteArray> alist2;
+
+ int binteger;
+ QByteArray boctetString1;
+ QByteArray boctetString2;
+ QByteArray boctetString3;
+ QList<QByteArray> blist1;
+ QList<QByteArray> blist2;
+
+ aoctetString1 = "KDE";
+ aoctetString2 = "the";
+ aoctetString3 = "next generation";
+
+ alist1.append(aoctetString1);
+ alist1.append(aoctetString2);
+
+ alist2.append(aoctetString2);
+ alist2.append(aoctetString3);
+ alist2.append(aoctetString1);
+
+ ainteger = 23543;
+
+ ber1.printf(QStringLiteral("i"), ainteger);
+ ber2.printf(QStringLiteral("o"), &aoctetString1);
+ ber3.printf(QStringLiteral("O"), &aoctetString2);
+ ber4.printf(QStringLiteral("s"), &aoctetString3);
+ ber5.printf(QStringLiteral("{v}"), &alist1);
+ ber6.printf(QStringLiteral("{V}"), &alist2);
+ ber7.printf(QStringLiteral("oi{v}O"), &aoctetString1, ainteger, &alist2, &aoctetString2);
+
+ // test integer:
+ bber = ber1;
+ bber.scanf(QStringLiteral("i"), &binteger);
+ QCOMPARE(ainteger, binteger);
+
+ // test octet strings:
+ bber = ber2;
+ bber.scanf(QStringLiteral("o"), &boctetString1);
+ QCOMPARE(aoctetString1, boctetString1);
+ bber = ber3;
+ bber.scanf(QStringLiteral("o"), &boctetString2);
+ QCOMPARE(aoctetString2, boctetString2);
+ bber = ber4;
+ bber.scanf(QStringLiteral("o"), &boctetString3);
+ QCOMPARE(aoctetString3, boctetString3);
+
+ // test sequence of octet strings:
+ bber = ber5;
+ bber.scanf(QStringLiteral("v"), &blist1);
+ QCOMPARE(alist1, blist1);
+
+ bber = ber6;
+ bber.scanf(QStringLiteral("v"), &blist2);
+ QCOMPARE(alist2, blist2);
+
+ // complex tests
+ boctetString1 = boctetString2 = boctetString3 = QByteArray();
+ binteger = 0;
+ blist1.clear();
+ blist2.clear();
+
+ bber = ber7;
+ bber.scanf(QStringLiteral("oivO"), &boctetString1, &binteger, &blist2, &boctetString2);
+ QCOMPARE(aoctetString1, boctetString1);
+ QCOMPARE(aoctetString2, boctetString2);
+ QCOMPARE(alist2, blist2);
+ QCOMPARE(ainteger, binteger);
+}
+
+void KLdapTest::cleanupTestCase()
+{
+ delete m_search;
+}
+
+void KLdapTest::testLdapUrl()
+{
+ // Test LdapUrl using some hardwired values so that we know what to compare to
+ LdapUrl url;
+ bool critical;
+
+ url.setUrl(
+ QStringLiteral("ldap://cn=manager,dc=kde,dc=org:password@localhost:3999/"
+ "dc=kde,dc=org?cn,mail?sub?(objectClass=*)?x-dir=base"));
+ url.parseQuery();
+
+ QCOMPARE(url.userName(), QStringLiteral("cn=manager,dc=kde,dc=org"));
+ QCOMPARE(url.password(), QStringLiteral("password"));
+ QCOMPARE(url.dn(), LdapDN(QStringLiteral("dc=kde,dc=org")));
+ QCOMPARE(url.scope(), LdapUrl::Sub);
+ QCOMPARE(url.attributes().at(0), QStringLiteral("cn"));
+ QCOMPARE(url.attributes().at(1), QStringLiteral("mail"));
+ QCOMPARE(url.filter(), QStringLiteral("(objectClass=*)"));
+ QCOMPARE(url.extension(QStringLiteral("x-dir"), critical), QStringLiteral("base"));
+ QCOMPARE(url.query(), QStringLiteral("?cn,mail?sub??x-dir=base"));
+ // For some reason the code removes the filter if it's (objectClass=*)...
+ QCOMPARE(url.toString(),
+ QStringLiteral("ldap://cn=manager,dc=kde,dc=org:password@localhost:3999/"
+ "dc=kde,dc=org??cn,mail?sub??x-dir=base"));
+
+ // Now set a different filter
+ url.setFilter(QStringLiteral("(objectclass=person)"));
+ QCOMPARE(url.toDisplayString(),
+ QStringLiteral("ldap://cn=manager,dc=kde,dc=org@localhost:3999/"
+ "dc=kde,dc=org??cn,mail?sub?%28objectclass%3Dperson%29?x-dir=base"));
+ QCOMPARE(url.filter(), QStringLiteral("(objectclass=person)"));
+
+ // And now a filter with non-ascii letters
+ url.setFilter(QStringLiteral("(givenName=Valérie *)"));
+ QCOMPARE(url.toDisplayString(),
+ QString::fromUtf8("ldap://cn=manager,dc=kde,dc=org@localhost:3999/"
+ "dc=kde,dc=org??cn,mail?sub?%28givenName%3DValérie %2A%29?x-dir=base"));
+ QCOMPARE(url.filter(), QStringLiteral("(givenName=Valérie *)"));
+
+ // Test roundtrip via QUrl, as happens when sending it to kio_ldap
+ const QUrl qurl(url);
+ QCOMPARE(qurl.toDisplayString(), url.toDisplayString());
+
+ const LdapUrl kiourl(qurl);
+ QCOMPARE(kiourl.toString(), url.toString());
+ QCOMPARE(kiourl.toDisplayString(), url.toDisplayString());
+ QCOMPARE(kiourl.filter(), QStringLiteral("(givenName=Valérie *)"));
+}
+
+void KLdapTest::testLdapConnection()
+{
+ // Try to connect using an LdapUrl (read in from testurl.txt).
+ LdapUrl url;
+ url.setUrl(m_url);
+
+ LdapConnection conn;
+ conn.setUrl(url);
+ int ret;
+ if ((ret = conn.connect())) {
+ qDebug() << "Could not connect to LDAP server. Error was:" << conn.connectionError();
+ }
+ QCOMPARE(ret, 0);
+
+ LdapOperation op(conn);
+ // Now attempt to bind
+ if ((ret = op.bind_s())) {
+ qDebug() << "Could not bind to server. Error was:" << conn.ldapErrorString();
+ }
+ QEXPECT_FAIL("", "Will fail since no server is available for testing", Abort);
+ QCOMPARE(ret, 0);
+}
+
+void KLdapTest::testLdapSearch()
+{
+ // Lets try a search using the specified url
+ LdapUrl url;
+ url.setUrl(m_url);
+ url.parseQuery();
+ connect(m_search, &LdapSearch::result, this, &KLdapTest::searchResult);
+ connect(m_search, &LdapSearch::data, this, &KLdapTest::searchData);
+ const bool success = m_search->search(url);
+ QCoreApplication::processEvents();
+
+ QEXPECT_FAIL("", "Will fail since no server is available for testing", Abort);
+ QCOMPARE(success, true);
+
+ qDebug() << "Search found" << m_objects.size() << "matching entries";
+}
+
+void KLdapTest::searchResult(KLDAP::LdapSearch *search)
+{
+ qDebug();
+ const int err = search->error();
+ if (err) {
+ qDebug() << "Search returned the following error:" << search->errorString();
+ }
+ QCOMPARE(err, 0);
+}
+
+void KLdapTest::searchData(KLDAP::LdapSearch *search, const KLDAP::LdapObject &obj)
+{
+ Q_UNUSED(search)
+ // qDebug();
+ // qDebug() << "Object:";
+ // qDebug() << obj.toString();
+ m_objects.append(obj);
+}
+
+void KLdapTest::testLdapDN()
+{
+ const QString strDN(QStringLiteral("uid=Test\\+Person+ou=accounts\\,outgoing,dc=kde,dc=org"));
+ const LdapDN dn(strDN);
+ QCOMPARE(dn.isValid(), true);
+ QCOMPARE(dn.rdnString(), QStringLiteral("uid=Test\\+Person+ou=accounts\\,outgoing"));
+}
+
+void KLdapTest::testLdapModel()
+{
+ // Use the user-supplied testing url
+ LdapUrl url;
+ url.setUrl(m_url);
+
+ // Create a connection to use and bind with it
+ LdapConnection conn;
+ conn.setUrl(url);
+ int ret;
+ if ((ret = conn.connect())) {
+ qDebug() << "Could not connect to LDAP server. Error was:" << conn.connectionError();
+ }
+ QCOMPARE(ret, 0);
+
+ LdapOperation op(conn);
+ if ((ret = op.bind_s())) {
+ qDebug() << "Could not bind to server. Error was:" << conn.ldapErrorString();
+ }
+ QEXPECT_FAIL("", "Will fail since no server is available for testing", Abort);
+ QCOMPARE(ret, 0);
+
+ QCoreApplication::processEvents();
+}
+
+/*
+ void KLdapTest::testKLdap()
+ {
+ LdapUrl url;
+ bool critical;
+
+ url.setUrl("ldap://cn=manager,dc=kde,dc=org:password@localhost:3999"
+ "/dc=kde,dc=org?cn,mail?sub?(objectClass=*)?x-dir=base");
+ url.parseQuery();
+
+ QCOMPARE( url.user(), QStringLiteral("cn=manager,dc=kde,dc=org") );
+ QCOMPARE( url.password(), QStringLiteral("password") );
+ QCOMPARE( url.dn(), QStringLiteral("dc=kde,dc=org") );
+ QCOMPARE( url.scope(), LdapUrl::Sub );
+ QCOMPARE( url.attributes().at(0), QStringLiteral("cn") );
+ QCOMPARE( url.attributes().at(1), QStringLiteral("mail") );
+ QCOMPARE( url.filter(), QStringLiteral("(objectClass=*)") );
+ QCOMPARE( url.extension(QStringLiteral("x-dir"), critical), QStringLiteral("base") );
+
+ url.setDn("ou=People,dc=kde,dc=org");
+ QCOMPARE( url.dn(), QStringLiteral("ou=People,dc=kde,dc=org") );
+ url.setDn("/ou=People,dc=kde,dc=org");
+ QCOMPARE( url.dn(), QStringLiteral("ou=People,dc=kde,dc=org") );
+
+ LdapServer server;
+// url.setUrl("ldaps://cn=manager,dc=kde,dc=org:passwor@localhost:3999/"
+ "dc=kde,dc=org????x-timelimt=5,x-sizelimit=6,x=pagesize=7,binddn=cn=apple,ou=berry");
+url.setUrl("ldaps://cn=manager,dc=kde,dc=org:password@localhost:3999/"
+ "dc=kde,dc=org??base??x-timelimit=5");
+url.parseQuery();
+server.setUrl( url );
+QCOMPARE( url.query(), QStringLiteral("??base??x-timelimit=5") );
+QCOMPARE( url.url(), server.url().url() );
+
+LdapControl c1;
+c1.setControl( QStringLiteral("1.2.3.4.5.6"), QByteArray("abcdefg"), true );
+//test copy constructor
+LdapControl c2(c1);
+QCOMPARE( c2.oid(), QStringLiteral("1.2.3.4.5.6") );
+QCOMPARE( c2.value(), QByteArray("abcdefg") );
+QCOMPARE( c2.critical(), true );
+//test assignment operator
+LdapControl c3;
+c3 = c1;
+QCOMPARE( c3.oid(), QStringLiteral("1.2.3.4.5.6") );
+QCOMPARE( c3.value(), QByteArray("abcdefg") );
+QCOMPARE( c3.critical(), true );
+*/
+// test Ber functions
+/*
+ QByteArray left1("bertest"), right1;
+ int left2 = 0, right2;
+ int left3 = 1, right3;
+ int left4 = 2, right4;
+ int left5 = 3, right5;
+ int left6 = 1, right6;
+ QList<QByteArray> left7, right7;
+ left7.append( "abcdefghij" );
+ left7.append( "123456789" );
+ left7.append( "1234\0\0\056789" );
+
+ Ber ber;
+ ber.printf("{seeiib}", &left1, left2, left3, left4, left5, left6 );
+
+// ber.printf("{ioOi{i}}", left3, &left1, &left2, left4, left4 );
+Ber ber2 = ber;
+
+unsigned int a;
+int b;
+a = ber2.skipTag( b );
+qDebug() << "next tag:" << a << "size:" << b;
+a = ber2.skipTag( b );
+qDebug() << "next tag:" << a << "size:" << b;
+a = ber2.skipTag( b );
+qDebug() << "next tag:" << a << "size:" << b;
+a = ber2.skipTag( b );
+qDebug() << "next tag:" << a << "size:" << b;
+a = ber2.skipTag( b );
+qDebug() << "next tag:" << a << "size:" << b;
+a = ber2.skipTag( b );
+qDebug() << "next tag:" << a << "size:" << b;
+a = ber2.skipTag( b );
+qDebug() << "next tag:" << a << "size:" << b;
+a = ber2.skipTag( b );
+qDebug() << "next tag:" << a << "size:" << b;
+
+BerElement *_ber, *_ber2;
+_ber = ber_alloc_t( LBER_USE_DER );
+
+ber_len_t bl;
+ber_printf( _ber, "{i}", 5 );
+qDebug() << "native";
+_ber2 = ber_dup( _ber );
+a = ber_skip_tag( _ber2, &bl );
+qDebug() << "next tag:" << a << "size:" << bl;
+// ber_dump( _ber, 0 );
+
+// ber2.scanf("{v}", &right5 );
+
+// ber2.scanf("{inoOi{v}}", &right3, &right1, &right2, &right4, &right5 );
+
+// QCOMPARE( left1, right1 );
+// QCOMPARE( left2, right2 );
+// QCOMPARE( left3, right3 );
+// QCOMPARE( left4, right4 );
+// QCOMPARE( left5, right5 );
+*/
+/*
+ url.setUrl("ldap://localhost/dc=gyurco,dc=localdomain");
+ url.parseQuery();
+ server.setUrl( url );
+ LdapConnection conn( server );
+ int result = conn.connect();
+ qDebug() << "connect result" << result << conn.errorString();
+
+ LdapOperation op( conn );
+ int msgid = op.search( "ou=People,dc=gyurco,dc=localdomain", LdapUrl::One, "", QStringList() );
+ qDebug() << "search msgid" << msgid;
+ result = op.result( msgid );
+ qDebug() << "error code" << conn.ldapErrorCode() << "str:" << conn.ldapErrorString();
+ while ( result == LdapOperation::RES_SEARCH_ENTRY ) {
+ qDebug() << op.object().toString();
+ result = op.result( msgid );
+ }
+ qDebug() << "error code" << conn.ldapErrorCode() << "str:" << conn.ldapErrorString();
+
+ msgid = op.del( "ou=People,dc=gyurco,dc=localdomain" );
+ qDebug() << "search msgid" << msgid;
+ result = op.result( msgid );
+ qDebug() << "error code" << conn.ldapErrorCode() << "str:" << conn.ldapErrorString();
+
+ msgid = op.compare( "ou=People,dc=gyurco,dc=localdomain", "objectClass", QByteArray("top") );
+ qDebug() << "search msgid" << msgid;
+ result = op.result( msgid );
+ qDebug() << "error code" << conn.ldapErrorCode() << "str:" << conn.ldapErrorString();
+
+ msgid = op.compare( "ou=People,dc=gyurco,dc=localdomain", "objectClass",
+ QByteArray("inetOrgPerson") );
+ qDebug() << "search msgid" << msgid;
+ result = op.result( msgid );
+ qDebug() << "error code" << conn.ldapErrorCode() << "str:" << conn.ldapErrorString();
+
+ msgid = op.exop( "1.2.3.4.5.6.7.8", QByteArray("inetOrgPerson") );
+ qDebug() << "search msgid" << msgid;
+ result = op.result( msgid );
+ qDebug() << "error code" << conn.ldapErrorCode() << "str:" << conn.ldapErrorString();
+*/
+/*
+ }
+*/
--- /dev/null
+/*
+ SPDX-FileCopyrightText: 2006 Volker Krause <vkrause@kde.org>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QObject>
+#include <ldapobject.h>
+#include <ldapsearch.h>
+
+using namespace KLDAP;
+
+class KLdapTest : public QObject
+{
+ Q_OBJECT
+public:
+ explicit KLdapTest(QObject *parent = nullptr);
+ ~KLdapTest() override = default;
+
+private Q_SLOTS:
+ // void testKLdap();
+
+ void initTestCase();
+ void cleanupTestCase();
+
+ void testLdapUrl();
+ void testBer();
+ void testLdapConnection();
+ void testLdapSearch();
+ void testLdapDN();
+ void testLdapModel();
+
+private:
+ void searchResult(KLDAP::LdapSearch *search);
+ void searchData(KLDAP::LdapSearch *search, const KLDAP::LdapObject &obj);
+ QString m_url;
+ LdapSearch *m_search = nullptr;
+ LdapObjects m_objects;
+};
--- /dev/null
+ldap://cn=admin,dc=kde,dc=org:password@ldap.kde.org:389/ou=people,dc=kde,dc=org?cn,mail,loginShell?sub?(uid=*)
--- /dev/null
+#.rst:
+# FindLdap
+# --------
+#
+# Try to find the LDAP client libraries.
+#
+# This will define the following variables:
+#
+# ``Ldap_FOUND``
+# True if libldap is available.
+#
+# ``Ldap_VERSION``
+# The version of libldap
+#
+# ``Ldap_INCLUDE_DIRS``
+# This should be passed to target_include_directories() if
+# the target is not used for linking
+#
+# ``Ldap_LIBRARIES``
+# The LDAP libraries (libldap + liblber if available)
+# This can be passed to target_link_libraries() instead of
+# the ``Ldap::Ldap`` target
+#
+# If ``Ldap_FOUND`` is TRUE, the following imported target
+# will be available:
+#
+# ``Ldap::Ldap``
+# The LDAP library
+#
+# Since pre-5.0.0.
+#
+# Imported target since 5.1.41
+#
+#=============================================================================
+# SPDX-FileCopyrightText: 2006 Szombathelyi György <gyurco@freemail.hu>
+# SPDX-FileCopyrightText: 2007-2022 Laurent Montel <montel@kde.org>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#=============================================================================
+
+find_path(Ldap_INCLUDE_DIRS NAMES ldap.h)
+
+if(APPLE)
+ find_library(Ldap_LIBRARIES NAMES LDAP
+ PATHS
+ /System/Library/Frameworks
+ /Library/Frameworks
+ )
+else()
+ find_library(Ldap_LIBRARY NAMES ldap)
+ find_library(Lber_LIBRARY NAMES lber)
+endif()
+
+if(Ldap_LIBRARY AND Lber_LIBRARY)
+ set(Ldap_LIBRARIES ${Ldap_LIBRARY} ${Lber_LIBRARY})
+endif()
+
+if(EXISTS ${Ldap_INCLUDE_DIRS}/ldap_features.h)
+ file(READ ${Ldap_INCLUDE_DIRS}/ldap_features.h LDAP_FEATURES_H_CONTENT)
+ string(REGEX MATCH "#define LDAP_VENDOR_VERSION_MAJOR[ ]+[0-9]+" _LDAP_VERSION_MAJOR_MATCH ${LDAP_FEATURES_H_CONTENT})
+ string(REGEX MATCH "#define LDAP_VENDOR_VERSION_MINOR[ ]+[0-9]+" _LDAP_VERSION_MINOR_MATCH ${LDAP_FEATURES_H_CONTENT})
+ string(REGEX MATCH "#define LDAP_VENDOR_VERSION_PATCH[ ]+[0-9]+" _LDAP_VERSION_PATCH_MATCH ${LDAP_FEATURES_H_CONTENT})
+
+ string(REGEX REPLACE ".*_MAJOR[ ]+(.*)" "\\1" LDAP_VERSION_MAJOR ${_LDAP_VERSION_MAJOR_MATCH})
+ string(REGEX REPLACE ".*_MINOR[ ]+(.*)" "\\1" LDAP_VERSION_MINOR ${_LDAP_VERSION_MINOR_MATCH})
+ string(REGEX REPLACE ".*_PATCH[ ]+(.*)" "\\1" LDAP_VERSION_PATCH ${_LDAP_VERSION_PATCH_MATCH})
+
+ set(Ldap_VERSION "${LDAP_VERSION_MAJOR}.${LDAP_VERSION_MINOR}.${LDAP_VERSION_PATCH}")
+endif()
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(Ldap
+ FOUND_VAR Ldap_FOUND
+ REQUIRED_VARS Ldap_LIBRARIES Ldap_INCLUDE_DIRS
+ VERSION_VAR Ldap_VERSION
+)
+
+if(Ldap_FOUND AND NOT TARGET Lber::Lber)
+ add_library(Lber::Lber UNKNOWN IMPORTED)
+ set_target_properties(Lber::Lber PROPERTIES
+ IMPORTED_LOCATION "${Lber_LIBRARY}")
+endif()
+
+if(Ldap_FOUND AND NOT TARGET Ldap::Ldap)
+ add_library(Ldap::Ldap UNKNOWN IMPORTED)
+ set_target_properties(Ldap::Ldap PROPERTIES
+ IMPORTED_LOCATION "${Ldap_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${Ldap_INCLUDE_DIRS}"
+ INTERFACE_LINK_LIBRARIES Lber::Lber)
+endif()
+
+mark_as_advanced(Ldap_INCLUDE_DIRS Ldap_LIBRARY Lber_LIBRARY Ldap_LIBRARIES)
+
+include(FeatureSummary)
+set_package_properties(Ldap PROPERTIES
+ URL "https://www.openldap.org/"
+ DESCRIPTION "LDAP (Lightweight Directory Access Protocol) libraries."
+)
--- /dev/null
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: BSD-3-Clause
+add_subdirectory(src)
+
+if (KF5DocTools_FOUND)
+ add_subdirectory(doc)
+endif()
+
--- /dev/null
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: BSD-3-Clause
+add_subdirectory(ldap)
--- /dev/null
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: BSD-3-Clause
+########### install files ###############
+kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/ldap)
+
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % English "INCLUDE" > <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title>ldap</title>
+<articleinfo>
+<authorgroup>
+<author>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<!-- TRANS:ROLES_OF_TRANSLATORS -->
+</authorgroup>
+</articleinfo>
+
+<para><acronym>ldap</acronym> is the lightweight directory access
+protocol. It provides access to an X.500 directory, or to a stand-alone
+<acronym>LDAP</acronym> server.</para>
+
+<para>You can use the ldap kioslave as follows:</para>
+
+<para><userinput>ldap://host:port/ou=People,o=where,c=de??sub</userinput>
+for a subtree-query</para>
+
+<para>or
+<userinput>ldap://host:port/cn=MM,ou=People,o=where,c=de??base</userinput>
+for a complete branch.</para>
+
+</article>
--- /dev/null
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: BSD-3-Clause
+add_library(kio_ldap MODULE)
+target_sources(kio_ldap PRIVATE kio_ldap.cpp kio_ldap.h)
+ecm_qt_declare_logging_category(kio_ldap HEADER kldap_debug.h IDENTIFIER KLDAP_LOG CATEGORY_NAME org.kde.pim.kldap
+ DESCRIPTION "kioslave (kldap)"
+ OLD_CATEGORY_NAMES log_kldap
+ EXPORT KLDAP
+ )
+
+
+target_link_libraries(kio_ldap Qt${QT_MAJOR_VERSION}::Network KF5::KIOCore KF5::I18n KF5::Ldap)
+if (WIN32)
+ target_link_libraries(kio_ldap ws2_32)
+endif()
+set_target_properties(kio_ldap PROPERTIES OUTPUT_NAME "ldap")
+install(TARGETS kio_ldap DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf${QT_MAJOR_VERSION}/kio)
--- /dev/null
+#! /usr/bin/env bash
+
+# SPDX-License-Identifier: CC0-1.0
+# SPDX-FileCopyrightText: none
+$XGETTEXT *.cpp -o $podir/kio_ldap.pot
--- /dev/null
+/*
+ SPDX-FileCopyrightText: 2004-2007 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: MIT
+
+*/
+
+#include "kio_ldap.h"
+#include "kldap_debug.h"
+
+#include <kldap/ldif.h>
+
+#include <KLocalizedString>
+#include <QCoreApplication>
+#include <QDebug>
+#include <kio_version.h>
+
+#ifdef Q_OS_WIN
+#include <Winsock2.h>
+#else
+#include <netdb.h>
+#include <netinet/in.h>
+#endif
+#include <sys/stat.h>
+
+using namespace KIO;
+using namespace KLDAP;
+
+// Pseudo plugin class to embed meta data
+class KIOPluginForMetaData : public QObject
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.kde.kio.slave.ldap" FILE "ldap.json")
+};
+
+extern "C" {
+int Q_DECL_EXPORT kdemain(int argc, char **argv);
+}
+
+/**
+ * The main program.
+ */
+int kdemain(int argc, char **argv)
+{
+ QCoreApplication app(argc, argv); // needed for QSocketNotifier
+ app.setApplicationName(QStringLiteral("kio_ldap"));
+
+ qCDebug(KLDAP_LOG) << "Starting kio_ldap instance";
+
+ if (argc != 4) {
+ qCritical() << "Usage kio_ldap protocol pool app";
+ return -1;
+ }
+
+ // let the protocol class do its work
+ LDAPProtocol slave(argv[1], argv[2], argv[3]);
+ slave.dispatchLoop();
+
+ qCDebug(KLDAP_LOG) << "Done";
+ return 0;
+}
+
+/**
+ * Initialize the ldap slave
+ */
+LDAPProtocol::LDAPProtocol(const QByteArray &protocol, const QByteArray &pool, const QByteArray &app)
+ : SlaveBase(protocol, pool, app)
+{
+ mConnected = false;
+ mOp.setConnection(mConn);
+ qCDebug(KLDAP_LOG) << "LDAPProtocol::LDAPProtocol (" << protocol << ")";
+}
+
+LDAPProtocol::~LDAPProtocol()
+{
+ closeConnection();
+}
+
+void LDAPProtocol::LDAPErr(int err)
+{
+ QString extramsg;
+ if (mConnected) {
+ if (err == KLDAP_SUCCESS) {
+ err = mConn.ldapErrorCode();
+ }
+ if (err != KLDAP_SUCCESS) {
+ extramsg = i18n("\nAdditional info: ") + mConn.ldapErrorString();
+ }
+ }
+ if (err == KLDAP_SUCCESS) {
+ return;
+ }
+
+ qDebug() << "error code: " << err << " msg: " << LdapConnection::errorString(err) << extramsg << "'";
+ QString msg;
+ msg = mServer.url().toDisplayString();
+ if (!extramsg.isEmpty()) {
+ msg += extramsg;
+ }
+
+ /* FIXME: No need to close on all errors */
+ closeConnection();
+
+ switch (err) {
+ /* FIXME: is it worth mapping the following error codes to kio errors?
+
+ LDAP_OPERATIONS_ERROR
+ LDAP_STRONG_AUTH_REQUIRED
+ LDAP_PROTOCOL_ERROR
+ LDAP_TIMELIMIT_EXCEEDED
+ LDAP_SIZELIMIT_EXCEEDED
+ LDAP_COMPARE_FALSE
+ LDAP_COMPARE_TRUE
+ LDAP_PARTIAL_RESULTS
+ LDAP_NO_SUCH_ATTRIBUTE
+ LDAP_UNDEFINED_TYPE
+ LDAP_INAPPROPRIATE_MATCHING
+ LDAP_CONSTRAINT_VIOLATION
+ LDAP_INVALID_SYNTAX
+ LDAP_NO_SUCH_OBJECT
+ LDAP_ALIAS_PROBLEM
+ LDAP_INVALID_DN_SYNTAX
+ LDAP_IS_LEAF
+ LDAP_ALIAS_DEREF_PROBLEM
+ LDAP_INAPPROPRIATE_AUTH
+ LDAP_BUSY
+ LDAP_UNAVAILABLE
+ LDAP_UNWILLING_TO_PERFORM
+ LDAP_LOOP_DETECT
+ LDAP_NAMING_VIOLATION
+ LDAP_OBJECT_CLASS_VIOLATION
+ LDAP_NOT_ALLOWED_ON_NONLEAF
+ LDAP_NOT_ALLOWED_ON_RDN
+ LDAP_NO_OBJECT_CLASS_MODS
+ LDAP_OTHER
+ LDAP_LOCAL_ERROR
+ LDAP_ENCODING_ERROR
+ LDAP_DECODING_ERROR
+ LDAP_FILTER_ERROR
+ */
+ case KLDAP_AUTH_UNKNOWN:
+ case KLDAP_INVALID_CREDENTIALS:
+ case KLDAP_STRONG_AUTH_NOT_SUPPORTED:
+ error(ERR_CANNOT_AUTHENTICATE, msg);
+ break;
+ case KLDAP_ALREADY_EXISTS:
+ error(ERR_FILE_ALREADY_EXIST, msg);
+ break;
+ case KLDAP_INSUFFICIENT_ACCESS:
+ error(ERR_ACCESS_DENIED, msg);
+ break;
+ case KLDAP_CONNECT_ERROR:
+ case KLDAP_SERVER_DOWN:
+ error(ERR_CANNOT_CONNECT, msg);
+ break;
+ case KLDAP_TIMEOUT:
+ error(ERR_SERVER_TIMEOUT, msg);
+ break;
+ case KLDAP_PARAM_ERROR:
+ error(ERR_INTERNAL, msg);
+ break;
+ case KLDAP_NO_MEMORY:
+ error(ERR_OUT_OF_MEMORY, msg);
+ break;
+
+ default:
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 96, 0)
+ error(KIO::ERR_WORKER_DEFINED,
+ i18n("LDAP server returned the error: %1 %2\nThe LDAP URL was: %3", LdapConnection::errorString(err), extramsg, mServer.url().toDisplayString()));
+#else
+ error(ERR_SLAVE_DEFINED,
+ i18n("LDAP server returned the error: %1 %2\nThe LDAP URL was: %3", LdapConnection::errorString(err), extramsg, mServer.url().toDisplayString()));
+#endif
+ }
+}
+
+void LDAPProtocol::controlsFromMetaData(LdapControls &serverctrls, LdapControls &clientctrls)
+{
+ QString oid;
+ bool critical;
+ QByteArray value;
+ int i = 0;
+ while (hasMetaData(QStringLiteral("SERVER_CTRL%1").arg(i))) {
+ QByteArray val = metaData(QStringLiteral("SERVER_CTRL%1").arg(i)).toUtf8();
+ Ldif::splitControl(val, oid, critical, value);
+ qCDebug(KLDAP_LOG) << "server ctrl #" << i << " value: " << val << " oid: " << oid << " critical: " << critical
+ << " value: " << QString::fromUtf8(value.constData(), value.size());
+ LdapControl ctrl(oid, val, critical);
+ serverctrls.append(ctrl);
+ i++;
+ }
+ i = 0;
+ while (hasMetaData(QStringLiteral("CLIENT_CTRL%1").arg(i))) {
+ QByteArray val = metaData(QStringLiteral("CLIENT_CTRL%1").arg(i)).toUtf8();
+ Ldif::splitControl(val, oid, critical, value);
+ qCDebug(KLDAP_LOG) << "client ctrl #" << i << " value: " << val << " oid: " << oid << " critical: " << critical
+ << " value: " << QString::fromUtf8(value.constData(), value.size());
+ LdapControl ctrl(oid, val, critical);
+ clientctrls.append(ctrl);
+ i++;
+ }
+}
+
+void LDAPProtocol::LDAPEntry2UDSEntry(const LdapDN &dn, UDSEntry &entry, const LdapUrl &usrc, bool dir)
+{
+ int pos;
+ entry.clear();
+ QString name = dn.toString();
+ if ((pos = name.indexOf(QLatin1Char(','))) > 0) {
+ name.truncate(pos);
+ }
+ if ((pos = name.indexOf(QLatin1Char('='))) > 0) {
+ name.remove(0, pos + 1);
+ }
+ name.replace(QLatin1Char(' '), QLatin1String("_"));
+ if (!dir) {
+ name += QLatin1String(".ldif");
+ }
+ entry.fastInsert(KIO::UDSEntry::UDS_NAME, name);
+
+ // the file type
+ entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, dir ? S_IFDIR : S_IFREG);
+
+ // the mimetype
+ if (!dir) {
+ entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("text/plain"));
+ }
+
+ entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, dir ? 0500 : 0400);
+
+ // the url
+ LdapUrl url = usrc;
+ url.setPath(QLatin1Char('/') + dn.toString());
+ url.setScope(dir ? LdapUrl::One : LdapUrl::Base);
+ entry.fastInsert(KIO::UDSEntry::UDS_URL, url.toDisplayString());
+}
+
+void LDAPProtocol::changeCheck(const LdapUrl &url)
+{
+ LdapServer server;
+ server.setUrl(url);
+
+ if (mConnected) {
+ if (server.host() != mServer.host() || server.port() != mServer.port() || server.baseDn() != mServer.baseDn() || server.user() != mServer.user()
+ || server.bindDn() != mServer.bindDn() || server.realm() != mServer.realm() || server.password() != mServer.password()
+ || server.timeLimit() != mServer.timeLimit() || server.sizeLimit() != mServer.sizeLimit() || server.version() != mServer.version()
+ || server.security() != mServer.security() || server.auth() != mServer.auth() || server.mech() != mServer.mech()) {
+ closeConnection();
+ mServer = server;
+ openConnection();
+ }
+ } else {
+ mServer = server;
+ openConnection();
+ }
+}
+
+void LDAPProtocol::setHost(const QString &host, quint16 port, const QString &user, const QString &password)
+{
+ if (mServer.host() != host || mServer.port() != port || mServer.user() != user || mServer.password() != password) {
+ closeConnection();
+ }
+
+ mServer.host() = host;
+ if (port > 0) {
+ mServer.setPort(port);
+ } else {
+ struct servent *pse;
+ if ((pse = getservbyname(mProtocol.constData(), "tcp")) == nullptr) {
+ if (mProtocol == "ldaps") {
+ mServer.setPort(636);
+ } else {
+ mServer.setPort(389);
+ }
+ } else {
+ mServer.setPort(ntohs(pse->s_port));
+ }
+ }
+ mServer.setUser(user);
+ mServer.setPassword(password);
+
+ qCDebug(KLDAP_LOG) << "setHost: " << host << " port: " << port << " user: " << user << " pass: [protected]";
+}
+
+void LDAPProtocol::openConnection()
+{
+ if (mConnected) {
+ return;
+ }
+
+ mConn.setServer(mServer);
+ if (mConn.connect() != 0) {
+ error(ERR_CANNOT_CONNECT, mConn.connectionError());
+ return;
+ }
+
+ mConnected = true;
+
+ AuthInfo info;
+ info.url.setScheme(QLatin1String(mProtocol));
+ info.url.setHost(mServer.host());
+ info.url.setPort(mServer.port());
+ info.url.setUserName(mServer.user());
+ info.caption = i18n("LDAP Login");
+ info.comment = QString::fromLatin1(mProtocol) + QLatin1String("://") + mServer.host() + QLatin1Char(':') + QString::number(mServer.port());
+ info.commentLabel = i18n("site:");
+ info.username = mServer.auth() == LdapServer::SASL ? mServer.user() : mServer.bindDn();
+ info.password = mServer.password();
+ info.keepPassword = true;
+ bool cached = checkCachedAuthentication(info);
+
+ bool firstauth = true;
+
+ while (true) {
+ int retval = mOp.bind_s();
+ if (retval == 0) {
+ qCDebug(KLDAP_LOG) << "connected!";
+ connected();
+ return;
+ }
+ if (retval == KLDAP_INVALID_CREDENTIALS || retval == KLDAP_INSUFFICIENT_ACCESS || retval == KLDAP_INAPPROPRIATE_AUTH
+ || retval == KLDAP_UNWILLING_TO_PERFORM) {
+ if (firstauth && cached) {
+ if (mServer.auth() == LdapServer::SASL) {
+ mServer.setUser(info.username);
+ } else {
+ mServer.setBindDn(info.username);
+ }
+ mServer.setPassword(info.password);
+ mConn.setServer(mServer);
+ cached = false;
+ } else {
+ const int errorCode = firstauth ? openPasswordDialogV2(info) : openPasswordDialogV2(info, i18n("Invalid authorization information."));
+ if (!errorCode) {
+ if (info.keepPassword) { // user asked password be save/remembered
+ cacheAuthentication(info);
+ }
+ } else {
+ if (errorCode == ERR_USER_CANCELED) {
+ error(ERR_USER_CANCELED, i18n("LDAP connection canceled."));
+ } else {
+ error(errorCode, QString());
+ }
+ closeConnection();
+ return;
+ }
+ if (mServer.auth() == LdapServer::SASL) {
+ mServer.setUser(info.username);
+ } else {
+ mServer.setBindDn(info.username);
+ }
+ mServer.setPassword(info.password);
+ firstauth = false;
+ mConn.setServer(mServer);
+ }
+ } else {
+ LDAPErr(retval);
+ closeConnection();
+ return;
+ }
+ }
+}
+
+void LDAPProtocol::closeConnection()
+{
+ if (mConnected) {
+ mConn.close();
+ }
+ mConnected = false;
+
+ qCDebug(KLDAP_LOG) << "connection closed!";
+}
+
+/**
+ * Get the information contained in the URL.
+ */
+void LDAPProtocol::get(const QUrl &_url)
+{
+ qCDebug(KLDAP_LOG) << "get(" << _url << ")";
+
+ LdapUrl usrc(_url);
+
+ changeCheck(usrc);
+ if (!mConnected) {
+ return;
+ }
+
+ LdapControls serverctrls;
+ LdapControls clientctrls;
+ controlsFromMetaData(serverctrls, clientctrls);
+ if (mServer.pageSize()) {
+ LdapControls ctrls = serverctrls;
+ ctrls.append(LdapControl::createPageControl(mServer.pageSize()));
+ qCDebug(KLDAP_LOG) << "page size: " << mServer.pageSize();
+ mOp.setServerControls(ctrls);
+ } else {
+ mOp.setServerControls(serverctrls);
+ }
+ mOp.setClientControls(clientctrls);
+ int ret;
+ int id;
+ if ((id = mOp.search(usrc.dn(), usrc.scope(), usrc.filter(), usrc.attributes())) == -1) {
+ LDAPErr();
+ return;
+ }
+
+ // tell the mimetype
+ mimeType(QStringLiteral("text/plain"));
+ // collect the result
+ // QByteArray result;
+ filesize_t processed_size = 0;
+
+ while (true) {
+ ret = mOp.waitForResult(id, -1);
+ if (ret == -1 || mConn.ldapErrorCode() != KLDAP_SUCCESS) {
+ LDAPErr();
+ return;
+ }
+ qCDebug(KLDAP_LOG) << " ldap_result: " << ret;
+ if (ret == LdapOperation::RES_SEARCH_RESULT) {
+ if (mServer.pageSize()) {
+ QByteArray cookie;
+ int estsize = -1;
+ for (int i = 0; i < mOp.controls().count(); ++i) {
+ qCDebug(KLDAP_LOG) << " control oid: " << mOp.controls().at(i).oid();
+ estsize = mOp.controls().at(i).parsePageControl(cookie);
+ if (estsize != -1) {
+ break;
+ }
+ }
+ qCDebug(KLDAP_LOG) << " estimated size: " << estsize;
+ if (estsize != -1 && !cookie.isEmpty()) {
+ LdapControls ctrls{serverctrls}; // clazy:exclude=container-inside-loop
+ qCDebug(KLDAP_LOG) << "page size: " << mServer.pageSize() << " estimated size: " << estsize;
+ ctrls.append(LdapControl::createPageControl(mServer.pageSize(), cookie));
+ mOp.setServerControls(ctrls);
+ if ((id = mOp.search(usrc.dn(), usrc.scope(), usrc.filter(), usrc.attributes())) == -1) {
+ LDAPErr();
+ return;
+ }
+ continue;
+ }
+ }
+ break;
+ }
+ if (ret != LdapOperation::RES_SEARCH_ENTRY) {
+ continue;
+ }
+
+ QByteArray entry = mOp.object().toString().toUtf8() + '\n';
+ processed_size += entry.size();
+ data(entry);
+ processedSize(processed_size);
+ }
+
+ totalSize(processed_size);
+
+ // tell we are finished
+ data(QByteArray());
+ finished();
+}
+
+/**
+ * Test if the url contains a directory or a file.
+ */
+void LDAPProtocol::stat(const QUrl &_url)
+{
+ qCDebug(KLDAP_LOG) << "stat(" << _url << ")";
+
+ QStringList att;
+ QStringList saveatt;
+ LdapUrl usrc(_url);
+ int ret;
+ int id;
+
+ changeCheck(usrc);
+ if (!mConnected) {
+ return;
+ }
+
+ // look how many entries match
+ saveatt = usrc.attributes();
+ att.append(QStringLiteral("dn"));
+
+ if ((id = mOp.search(usrc.dn(), usrc.scope(), usrc.filter(), att)) == -1) {
+ LDAPErr();
+ return;
+ }
+
+ qCDebug(KLDAP_LOG) << "stat() getting result";
+ do {
+ ret = mOp.waitForResult(id, -1);
+ if (ret == -1 || mConn.ldapErrorCode() != KLDAP_SUCCESS) {
+ LDAPErr();
+ return;
+ }
+ if (ret == LdapOperation::RES_SEARCH_RESULT) {
+ error(ERR_DOES_NOT_EXIST, _url.toDisplayString());
+ return;
+ }
+ } while (ret != LdapOperation::RES_SEARCH_ENTRY);
+
+ mOp.abandon(id);
+
+ usrc.setAttributes(saveatt);
+
+ UDSEntry uds;
+ bool critical;
+ LDAPEntry2UDSEntry(usrc.dn(), uds, usrc, usrc.extension(QStringLiteral("x-dir"), critical) != QLatin1String("base"));
+
+ statEntry(uds);
+ // we are done
+ finished();
+}
+
+/**
+ * Deletes one entry;
+ */
+void LDAPProtocol::del(const QUrl &_url, bool)
+{
+ qCDebug(KLDAP_LOG) << "del(" << _url << ")";
+
+ LdapUrl usrc(_url);
+ int id;
+ int ret;
+
+ changeCheck(usrc);
+ if (!mConnected) {
+ return;
+ }
+
+ LdapControls serverctrls;
+ LdapControls clientctrls;
+ controlsFromMetaData(serverctrls, clientctrls);
+ mOp.setServerControls(serverctrls);
+ mOp.setClientControls(clientctrls);
+
+ qCDebug(KLDAP_LOG) << " del: " << usrc.dn().toString().toUtf8();
+
+ if ((id = mOp.del(usrc.dn())) == -1) {
+ LDAPErr();
+ return;
+ }
+ ret = mOp.waitForResult(id, -1);
+ if (ret == -1 || mConn.ldapErrorCode() != KLDAP_SUCCESS) {
+ LDAPErr();
+ return;
+ }
+
+ finished();
+}
+
+void LDAPProtocol::put(const QUrl &_url, int, KIO::JobFlags flags)
+{
+ qCDebug(KLDAP_LOG) << "put(" << _url << ")";
+
+ LdapUrl usrc(_url);
+
+ changeCheck(usrc);
+ if (!mConnected) {
+ return;
+ }
+
+ LdapControls serverctrls;
+ LdapControls clientctrls;
+ controlsFromMetaData(serverctrls, clientctrls);
+ mOp.setServerControls(serverctrls);
+ mOp.setClientControls(clientctrls);
+
+ LdapObject addObject;
+ LdapOperation::ModOps modops;
+ QByteArray buffer;
+ int result = 0;
+ Ldif::ParseValue ret;
+ Ldif ldif;
+ ret = Ldif::MoreData;
+ int ldaperr;
+
+ do {
+ if (ret == Ldif::MoreData) {
+ dataReq(); // Request for data
+ result = readData(buffer);
+ ldif.setLdif(buffer);
+ }
+ if (result < 0) {
+ // error
+ return;
+ }
+ if (result == 0) {
+ qCDebug(KLDAP_LOG) << "EOF!";
+ ldif.endLdif();
+ }
+ do {
+ ret = ldif.nextItem();
+ qCDebug(KLDAP_LOG) << "nextitem: " << ret;
+
+ switch (ret) {
+ case Ldif::None:
+ case Ldif::NewEntry:
+ case Ldif::MoreData:
+ break;
+ case Ldif::EndEntry:
+ ldaperr = KLDAP_SUCCESS;
+ switch (ldif.entryType()) {
+ case Ldif::Entry_None:
+ error(ERR_INTERNAL, i18n("The Ldif parser failed."));
+ return;
+ case Ldif::Entry_Del:
+ qCDebug(KLDAP_LOG) << "kio_ldap_del";
+ ldaperr = mOp.del_s(ldif.dn());
+ break;
+ case Ldif::Entry_Modrdn:
+ qCDebug(KLDAP_LOG) << "kio_ldap_modrdn olddn:" << ldif.dn().toString() << " newRdn: " << ldif.newRdn()
+ << " newSuperior: " << ldif.newSuperior() << " deloldrdn: " << ldif.delOldRdn();
+ ldaperr = mOp.rename_s(ldif.dn(), ldif.newRdn(), ldif.newSuperior(), ldif.delOldRdn());
+ break;
+ case Ldif::Entry_Mod:
+ qCDebug(KLDAP_LOG) << "kio_ldap_mod";
+ ldaperr = mOp.modify_s(ldif.dn(), modops);
+ modops.clear();
+ break;
+ case Ldif::Entry_Add:
+ qCDebug(KLDAP_LOG) << "kio_ldap_add " << ldif.dn().toString();
+ addObject.setDn(ldif.dn());
+ ldaperr = mOp.add_s(addObject);
+ if (ldaperr == KLDAP_ALREADY_EXISTS && (flags & KIO::Overwrite)) {
+ qCDebug(KLDAP_LOG) << ldif.dn().toString() << " already exists, delete first";
+ ldaperr = mOp.del_s(ldif.dn());
+ if (ldaperr == KLDAP_SUCCESS) {
+ ldaperr = mOp.add_s(addObject);
+ }
+ }
+ addObject.clear();
+ break;
+ }
+ if (ldaperr != KLDAP_SUCCESS) {
+ qCDebug(KLDAP_LOG) << "put ldap error: " << ldaperr;
+ LDAPErr(ldaperr);
+ return;
+ }
+ break;
+ case Ldif::Item:
+ switch (ldif.entryType()) {
+ case Ldif::Entry_Mod: {
+ LdapOperation::ModOp op;
+ op.type = LdapOperation::Mod_None;
+ switch (ldif.modType()) {
+ case Ldif::Mod_None:
+ op.type = LdapOperation::Mod_None;
+ break;
+ case Ldif::Mod_Add:
+ op.type = LdapOperation::Mod_Add;
+ break;
+ case Ldif::Mod_Replace:
+ op.type = LdapOperation::Mod_Replace;
+ break;
+ case Ldif::Mod_Del:
+ op.type = LdapOperation::Mod_Del;
+ break;
+ }
+ op.attr = ldif.attr();
+ if (!ldif.value().isNull()) {
+ op.values.append(ldif.value());
+ }
+ modops.append(op);
+ break;
+ }
+ case Ldif::Entry_Add:
+ if (!ldif.value().isEmpty()) {
+ addObject.addValue(ldif.attr(), ldif.value());
+ }
+ break;
+ default:
+ error(ERR_INTERNAL, i18n("The Ldif parser failed."));
+ return;
+ }
+ break;
+ case Ldif::Control: {
+ LdapControl control;
+ control.setControl(ldif.oid(), ldif.value(), ldif.isCritical());
+ serverctrls.append(control);
+ mOp.setServerControls(serverctrls);
+ break;
+ }
+ case Ldif::Err:
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 96, 0)
+ error(KIO::ERR_WORKER_DEFINED, i18n("Invalid Ldif file in line %1.", ldif.lineNumber()));
+#else
+ error(ERR_SLAVE_DEFINED, i18n("Invalid Ldif file in line %1.", ldif.lineNumber()));
+#endif
+ return;
+ }
+ } while (ret != Ldif::MoreData);
+ } while (result > 0);
+
+ finished();
+}
+
+/**
+ * List the contents of a directory.
+ */
+void LDAPProtocol::listDir(const QUrl &_url)
+{
+ QStringList att;
+ QStringList saveatt;
+ LdapUrl usrc(_url);
+ LdapUrl usrc2;
+ bool critical = true;
+ bool isSub = (usrc.extension(QStringLiteral("x-dir"), critical) == QLatin1String("sub"));
+
+ qCDebug(KLDAP_LOG) << "listDir(" << _url << ")";
+
+ changeCheck(usrc);
+ if (!mConnected) {
+ return;
+ }
+ usrc2 = usrc;
+
+ saveatt = usrc.attributes();
+ // look up the entries
+ if (isSub) {
+ att.append(QStringLiteral("dn"));
+ usrc.setAttributes(att);
+ }
+ if (_url.query().isEmpty()) {
+ usrc.setScope(LdapUrl::One);
+ }
+ int id;
+
+ if ((id = mOp.search(usrc.dn(), usrc.scope(), usrc.filter(), usrc.attributes())) == -1) {
+ LDAPErr();
+ return;
+ }
+
+ usrc.setAttributes(QStringList() << QLatin1String(""));
+ usrc.setExtension(QStringLiteral("x-dir"), QStringLiteral("base"));
+ // publish the results
+ UDSEntry uds;
+
+ int ret;
+ int ret2;
+ int id2;
+ unsigned long total = 0;
+
+ while (true) {
+ ret = mOp.waitForResult(id, -1);
+ if (ret == -1 || mConn.ldapErrorCode() != KLDAP_SUCCESS) {
+ LDAPErr();
+ return;
+ }
+ if (ret == LdapOperation::RES_SEARCH_RESULT) {
+ break;
+ }
+ if (ret != LdapOperation::RES_SEARCH_ENTRY) {
+ continue;
+ }
+ qCDebug(KLDAP_LOG) << " ldap_result: " << ret;
+
+ total++;
+ uds.clear();
+
+ LDAPEntry2UDSEntry(mOp.object().dn(), uds, usrc);
+ listEntry(uds);
+ // processedSize( total );
+ qCDebug(KLDAP_LOG) << " total: " << total << " " << usrc.toDisplayString();
+
+ // publish the sub-directories (if dirmode==sub)
+ if (isSub) {
+ LdapDN dn = mOp.object().dn();
+ usrc2.setDn(dn);
+ usrc2.setScope(LdapUrl::One);
+ usrc2.setAttributes(saveatt);
+ usrc2.setFilter(usrc.filter());
+ qCDebug(KLDAP_LOG) << "search2 " << dn.toString();
+ if ((id2 = mOp.search(dn, LdapUrl::One, QString(), att)) != -1) {
+ while (true) {
+ qCDebug(KLDAP_LOG) << " next result ";
+ ret2 = mOp.waitForResult(id2, -1);
+ if (ret2 == -1 || ret2 == LdapOperation::RES_SEARCH_RESULT) {
+ break;
+ }
+ if (ret2 == LdapOperation::RES_SEARCH_ENTRY) {
+ LDAPEntry2UDSEntry(dn, uds, usrc2, true);
+ listEntry(uds);
+ total++;
+ mOp.abandon(id2);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // totalSize( total );
+
+ uds.clear();
+ // we are done
+ finished();
+}
+
+#include "kio_ldap.moc"
--- /dev/null
+/*
+ SPDX-FileCopyrightText: 2004-2007 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: MIT
+*/
+
+#pragma once
+
+#include <KIO/AuthInfo>
+#include <KIO/SlaveBase>
+
+#include <kldap/ldapconnection.h>
+#include <kldap/ldapcontrol.h>
+#include <kldap/ldapdefs.h>
+#include <kldap/ldapdn.h>
+#include <kldap/ldapoperation.h>
+#include <kldap/ldapurl.h>
+
+class LDAPProtocol : public KIO::SlaveBase
+{
+public:
+ LDAPProtocol(const QByteArray &protocol, const QByteArray &pool, const QByteArray &app);
+ ~LDAPProtocol() override;
+
+ void setHost(const QString &host, quint16 port, const QString &user, const QString &pass) override;
+
+ void openConnection() override;
+ void closeConnection() override;
+
+ void get(const QUrl &url) override;
+ void stat(const QUrl &url) override;
+ void listDir(const QUrl &url) override;
+ void del(const QUrl &url, bool isfile) override;
+ void put(const QUrl &url, int permissions, KIO::JobFlags flags) override;
+
+private:
+ KLDAP::LdapConnection mConn;
+ KLDAP::LdapOperation mOp;
+ KLDAP::LdapServer mServer;
+ bool mConnected;
+
+ void controlsFromMetaData(KLDAP::LdapControls &serverctrls, KLDAP::LdapControls &clientctrls);
+ void LDAPEntry2UDSEntry(const KLDAP::LdapDN &dn, KIO::UDSEntry &entry, const KLDAP::LdapUrl &usrc, bool dir = false);
+
+ void LDAPErr(int err = KLDAP_SUCCESS);
+ void changeCheck(const KLDAP::LdapUrl &url);
+};
--- /dev/null
+{
+ "KDE-KIO-Protocols": {
+ "ldap": {
+ "Icon": "office-address-book",
+ "X-DocPath": "kioslave5/ldap/index.html",
+ "deleting": true,
+ "determineMimetypeFromExtension": false,
+ "input": "none",
+ "listing": [
+ "Name"
+ ],
+ "output": "filesystem",
+ "protocol": "ldap",
+ "reading": true,
+ "source": true,
+ "writing": true
+ },
+ "ldaps": {
+ "Icon": "office-address-book",
+ "X-DocPath": "kioslave5/ldap/index.html",
+ "deleting": true,
+ "determineMimetypeFromExtension": false,
+ "input": "none",
+ "listing": [
+ "Name"
+ ],
+ "output": "filesystem",
+ "protocol": "ldaps",
+ "reading": true,
+ "source": true,
+ "writing": true
+ }
+ }
+}
--- /dev/null
+maintainer: mlaurent
+description: LDAP support library
+tier: 3
+type: functional
+platforms:
+ - name: All
+portingAid: false
+deprecated: false
+release: false
+libraries:
+ - qmake: Ldap
+ cmake: "KF5::Ldap"
+cmakename: KF5Ldap
+
+public_lib: true
+group: kdepim
--- /dev/null
+SPDX-FileCopyrightText: none
+SPDX-License-Identifier: CC0-1.0
--- /dev/null
+# translation of kio_ldap.po to
+# محمد سعد Mohamed SAAD <metehyi@free.fr>, 2006.
+# Youssef Chahibi <chahibi@gmail.com>, 2007.
+# Safa Alfulaij <safa1996alfulaij@gmail.com>, 2018.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2018-01-31 00:40+0300\n"
+"Last-Translator: Safa Alfulaij <safa1996alfulaij@gmail.com>\n"
+"Language-Team: Arabic <doc@arabeyes.org>\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"المعلومات الإضافيّة: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"لقد أرجع خادوم IDAP الخطأ: %1 %2\n"
+"كان مسار LDAP هو: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "الولوج إلى LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "الموقع:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "معلومات الاستيثاق غير صالحة."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "أُلغي الاتّصال بِ LDAP"
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "فشل محلّل Ldif."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "ملفّ Ldif غير صالح في سطر %1."
--- /dev/null
+# translation of libkldap.po to
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# Youssef Chahibi <chahibi@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2007-10-14 15:58+0000\n"
+"Last-Translator: Youssef Chahibi <chahibi@gmail.com>\n"
+"Language-Team: <en@li.org>\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: core/ldapconnection.cpp:124
+#, fuzzy, kde-format
+msgid "No LDAP Support..."
+msgstr "لا LDAP دعم."
+
+#: core/ldapconnection.cpp:239
+#, fuzzy, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "أداة تعريف خطأ اتصال."
+
+#: core/ldapconnection.cpp:246
+#, fuzzy, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+"لا يستطيع set مراسم\n"
+"ميفاق النسخة إلى."
+
+#: core/ldapconnection.cpp:257
+#, fuzzy, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "غير قادر على تعيين حدّ للوقت."
+msgstr[1] "غير قادر على تعيين حدّ للوقت."
+msgstr[2] "غير قادر على تعيين حدّ للوقت."
+msgstr[3] "غير قادر على تعيين حدّ للوقت."
+msgstr[4] "غير قادر على تعيين حدّ للوقت."
+msgstr[5] "غير قادر على تعيين حدّ للوقت."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+"لا يستطيع يهيئ\n"
+"يُبدِء التشغيلئ SASL عميل."
+
+#: core/ldapconnection.cpp:325
+#, fuzzy, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS دعم ليس متوفّر بوصة LDAP عميل."
+
+#: core/ldapconnection.cpp:335
+#, fuzzy, kde-format
+msgid "Cannot set size limit."
+msgstr "غير قادر على تعيين حدّ للحجم."
+
+#: core/ldapconnection.cpp:345
+#, fuzzy, kde-format
+msgid "Cannot set time limit."
+msgstr "غير قادر على تعيين حدّ للوقت."
+
+#: core/ldapconnection.cpp:353
+#, fuzzy, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+"لا يستطيع يهيئ\n"
+"يُبدِء التشغيلئ SASL عميل."
+
+#: core/ldapconnection.cpp:430
+#, fuzzy, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr "LDAP دعم ليس بوصة رجاء مع أو متوافق عميل أو إلى التوزيعة."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "المضيف:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, fuzzy, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "المضيف:"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, fuzzy, kde-format
+msgid "&Add Host..."
+msgstr "المضيف:"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, fuzzy, kde-format
+msgid "User:"
+msgstr "المستخدم:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, fuzzy, kde-format
+msgid "Bind DN:"
+msgstr ""
+"يربط :: يوثق :: يقيّد :: يعوق عن الحركة :: يُلزِم :: يحْزم :: يعْصب :: يضمّد :: "
+"يجعله متماسكاً :: يَعقِل :: يُجلّد :: يقي :: يُمتّن :: يتماسك :: يصبح صلباً :: "
+"رِباط :: رَبْط :: ارتباط :: مأزق DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, fuzzy, kde-format
+msgid "Realm:"
+msgstr "المملكة:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, fuzzy, kde-format
+msgid "Password:"
+msgstr "كلمة المرور:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, fuzzy, kde-format
+msgid "Host:"
+msgstr "المضيف:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, fuzzy, kde-format
+msgid "Port:"
+msgstr "المنفذ:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, fuzzy, kde-format
+msgid "LDAP version:"
+msgstr "إصدارة LDAP :"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, fuzzy, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "افتراضي"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, fuzzy, kde-format
+msgid "Size limit:"
+msgstr "حدّ الحجم:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, fuzzy, kde-format
+msgid " sec"
+msgstr " ثانية"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, fuzzy, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "افتراضي"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, fuzzy, kde-format
+msgid "Time limit:"
+msgstr "حد الوقت:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, fuzzy, kde-format
+msgid "No paging"
+msgstr "لا انتقال صفحات الذاكرة من وإلى القرص الثابت"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, fuzzy, kde-format
+msgid "Page size:"
+msgstr "حجم الصفحة:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, fuzzy, kde-format
+msgid "Query Server"
+msgstr "استعلام الخادِم"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, fuzzy, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, fuzzy, kde-format
+msgid "Filter:"
+msgstr "المرشح:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, fuzzy, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "لا"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, fuzzy, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, fuzzy, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+msgid "Security:"
+msgstr "الأمن"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, fuzzy, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "مجهول"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, fuzzy, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "بسيط"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, fuzzy, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+msgid "Authentication:"
+msgstr "التّوثيق"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, fuzzy, kde-format
+msgid "SASL mechanism:"
+msgstr "آلية SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "استعلام LDAP "
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~ msgid "LDAP Servers"
+#~ msgstr "إصدارة LDAP :"
+
+#, fuzzy
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL دعم هو ليس متوفّر رجاء مع سيروس SASL أو متوافق عميل أو إلى التوزيعة."
+
+#, fuzzy
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP عمليات خطأ"
+
+#, fuzzy
+#~ msgid "LDAP Server Settings"
+#~ msgstr "إصدارة LDAP :"
+
+#, fuzzy
+#~ msgid "User ID"
+#~ msgstr "المستخدم:"
--- /dev/null
+# translation of kio_ldap.po to Belarusian
+#
+# Darafei Praliaskouski <symbol@akeeri.tk>, 2006.
+# Darafei Praliaskouski <komzpa@licei2.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-08-10 14:11+0000\n"
+"Last-Translator: Darafei Praliaskouski <komzpa@licei2.com>\n"
+"Language-Team: Belarusian <i18n@mova.org>\n"
+"Language: be\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || n%10>=5 && n%10<=9 || n"
+"%100>=11 && n%100<=14 ? 2 : 3);\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Іншыя звесткі: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP-сервер вярнуў наступную памылку: %1 %2\n"
+"LDAP URL быў: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP уваход"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "пляцоўка:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Несапраўдныя аўтарызацыйныя звесткі."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Злучэнне LDAP скасавана."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Разбор Ldif схібіў."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Недапушчальны Ldif файл у радку %1."
--- /dev/null
+# translation of libkldap.po to Belarusian
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Darafei Praliaskouski <komzpa@licei2.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2007-05-25 12:24+0300\n"
+"Last-Translator: Darafei Praliaskouski <komzpa@licei2.com>\n"
+"Language-Team: Belarusian <i18n@mova.org>\n"
+"Language: be\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || n%10>=5 && n%10<=9 || n"
+"%100>=11 && n%100<=14 ? 2 : 3);\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr ""
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Вузел:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Вузел:"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgid "&Add Host..."
+msgstr "Вузел:"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Карыстальнік:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Пароль:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Вузел:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Порт:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Версія LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, fuzzy, kde-format
+#| msgid "Default"
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Прадвызначаны"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Абмежаванні памераў:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " сек"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, fuzzy, kde-format
+#| msgid "Default"
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Прадвызначаны"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Абмежаванні часу:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Не дзяліць на старонкі"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Памер старонкі:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Запытаць сервер"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Фільтр:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, fuzzy, kde-format
+#| msgid "No"
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Не"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, fuzzy, kde-format
+#| msgid "TLS"
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, fuzzy, kde-format
+#| msgid "SSL"
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Бяспека"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, fuzzy, kde-format
+#| msgid "Anonymous"
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Ананімна"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, fuzzy, kde-format
+#| msgid "Simple"
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Простая"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, fuzzy, kde-format
+#| msgid "SASL"
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Ідэнтыфікацыя"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Механізм SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Запыт LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "Версія LDAP:"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "Версія LDAP:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Карыстальнік:"
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Zlatko Popov <zlatkopopov@fsa-bg.org>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-06-03 16:50+0000\n"
+"Last-Translator: Zlatko Popov <zlatkopopov@fsa-bg.org>\n"
+"Language-Team: Bulgarian <dict@linux.zonebg.com>\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Допълнителна информация: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Сървърът LDAP върна следната грешка: %1 %2\n"
+"Адресът бе: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Включване в LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "страна:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Невалидна информация за оторизация."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Връзката с LDAP е отменена."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Грешка при граматичен анализ на LDIF."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Невалиден файл LDIF, грешка на ред %1."
--- /dev/null
+# Bulgarian translations for kldap package.
+# Copyright (C) 2022 This file is copyright:
+# This file is distributed under the same license as the kldap package.
+# Automatically generated, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2022-01-11 00:44+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr ""
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
--- /dev/null
+# Bosnian translation for kdepimlibs
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the kdepimlibs package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kdepimlibs\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2012-09-03 14:47+0000\n"
+"Last-Translator: Samir Ribić <Unknown>\n"
+"Language-Team: Bosnian <bs@li.org>\n"
+"Language: bs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-21 01:36+0000\n"
+"X-Generator: Launchpad (build 16378)\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Dodatne informacije: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP server je vratio sljedeću grešku: %1 %2\n"
+"LDAP URL je bio: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP prijava"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "sajt:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Neispravne informacije o identitetu."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP konekcija otkazana."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldif parser nije uspio."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Nevažeća Ldif datoteka u liniji %1."
--- /dev/null
+# Bosnian translation for kdepimlibs
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the kdepimlibs package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kdepimlibs\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2012-09-03 15:44+0000\n"
+"Last-Translator: Launchpad Translations Administrators <Unknown>\n"
+"Language-Team: Bosnian <bs@li.org>\n"
+"Language: bs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2012-12-21 01:40+0000\n"
+"X-Generator: Launchpad (build 16378)\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Nema podrške za LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Došlo je do greške prilikom inicijaliziranja konekcije."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Ne može se postavit verzija protokola na %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Ne mogu postaviti istek vremena na %1 sekundu"
+msgstr[1] "Ne mogu postaviti istek vremena na %1 sekunde"
+msgstr[2] "Ne mogu postaviti istek vremena na %1 sekundi"
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "Ne može se inicijalizirati SASL klijent."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS podrška nije dostupna u LDAP klijent bibliotekama."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Ne mogu podesiti ograničenje na veličinu."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Ne mogu podesiti ograničenje vremena."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Ne može se inicijalizirati SASL klijent."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Podrška za LDAP nije ukompajlirana. Molimo rekompajlirajte libkldap "
+"koristeći OpenLDAP (ili kompatibilnu) klijent biblioteku ili se obratite "
+"izdavaču distribucije."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Ne mogu pristupiti serveru. Molimo podesite."
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Računar:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Korisnik"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Vezani DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Svijet:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Lozinka"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Računar:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Verzija LDAPa:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Podrazumjevano"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Ograničenje veličine:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Podrazumjevano"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Vremensko ograničenje:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Bez straničenja"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Veličina stranice:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Server za upite"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "nema"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Sigurnost"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonimno"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Jednostavno"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Provjera identiteta"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL mehanizam:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP upit"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "Verzija LDAPa:"
+
+#~ msgid "Attribute"
+#~ msgstr "Osobina"
+
+#~ msgid "Value"
+#~ msgstr "Vrijednost"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Istaknuto ime."
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL podrška nedostupna. Molimo rekompajlirajte libkldap koristeći Cyrus-"
+#~ "SASL (ili kompatibilnu) klijent biblioteku, ili se javite Vašem pakeru "
+#~ "distribucije."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Greška sa LDAP Operacijama"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Catalan "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+&traductor.Antoni.Bella;
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> és un lleuger protocol per accedir als directoris. Proporciona accés a un directori X.500 o a un servidor <acronym
+>LDAP</acronym
+> autònom.</para>
+
+<para
+>Podeu utilitzar el kioslave ldap del següent mode:</para>
+
+<para
+><userinput
+>ldap://màquina:port/ou=Gent,o=on,c=de??sub</userinput
+> per a una petició subarbrada.</para>
+
+<para
+>o <userinput
+>ldap://màquina:port/cn=MM,ou=Gent,o=on,c=de??base</userinput
+> per obtenir una branca completa.</para>
+
+</article>
--- /dev/null
+# Translation of kio_ldap.po to Catalan
+# Copyright (C) 2004-2007 This_file_is_part_of_KDE
+# This file is distributed under the license LGPL version 2.1 or
+# version 3 or later versions approved by the membership of KDE e.V.
+#
+# Sebastià Pla i Sanz <sps@sastia.com>, 2004.
+# Albert Astals Cid <aacid@kde.org>, 2005.
+# Josep M. Ferrer <txemaq@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-06-02 11:53+0200\n"
+"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Accelerator-Marker: &\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Informació addicional: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"El servidor LDAP ha retornat l'error: %1 %2\n"
+"L'URL de l'LDAP era: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Connexió LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "lloc:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Informació d'autorització no vàlida."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "S'ha cancel·lat la connexió LDAP."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ha fallat l'analitzador LDIF."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Fitxer LDIF no vàlid a la línia %1."
--- /dev/null
+# Translation of libkldap5.po to Catalan
+# Copyright (C) 2007-2021 This_file_is_part_of_KDE
+# This file is distributed under the license LGPL version 2.1 or
+# version 3 or later versions approved by the membership of KDE e.V.
+#
+# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2016, 2020.
+# Manuel Tortosa Moreno <manutortosa@gmail.com>, 2010.
+# Antoni Bella Pérez <antonibella5@yahoo.com>, 2014, 2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: kldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-28 15:08+0200\n"
+"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 21.07.80\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Accelerator-Marker: &\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "No admet el LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "S'ha detectat un error durant la fase d'inicialització de la connexió."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "No s'ha pogut establir la versió del protocol a %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "No s'ha pogut establir el temps d'espera a %1 segon."
+msgstr[1] "No s'ha pogut establir el temps d'espera a %1 segons."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "No s'ha pogut establir el fitxer del certificat de la CA."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "El mode de certificat requerit pel TLS no és vàlid."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "No s'ha pogut establir el mode de certificat requerit pel TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "No s'ha pogut inicialitzar el nou context TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+"La implementació del TLS no està disponible a les biblioteques del client "
+"LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "No s'ha pogut establir el límit d'ocupació."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "No s'ha pogut establir el límit de temps."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "No s'ha pogut inicialitzar el client SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"No està compilada la implementació per a LDAP. Torneu a compilar la "
+"«libkldap» amb les biblioteques del client OpenLDAP (o compatible), o "
+"reclameu als empaquetadors de la vostra distribució."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "No s'ha pogut accedir al servidor. Si us plau, torneu a configurar-lo."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Afegeix una màquina"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"La contrasenya LDAP s'emmagatzema com a text, voleu desar-la al KWallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Desa la contrasenya de text a la Cartera"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Edita la màquina"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Voleu eliminar l'arranjament per a la màquina «%1»?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Elimina la màquina"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Marqueu tots els servidors que s'haurien d'utilitzar:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Afegeix una màquina..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Edita la màquina..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "E&limina la màquina"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Usuari:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "DN d'enllaç:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Domini:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Contrasenya:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Màquina:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Versió de LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Valor per defecte"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Límit d'ocupació:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Valor per defecte"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Límit de temps:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Sense paginació"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Mida de la pàgina:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Servidor de consultes"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtre:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "No"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Seguretat:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anònim"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Senzilla"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Autenticació:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mecanisme SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Comprova el servidor"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Consulta LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Error desconegut en connectar %1"
--- /dev/null
+# Translation of kio_ldap.po to Catalan (Valencian)
+# Copyright (C) 2004-2007 This_file_is_part_of_KDE
+# This file is distributed under the license LGPL version 2.1 or
+# version 3 or later versions approved by the membership of KDE e.V.
+#
+# Sebastià Pla i Sanz <sps@sastia.com>, 2004.
+# Albert Astals Cid <aacid@kde.org>, 2005.
+# Josep M. Ferrer <txemaq@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-06-02 11:53+0200\n"
+"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"Language: ca@valencia\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Accelerator-Marker: &\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Informació addicional: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"El servidor LDAP ha retornat l'error: %1 %2\n"
+"L'URL de l'LDAP era: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Connexió LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "lloc:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Informació d'autorització no vàlida."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "S'ha cancel·lat la connexió LDAP."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "No s'ha pogut executar l'analitzador LDIF."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Fitxer LDIF no vàlid en la línia %1."
--- /dev/null
+# Translation of libkldap5.po to Catalan (Valencian)
+# Copyright (C) 2007-2021 This_file_is_part_of_KDE
+# This file is distributed under the license LGPL version 2.1 or
+# version 3 or later versions approved by the membership of KDE e.V.
+#
+# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2016, 2020.
+# Manuel Tortosa Moreno <manutortosa@gmail.com>, 2010.
+# Antoni Bella Pérez <antonibella5@yahoo.com>, 2014, 2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: kldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-28 15:08+0200\n"
+"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"Language: ca@valencia\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 21.07.80\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Accelerator-Marker: &\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "No admet LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "S'ha detectat un error durant la fase d'inicialització de la connexió."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "No s'ha pogut establir la versió del protocol a %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "No s'ha pogut establir el temps d'espera a %1 segon."
+msgstr[1] "No s'ha pogut establir el temps d'espera a %1 segons."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "No s'ha pogut establir el fitxer del certificat de la CA."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "El mode de certificat requerit per TLS no és vàlid."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "No s'ha pogut establir el mode de certificat requerit per TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "No s'ha pogut restablir el nou context TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+"La implementació de TLS no està disponible a les biblioteques del client "
+"LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "No s'ha pogut establir el límit d'ocupació."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "No s'ha pogut establir el límit de temps."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "No s'ha pogut restablir el client SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"No està compilada la implementació per a LDAP. Torneu a compilar la "
+"«libkldap» amb les biblioteques del client OpenLDAP (o compatible), o "
+"reclameu als empaquetadors de la vostra distribució."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "No s'ha pogut accedir al servidor. Torneu a configurar-lo."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Afig una màquina"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"La contrasenya LDAP s'emmagatzema com a text, voleu guardar-la en KWallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Guarda la contrasenya de text en la Cartera"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Edita la màquina"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Voleu eliminar la configuració per a la màquina «%1»?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Elimina la màquina"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Marqueu tots els servidors que s'haurien d'utilitzar:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "Afi&g una màquina..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Edita la màquina..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "E&limina la màquina"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Usuari:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "DN d'enllaç:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Domini:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Contrasenya:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Màquina:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Versió de LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Valor predeterminat"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Límit d'ocupació:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Valor predeterminat"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Límit de temps:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Sense paginació"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Mida de la pàgina:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Servidor de consultes"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtre:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "No"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Seguretat:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anònim"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Senzilla"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Autenticació:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mecanisme SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Comprova el servidor"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Consulta LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "S'ha produït un error desconegut en connectar %1"
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-10-08 13:36+0200\n"
+"Last-Translator: Lukáš Tinkl <lukas@kde.org>\n"
+"Language-Team: Czech <cs@li.org>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Další informace: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP server navrátil tuto chybu: %1 %2\n"
+"LDAP URL bylo: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP přihlášení"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "server:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Neplatné autorizační informace."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP spojení zrušeno."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Analýza LDIF selhala."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Neplatný LDIF soubor na řádku %1."
--- /dev/null
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Vít Pelčák <vit@pelcak.org>, 2011, 2017, 2018, 2020.
+# Tomáš Chvátal <tomas.chvatal@gmail.com>, 2013.
+# Vit Pelcak <vpelcak@suse.cz>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-23 18:11+0200\n"
+"Last-Translator: Vit Pelcak <vpelcak@suse.cz>\n"
+"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Lokalize 21.04.3\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Žádná podpora LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Nastala chyba během inicializační fáze."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Nelze nastavit verzi protokolu na %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Nelze nastavit omezení času na %1 sekundu."
+msgstr[1] "Nelze nastavit omezení času na %1 sekundy."
+msgstr[2] "Nelze nastavit omezení času na %1 sekund."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Nelze nastavit soubor CA certifikátu."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Neplatný režim vyžadující certifikát TLS."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Nelze nastavit režim vyžadující certifikát TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Nelze inicializovat nový kontext TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Podpora pro TLS není dostupná v LDAP knihovně."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Nelze nastavit omezení velikosti."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Nelze nastavit omezení času."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Nelze inicializovat SASL klienta."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Není zakompilována podpora pro LDAP. Prosím zkompilujte znovu libkldap s "
+"klientskými knihovnami OpenLDAP (nebo kompatibilními) nebo si stěžujte "
+"tvůrcům balíčků své distribuce."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Nelze se připojit na server, prosím nastavte jej znovu."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Přidat hostitele"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr "Heslo LDAP je uloženo v čistém textu. Chcete jej uložit v KWallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Uložit heslo v čistém textu ve Wallet"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Upravit hostitele"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Chcete odstranit nastavení pro hostitele \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Odstranit hostitele"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Zvolte všechny servery, které se mají použít:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "Přid&at hostitele..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "Upravit hostit&ele..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Odst&ranit hostitele"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Uživatel:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Svázat DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Doména:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Heslo:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Hostitel:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP verze:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Výchozí"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Limit velikosti:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Výchozí"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Časový limit:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Bez stránkování"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Velikost stránky:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Dotaz na server"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtr:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Ne"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Zabezpečení:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonymní"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Jednoduchá"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Ověření:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL mechanismus:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Zkontrolovat server"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP dotaz"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Neznámá chyba při připojování k %1"
--- /dev/null
+# translation of kio_ldap.po to dansk
+# Danish translation of kio_ldap
+# Copyright (C).
+#
+# Erik Kjær Pedersen <erik@binghamton.edu>, 2004, 2005.
+# Keld Simonsen <keld@dkuug.dk>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2008-01-15 10:11+0100\n"
+"Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Yderligere info: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP server returnerede følgende fejl: %1 %2\n"
+"LDAP-URL var: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP Login"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "sted:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Ugyldig godkendelsesinformation."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP-forbindelse afbrudt."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldif fortolkningen milsykkedes."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Ugyldig Ldif-fil i linje %1."
--- /dev/null
+# translation of libkldap.po to
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Martin Schlander <mschlander@opensuse.org>, 2008, 2009, 2014, 2020, 2021, 2022.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2022-02-08 19:54+0100\n"
+"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 20.04.2\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Ingen LDAP-understøttelse..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "En fejl opstod under forbindelsens initialiseringsfase."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Kan ikke sætte protokolversion til %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Kan ikke sætte tidsudløb til %1 sekund."
+msgstr[1] "Kan ikke sætte tidsudløb til %1 sekunder."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Kunne ikke sætte CA-certifikatfil."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Ugyldig TLS kræv-certifikat-tilstand."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Kunne ikke sætte TLS kræv-certifikat-tilstand."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Kunne ikke initialisere ny TLS-kontekst."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS-understøttelse er ikke tilgængelig i LDAP-klientbibliotekerne."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Kan ikke sætte størrelsesgrænse."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Kan ikke sætte tidsgrænse."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Kan ikke initialisere SASL-klienten."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP-understøttelse er ikke oversat ind. Genoversæt venligst likldap med "
+"OpenLDAP (eller kompatible) klientbiblioteker, eller klag til de "
+"pakkeansvarlige hos din distribution."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Kan ikke tilgå serveren. Omkonfigurér den."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Tilføj vært"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr "LDAP-adgangskoden gemmes som klartekst, vil du gemme det i KWallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Gem klartekst-adgangskode i tegnebogen"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Redigér vært"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Vil du fjerne indstillingen for værten \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Fjern vært"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Markér alle servere der skal bruges:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Tilføj vært..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "R&edigér vært..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Fjern vært"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Bruger:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Område:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Adgangskode:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Vært:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP-version:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Standard"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Størrelsesgrænse:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek."
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Standard"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Tidsgrænse:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Ingen side"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Sidestørrelse:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Forespørg server"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Nej"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Sikkerhed:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonym"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Simpel"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Autentificering:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL-mekanisme:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Tjek server"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP-forespørgsel"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Ukendt fejl ved forbindelse til %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP-servere"
+
+#~ msgid "Attribute"
+#~ msgstr "Attribut"
+
+#~ msgid "Value"
+#~ msgstr "Værdi"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Distingveret navn"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL-understøttelse er ikke tilgængelig. Genoversæt venligst libkldap med "
+#~ "Cyrus-SASL (eller kompatible) klientbiblioteker, eller klag til de "
+#~ "pakkeansvarlige hos din distribution."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP-operationsfejl"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "LDAP-version:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Bruger:"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % German "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+><firstname
+>Marco</firstname
+><surname
+>Wegner</surname
+><affiliation
+><address
+><email
+>mail@marcowegner.de</email
+></address
+></affiliation
+><contrib
+>Übersetzer</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> ist das Lightweight Directory Access Protocol. Es bietet Zugriff auf X.500-Verzeichnisse oder <acronym
+>LDAP</acronym
+>-Server.</para>
+
+<para
+>Sie können das ldap-Modul folgendermaßen nutzen:</para>
+
+<para
+><userinput
+>ldap://host:port/ou=People,o=where,c=de??sub</userinput
+> für eine Suche in Unterverzeichnissen</para>
+
+<para
+>oder <userinput
+>ldap://host:port/cn=MM,ou=People,o=where,c=de??base</userinput
+> für einen kompletten Zweig.</para>
+
+</article>
--- /dev/null
+# Thomas Diehl <thd@kde.org>, 2004.
+# Thomas Reitelbach <tr@erdfunkstelle.de>, 2005, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2008-12-05 22:33+0100\n"
+"Last-Translator: Thomas Reitelbach <tr@erdfunkstelle.de>\n"
+"Language-Team: German <kde-i18n-de@kde.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Weitere Informationen: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Der LDAP-Server gibt folgende Fehlermeldung aus: %1 %2\n"
+"Die LDAP-Adresse ist: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP-Anmeldung"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "Server:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Ungültige Autorisierungs-Information"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP-Verbindung abgebrochen."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Fehler des LDIF-Parsers"
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Ungültige LDIF-Datei in Zeile %1."
--- /dev/null
+# Stephan Johach <hunsum@gmx.de>, 2007.
+# Burkhard Lück <lueck@hube-lueck.de>, 2009, 2017, 2018, 2020, 2021.
+# Thomas Reitelbach <tr@erdfunkstelle.de>, 2009.
+# Frederik Schwarzer <schwarzer@kde.org>, 2010, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-08-25 15:54+0200\n"
+"Last-Translator: Burkhard Lück <lueck@hube-lueck.de>\n"
+"Language-Team: German <kde-i18n-de@kde.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 19.12.3\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Keine LDAP-Unterstützung ..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Bei Aufbau der Verbindung ist ein Fehler aufgetreten."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Die Protokollversion kann nicht auf %1 gesetzt werden."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Das Zeitlimit kann nicht auf %1 Sekunde gesetzt werden."
+msgstr[1] "Das Zeitlimit kann nicht auf %1 Sekunden gesetzt werden."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Die CA-Zertifikatsdatei kann nicht festgelegt werden."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Ungültiger Modus „TLS erfordert ein Zertifikat“."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Modus „TLS erfordert ein Zertifikat“ kann nicht festgelegt werden."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Neuer TLS-Kontext kann nicht initialisiert werden."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+"In den LDAP-Bibliotheken des Clients ist keine Unterstützung für TLS "
+"vorhanden."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Maximale Größe kann nicht gesetzt werden."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Zeitlimit kann nicht gesetzt werden."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Der SASL-Client kann nicht initialisiert werden."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Bei der Kompilierung wurde keine Unterstützung für LDAP vorgesehen. Bitte "
+"kompilieren Sie libkldap mit den Client-Bibliotheken von OpenLDAP (oder "
+"kompatiblen) oder erkundigen Sie sich beim Ersteller der installierten "
+"Pakete."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+"Kein Zugriff auf den Server möglich. Bitte korrigieren Sie die Einstellungen."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Rechner hinzufügen"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"Das LDAP-Passwort wird als Klartext gespeichert, möchten Sie es in KWallet "
+"speichern?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Klartext-Passwort im Passwortspeicher speichern"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Rechner bearbeiten"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Möchten Sie die Einstellungen für den Rechner „%1“ entfernen?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Rechner entfernen"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Alle Rechner auswählen, die verwendet werden sollen:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "Rechner &hinzufügen ..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Rechner bearbeiten ..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Rechner &entfernen"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Benutzer:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind-DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Bereich:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Passwort:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Rechner:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP-Version:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Voreinstellung"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Max. Größe:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Voreinstellung"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Zeitlimit:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Kein Paging"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Seitengröße:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Server abfragen"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Keine"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Sicherheit:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonym"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Einfach"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Authentifizierung:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL-Mechanismus:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Server überprüfen"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP-Abfrage"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Unbekannter Fehler beim Verbinden mit %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP-Server"
+
+#~ msgid "Attribute"
+#~ msgstr "Attribut"
+
+#~ msgid "Value"
+#~ msgstr "Wert"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Distinguished Name"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Unterstützung für SASL ist nicht verfügbar. Bitte kompilieren Sie "
+#~ "libkldap mit den Client-Bibliotheken von Cyrus-SASL (oder kompatiblen) "
+#~ "oder erkundigen Sie sich beim Ersteller der installierten Pakete."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP-Fehler"
+
+#~ msgid "kcmldap"
+#~ msgstr "kcmldap"
+
+#~ msgid "LDAP Server Settings"
+#~ msgstr "LDAP-Server-Einstellungen"
+
+#~ msgid "(c) 2009 - 2010 Tobias Koenig"
+#~ msgstr "© 2009–2010 Tobias Koenig"
+
+#~ msgid "Tobias Koenig"
+#~ msgstr "Tobias Koenig"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Title"
+#~ msgstr "Titel "
+
+#~ msgid "Full Name"
+#~ msgstr "Vollständiger Name"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Email"
+#~ msgstr "E-Mail-Adresse"
+
+#~ msgid "Home Number"
+#~ msgstr "Telefonnummer (privat)"
+
+#~ msgid "Work Number"
+#~ msgstr "Telefonnummer (dienstlich)"
+
+#~ msgid "Mobile Number"
+#~ msgstr "Telefonnummer (mobil)"
+
+#~ msgid "Fax Number"
+#~ msgstr "Faxnummer"
+
+#~ msgid "Pager"
+#~ msgstr "Pager"
+
+#~ msgid "Street"
+#~ msgstr "Straße"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "State"
+#~ msgstr "Bundesland"
+
+#~ msgid "Country"
+#~ msgstr "Land"
+
+#~ msgid "City"
+#~ msgstr "Stadt"
+
+#~ msgid "Organization"
+#~ msgstr "Organisation"
+
+#~ msgid "Company"
+#~ msgstr "Firma"
+
+#~ msgid "Department"
+#~ msgstr "Abteilung"
+
+#~ msgid "Zip Code"
+#~ msgstr "Postleitzahl"
+
+#~ msgid "Postal Address"
+#~ msgstr "Postanschrift"
+
+#~ msgid "Description"
+#~ msgstr "Beschreibung"
+
+#~ msgid "User ID"
+#~ msgstr "Benutzerkennung"
+
+#~ msgctxt "Search attribute: Name of contact"
+#~ msgid "Name"
+#~ msgstr "Name"
+
+#~ msgctxt "Search attribute: Email of the contact"
+#~ msgid "Email"
+#~ msgstr "E-Mail-Adresse"
+
+#~ msgctxt "@title:column Column containing email addresses"
+#~ msgid "Email"
+#~ msgstr "E-Mail-Adresse"
+
+#~ msgctxt ""
+#~ "@title:column Column containing the residential state of the address"
+#~ msgid "State"
+#~ msgstr "Bundesland"
+
+#~ msgctxt "@title:column Column containing title of the person"
+#~ msgid "Title"
+#~ msgstr "Titel "
+
+#~ msgid "Import Contacts from LDAP"
+#~ msgstr "Kontakte aus LDAP importieren"
+
+#~ msgid "Search for Addresses in Directory"
+#~ msgstr "Nach Adressen im Verzeichnis suchen"
+
+#~ msgid "Search for:"
+#~ msgstr "Suchen nach:"
+
+#~ msgctxt "@item:inlistbox Name of the contact"
+#~ msgid "Name"
+#~ msgstr "Name"
+
+#~ msgctxt "@item:inlistbox email address of the contact"
+#~ msgid "Email"
+#~ msgstr "E-Mail-Adresse"
+
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Home Number"
+#~ msgstr "Telefonnummer (privat)"
+
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Work Number"
+#~ msgstr "Telefonnummer (dienstlich)"
+
+#~ msgid "Stop"
+#~ msgstr "Anhalten"
+
+#~ msgctxt "@action:button Start searching"
+#~ msgid "&Search"
+#~ msgstr "&Suchen"
+
+#~ msgid "Recursive search"
+#~ msgstr "Rekursive Suche"
+
+#~ msgid "Contains"
+#~ msgstr "Enthält"
+
+#~ msgid "Starts With"
+#~ msgstr "Beginnt mit"
+
+#~ msgid "Select All"
+#~ msgstr "Alle auswählen"
+
+#~ msgid "Unselect All"
+#~ msgstr "Auswahl aufheben"
+
+#~ msgid "Add Selected"
+#~ msgstr "Ausgewählte hinzufügen"
+
+#~ msgid "Configure LDAP Servers..."
+#~ msgstr "LDAP-Server einrichten ..."
+
+#~ msgid "You must select an LDAP server before searching."
+#~ msgstr "Sie müssen vor der Suche einen LDAP-Server auswählen."
+
+#~ msgctxt "arguments are host name, datetime"
+#~ msgid "Imported from LDAP directory %1 on %2"
+#~ msgstr "Importiert aus LDAP-Verzeichnis %1 am %2"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Frederik Schwarzer"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "schwarzer@kde.org"
+
+#~ msgid "Cannot start TLS."
+#~ msgstr "TLS kann nicht gestartet werden."
--- /dev/null
+# translation of kio_ldap.po to greek
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Toussis Manolis <manolis@koppermind.homelinux.org>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2008-11-15 09:22+0200\n"
+"Last-Translator: Toussis Manolis <manolis@koppermind.homelinux.org>\n"
+"Language-Team: Greek <kde-i18n-el@kde.org>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 0.2\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Επιπλέον πληροφορίες: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"H URL του εξυπηρετητής LDAP επέστρεψε το ακόλουθο σφάλμα: %1 %2\n"
+"H URL του εξυπηρετητή LDAP ήταν: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Σύνδεση LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "τοποθεσία:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Μη έγκυρες πληροφορίες εξουσιοδότησης."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Η σύνδεση LDAP ακυρώθηκε."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "O μεταφραστής LDIF απέτυχε."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Μη έγκυρο αρχείο LDIF στη γραμμή %1."
--- /dev/null
+# translation of libkldap.po to Greek
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Spiros Georgaras <sng@hellug.gr>, 2007, 2008.
+# Toussis Manolis <manolis@koppermind.homelinux.org>, 2007, 2009.
+# Dimitris Kardarakos <dimkard@gmail.com>, 2014.
+# Stelios <sstavra@gmail.com>, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-29 08:41+0300\n"
+"Last-Translator: Stelios <sstavra@gmail.com>\n"
+"Language-Team: Greek <kde-i18n-el@kde.org>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 20.04.2\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Δεν υπάρχει υποστήριξη LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Παρουσιάστηκε σφάλμα κατά την αρχικοποίηση της σύνδεσης."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Αδύνατος ο ορισμός της έκδοσης του πρωτοκόλλου σε %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Αδύνατος ο ορισμός χρονικού ορίου σε %1 δευτερόλεπτο."
+msgstr[1] "Αδύνατος ο ορισμός χρονικού ορίου σε %1 δευτερόλεπτα."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Αδυναμία ρύθμισης αρχείου CA πιστοποιητικού."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Μη έγκυρο TLS απαιτεί λειτουργία πιστοποιητικού."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Αδυναμία ρύθμισης TLS απαιτεί λειτουργία πιστοποιητικού."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Αδυναμία αρχικοποίησης νέου TLS περιεχομένου."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Μη διαθέσιμη υποστήριξη TLS στις βιβλιοθήκες πελάτη LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Αδύνατος ο ορισμός ορίου μεγέθους."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Αδύνατος ο ορισμός χρονικού ορίου."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Αδυναμία αρχικοποίησης πελάτη SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Δεν υπάρχει υποστήριξη LDAP. Παρακαλώ κάντε compile το libkldap με τις "
+"βιβλιοθήκες OpenLDAP (ή συμβατές), ή ενημερώστε τη διανομή σας."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+"Αδυναμία πρόσβασης στον εξυπηρετητή. Παρακαλώ επαναλάβετε τη ρύθμισή του."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Προσθήκη υπολογιστή"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"Ο κωδικός πρόσβασης του LDAP έχει αποθηκευθεί ως απλό κείμενο, θέλετε να το "
+"αποθηκεύσετε στο kwallet;"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Να αποθηκευθεί το απλό κείμενο του κωδικού πρόσβασης στο πορτοφόλι"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Επεξεργασία υπολογιστή"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Θέλετε να διαγράψετε τη ρύθμιση για τον υπολογιστή «%1»;"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Διαγραφή υπολογιστή"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Να επιλεγούν όλοι οι εξυπηρετητές που θα χρησιμοποιηθούν:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Προσθήκη υπολογιστή..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Επεξεργασία υπολογιατή..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Διαγ&ραφή υπολογιστή"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Χρήστης:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Σύνδεση DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Περιοχή:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Κωδικός πρόσβασης:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Υπολογιστής:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Θύρα:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Έκδοση LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Προκαθορισμένο"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Όριο μεγέθους:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " δευτ"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Προκαθορισμένο"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Χρονικό όριο:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Χωρίς σελιδοποίηση"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Μέγεθος σελίδας:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Αίτηση Εξυπηρετητή"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Φίλτρο:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Όχι"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Ασφάλεια:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Ανώνυμη"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Απλή"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Ταυτοποίηση:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Μηχανισμός SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Επιλογή εξυπηρετητή"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Ερώτημα LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Άγνωστο σφάλμα κατά τη σύνδεση στο %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP εξυπηρετητές"
+
+#~ msgid "Attribute"
+#~ msgstr "Ιδιότητα"
+
+#~ msgid "Value"
+#~ msgstr "Τιμή"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Διακριτό όνομα"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Μη διαθέσιμη υποστήριξη SASL. Παρακαλώ κάντε μεταγλώττιση το libkldap με "
+#~ "τις βιβλιοθήκες Cyrus-SASL (ή συμβατές), ή ζητήστε εξηγήσεις από τη "
+#~ "διανομή σας."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Σφάλμα λειτουργίας LDAP"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "Έκδοση LDAP:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Χρήστης:"
--- /dev/null
+# translation of kio_ldap.po to British English
+# Malcolm Hunter <malcolm.hunter@gmx.co.uk>, 2004, 2005.
+# Andrew Coles <andrew_coles@yahoo.co.uk>, 2004, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2009-03-08 16:45+0000\n"
+"Last-Translator: Andrew Coles <andrew_coles@yahoo.co.uk>\n"
+"Language-Team: British English <kde-l10n-en_gb@kde.org>\n"
+"Language: en_GB\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Additional info: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP Login"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "site:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Invalid authorisation information."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP connection cancelled."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "The Ldif parser failed."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Invalid Ldif file in line %1."
+
+#~ msgid "Cannot set LDAP protocol version %1"
+#~ msgstr "Cannot set LDAP protocol version %1"
+
+#~ msgid "Cannot set size limit."
+#~ msgstr "Cannot set size limit."
+
+#~ msgid "Cannot set time limit."
+#~ msgstr "Cannot set time limit."
+
+#~ msgid "SASL authentication not compiled into the ldap ioslave."
+#~ msgstr "SASL authentication not compiled into the ldap ioslave."
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Steve Allewell <steve.allewell@gmail.com>, 2014, 2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-31 16:36+0100\n"
+"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
+"Language-Team: British English <kde-l10n-en_gb@kde.org>\n"
+"Language: en_GB\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 21.04.3\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "No LDAP Support..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "An error occurred during the connection initialisation phase."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Cannot set protocol version to %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Cannot set timeout to %1 second."
+msgstr[1] "Cannot set timeout to %1 seconds."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Could not set CA certificate file."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Invalid TLS require certificate mode."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Could not set TLS require certificate mode."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Could not initialise new TLS context."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS support not available in the LDAP client libraries."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Cannot set size limit."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Cannot set time limit."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Cannot initialise the SASL client."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Cannot access to server. Please reconfigure it."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Add Host"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Store clear text password in Wallet"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Edit Host"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Do you want to remove setting for host \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Remove Host"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Tick all servers that should be used:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Add Host..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Edit Host..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Remove Host"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "User:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Realm:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Password:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Host:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP version:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Default"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Size limit:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sec"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Default"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Time limit:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "No paging"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Page size:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Query Server"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "No"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Security:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonymous"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Simple"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Authentication:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL mechanism:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Check server"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP Query"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Unknown error connecting %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP Servers"
+
+#~ msgid "Attribute"
+#~ msgstr "Attribute"
+
+#~ msgid "Value"
+#~ msgstr "Value"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Distinguished Name"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP Operations error"
--- /dev/null
+# Translation of kio_ldap into esperanto.
+# Axel Rousseau <axel@esperanto-jeunes.org>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2009-11-15 12:06+0100\n"
+"Last-Translator: Axel Rousseau <axel@esperanto-jeunes.org>\n"
+"Language-Team: esperanto <kde-i18n-eo@kde.org>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: pology\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr ""
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "retejo:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr ""
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr ""
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr ""
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr ""
--- /dev/null
+# Translation of libkldap into esperanto.
+# Axel Rousseau <axel@esperanto-jeunes.org>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2009-11-15 12:06+0100\n"
+"Last-Translator: Axel Rousseau <axel@esperanto-jeunes.org>\n"
+"Language-Team: esperanto <kde-i18n-eo@kde.org>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: pology\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr ""
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Gastigo:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Gastigo:"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgid "&Add Host..."
+msgstr "Gastigo:"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Uzanto:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Pasvorto:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Gastigo:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Pordo:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Tempolimo:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Paĝgrando"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtrilo:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Sekureco"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Aŭtentigo"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP Query"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP Query"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP Query"
+
+#~ msgid "Attribute"
+#~ msgstr "Atributo"
+
+#~ msgid "Value"
+#~ msgstr "Valoro"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Uzanto:"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Spanish "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+> <firstname
+>Marcos</firstname
+> <surname
+>Fouces Lago</surname
+> <affiliation
+><address
+><email
+>mfouces@yahoo.es</email
+></address
+></affiliation
+> <contrib
+>Traductor</contrib
+> </othercredit
+> <othercredit role="translator"
+><firstname
+>Javier</firstname
+><surname
+>Viñal</surname
+><affiliation
+><address
+><email
+>fjvinal@gmail.com</email
+></address
+></affiliation
+><contrib
+>Traductor</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> es un protocolo ligero de acceso a directorios. Proporciona acceso a un directorio X.500, o a un servidor <acronym
+>LDAP</acronym
+>.</para>
+
+<para
+>Puede utilizar el ioslave ldap del siguiente modo:</para>
+
+<para
+><userinput
+>ldap://maquina:puerto/ou=People,o=where,c=de??sub</userinput
+> para una petición de un subárbol</para>
+
+<para
+>o <userinput
+>ldap://maquina:puerto/cn=MM,ou=People,o=where,c=de??base</userinput
+> para obtener una rama completa.</para>
+
+</article>
--- /dev/null
+# translation of kio_ldap.po to Spanish
+# Translation of kio_ldap to Spanish
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Enrique Matias Sanchez (aka Quique) <cronopios@gmail.com>, 2007.
+# Jaime Robles <jaime@kde.org>, 2007.
+# Javier Vinal <fjvinal@gmail.com>, 2011, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2016-01-07 13:29+0100\n"
+"Last-Translator: Javier Vinal <fjvinal@gmail.com>\n"
+"Language-Team: Spanish <l10n-kde-es@kde.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Información adicional: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"El servidor LDAP devolvió el error: %1 %2\n"
+"El URL de LDAP era: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Inicio de sesión LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "sitio:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Información de autorización no válida."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "La conexión LDAP fue cancelada."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "El analizador de LDIF ha fallado."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Archivo LDIF no válido en la línea %1."
--- /dev/null
+# translation of libkldap.po to Español
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Santiago Fernández Sancho <santi@kde-es.org>, 2007, 2008.
+# Dario Andres Rodriguez <andresbajotierra@gmail.com>, 2008, 2009.
+# Adrián Martínez <sfxgt3@gmail.com>, 2010.
+# Javier Vinal <fjvinal@gmail.com>, 2011, 2012, 2013, 2014, 2016, 2017, 2018.
+# Eloy Cuadra <ecuadra@eloihr.net>, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-28 23:54+0200\n"
+"Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
+"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 21.07.80\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Sin reconocimiento de LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Se produjo un error durante la fase de inicialización de la conexión."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "No se puede cambiar la versión del protocolo a %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "No se puede establecer el tiempo de espera a %1 segundo."
+msgstr[1] "No se puede establecer el tiempo de espera %1 segundos."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "No se ha podido establecer el archivo de certificado de la CA."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "TLS inválido exige modo de certificado."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "No se ha podido establecer el modo de certificado exigido TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "No se ha podido inicializar el nuevo contexto TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+"No está disponible el reconocimiento de TLS en las bibliotecas del cliente "
+"LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "No se puede establecer el límite de tamaño."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "No se puede establecer el límite de tamaño."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "No se puede inicializar el cliente SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"No se compiló el reconocimiento de LDAP. Por favor, vuelva a compilar "
+"libkldap con las bibliotecas cliente de OpenLDAP (o compatible), o consulte "
+"a los empaquetadores de su distribución."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "No se puede acceder al servidor. Por favor, reconfigúrelo."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Añadir servidor"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"La contraseña LDAP se guarda como texto sin cifrar. ¿Desea guardarla en "
+"KWallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Guardar contraseñas sin cifrar en la cartera"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Editar servidor"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "¿Desea eliminar las preferencias del servidor «%1»?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Eliminar servidor"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Marque todos los servidores que se van a usar:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Añadir servidor..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Editar servidor..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "E&liminar servidor"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Usuario:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "DN de enlace:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Dominio:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Servidor:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Puerto:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Versión LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Predeterminado"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Límite de tamaño:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " seg"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Predeterminado"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Límite de tiempo:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Sin paginación"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Tamaño de página:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Servidor de consultas"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "No"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Seguridad:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anónimo"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Sencillo"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Autenticación:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mecanismo SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Comprobar el servidor"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Petición LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Error desconocido conectando a %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "Servidores LDAP"
+
+#~ msgid "Attribute"
+#~ msgstr "Atributo"
+
+#~ msgid "Value"
+#~ msgstr "Valor"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Nombre ilustre"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "No se compiló el reconocimiento de SASL. Vuelva a compilar libkldap con "
+#~ "las bibliotecas cliente de Cyrus-SASL (o compatible), o consulte a los "
+#~ "empaquetadores de su distribución."
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdebx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Estonian "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+><firstname
+>Marek</firstname
+><surname
+>Laane</surname
+><affiliation
+><address
+><email
+>bald@online.ee</email
+></address
+></affiliation
+><contrib
+>Tõlge eesti keelde</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> tähendab lihtsustatud kataloogisirvimise protokoll (inglise keeles lightweight directory access protocol). See võimaldab ligipääsu X.500 kataloogile või autonoomsele <acronym
+>LDAP</acronym
+> serverile.</para>
+
+<para
+>KIO moodulit ldap saab kasutada nii:</para>
+
+<para
+><userinput
+>ldap://masin:port/ou=People,o=where,c=de??sub</userinput
+> alampuu päringuks</para>
+
+<para
+>või <userinput
+>ldap://masin:port/cn=MM,ou=People,o=where,c=de??base</userinput
+> kogu haru päringuks.</para>
+
+</article>
--- /dev/null
+# translation of kio_ldap.po to Estonian
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Marek Laane <bald@starman.ee>, 2004-2005,2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-11-19 00:02+0200\n"
+"Last-Translator: Marek Laane <bald@starman.ee>\n"
+"Language-Team: Estonian <kde-et@linux.ee>\n"
+"Language: et\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Lisainfo: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP server tagastas järgmise vea: %1 %2\n"
+"LDAP URL oli: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP sisselogimine"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "sait:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Vigane autentimisinfo."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAB ühendus katkestatud"
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldif parsija jäi jänni."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Vigane Ldif-fail real %1."
+
+#~ msgid "Cannot set LDAP protocol version %1"
+#~ msgstr "Ei õnnestunud määrata LDAP protokolli versiooni %1"
+
+#~ msgid "Cannot set size limit."
+#~ msgstr "Ei õnnestunud määrata suuruselimiiti."
+
+#~ msgid "Cannot set time limit."
+#~ msgstr "Ei õnnestunud määrata ajalimiiti."
+
+#~ msgid "SASL authentication not compiled into the ldap ioslave."
+#~ msgstr "SASL autentimine ei ole LDAP IO moodulisse kompileeritud."
--- /dev/null
+# translation of libkldap.po to Estonian
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Marek Laane <bald@smail.ee>, 2007-2008, 2009, 2014, 2019, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2020-06-13 19:41+0300\n"
+"Last-Translator: Marek Laane <qiilaq69@gmail.com>\n"
+"Language-Team: Estonian <kde-et@lists.linux.ee>\n"
+"Language: et\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 19.12.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "LDAP-i toetus puudub..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Ühenduse initsialiseerimise ajal tekkis viga."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Protokollile versiooni %1 määramine nurjus."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Aegumise määramine %1 sekundile nurjus."
+msgstr[1] "Aegumise määramine %1 sekundile nurjus."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "SK sertifikaadifaili määramine nurjus."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Vigane TLS päringu sertifikaadi režiim."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "TLS päringu sertifikaadi režiimi määramine nurjus."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Uue TLS konteksti initsialiseerimine nurjus."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS-i toetus pole LDAP-i kliendi teekides saadaval."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Suuruselimiidi määramine nurjus."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Ajalimiidi määramine nurjus."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "SASL kliendi initsialiseerimine nurjus."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP-i toetus pole saadaval... Palun kompileeri libkldap OpenLDAP-i või "
+"sellega ühilduva kliendi teekidega või kurda muret oma distributsiooni "
+"pakendajatele."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Ligipääs serverile puudub. Palun muuda seadistusi."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Masina lisamine"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"LDAP-i parool on salvestatud lihttekstina, kas soovid salvestada selle KDE "
+"turvalaekasse?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, fuzzy, kde-format
+#| msgid "Store clear text password in KWallet"
+msgid "Store clear text password in Wallet"
+msgstr "Lihttekstis parooli salvestamine KDE turvalaekasse"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Masina muutmine"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Kas eemaldada masina \"%1\" seadistus?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Masina eemaldamine"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Kõigi kasutatavate serverite kontroll:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Lisa masin ..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Muuda masinat ..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Eemalda masin"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Kasutaja:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Tsoon:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Parool:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Masin:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP versioon:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Vaikimisi"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Suuruselimiit:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Vaikimisi"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Ajalimiit:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Ei saalita"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Saale suurus:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Serveri päring"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Puudub"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Turvalisus"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonüümne"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Lihtne"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Autentimine"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL mehhanism:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Serveri kontroll"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP-i päring"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Tundmatu tõrge ühendumisel serveriga %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP-serverid"
+
+#~ msgid "Attribute"
+#~ msgstr "Atribuut"
+
+#~ msgid "Value"
+#~ msgstr "Väärtus"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Eraldusnimi"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL-i toetus pole saadaval. Palun kompileeri libkldap Cyrus-SASL-i või "
+#~ "sellega ühilduva kliendi teekidega või kurda muret oma distributsiooni "
+#~ "pakendajatele."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP-i toimingute viga"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "LDAP versioon:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Kasutaja:"
--- /dev/null
+# Translation for kio_ldap.po to Euskara/Basque (eu).
+# Copyright (C) 2004-2022 This file is copyright:
+# This file is distributed under the same license as the original file.
+# KDE euskaratzeko proiektuko arduraduna <xalba@ni.eus>.
+#
+# Translators:
+# Marcos <marcos@euskalgnu.org>, 2004.
+# Juan Irigoien <juanirigoien@yahoo.es>, 2004.
+# marcos <marcos@euskalgnu.org>, 2006.
+# Iñigo Salvador Azurmendi <xalba@ni.eus>, 2022.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2022-09-11 08:05+0200\n"
+"Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
+"Language-Team: Basque <kde-i18n-eu@kde.org>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 22.08.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Informazio gehigarria: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP zerbitzariak errore hau eman du: %1 %2\n"
+"LDAP URLa hau zen: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP saio-hasiera"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "lekua:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Baimentze informazio baliogabea."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP konexioa bertan behera utzi da."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "LDIF analizatzaileak huts egin du."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "LDIF fitxategi baliogabea %1 lerroan."
--- /dev/null
+# Translation for libkldap5.po to Euskara/Basque (eu).
+# Copyright (C) 2022 This file is copyright:
+# This file is distributed under the same license as the kldap package.
+# KDE euskaratzeko proiektuko arduraduna <xalba@ni.eus>.
+#
+# Translators:
+# Iñigo Salvador Azurmendi <xalba@ni.eus>, 2022.
+msgid ""
+msgstr ""
+"Project-Id-Version: kldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2022-09-11 08:25+0200\n"
+"Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
+"Language-Team: Basque <kde-i18n-eu@kde.org>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 22.08.0\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "LDAP euskarririk ez..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Errore bat gertatu da konexioa hasieratzeko fasean."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Ezin da protokoloaren bertsioa %1(e)an ezarri."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Denbora-muga ezin da segundo %1 ezarri."
+msgstr[1] "Denbora-muga ezin da %1 segundo ezarri."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Ezin du CA ziurtagiri fitxategia ezarri."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "TLSek ziurtagiri modua behar du baliogabea."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Ezin du ezarri TLSek ziurtagiri modua behar du."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Ezin du hasieratu TLS testuinguru berria."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS euskarria ez dago erabilgarri LDAP bezero liburutegietan."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Ezin du ezarri neurri-muga."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Ezin du ezarri denbora-muga."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Ezin du hasieratu SASL bezeroa."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP euskarria ez dago barnean konpilatuta. Mesedez, konpilatu berriz "
+"«libkldap» OpenLDAP bezero liburutegiak (edo bateragarriak) erabili, edo "
+"kexatu zure banaketaren paketatzaileei."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Ezin du zerbitzaria atzitu. Mesedez, birkonfigura ezazu."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Gehitu ostalaria"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"LDAP pasahitza testu argi gisa gordeta dago, KWallet-en gorde nahi duzu?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Gorde zorroan testu-argiko pasahitza"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Editatu ostalaria"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "\"%1\" ostalariaren ezarpena kendu nahi duzu?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Kendu ostalaria"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Egiaztatu erabili beharreko zerbitzari guztiak:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Gehitu ostalaria..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Editatu ostalaria..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Kendu ostalaria"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Erabiltzailea:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Lotura DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Esparrua:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Pasahitza:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Ostalaria:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Ataka:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP bertsioa:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Lehenetsia"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Neurriaren muga:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " seg"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Lehenetsia"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Denbora-muga:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Orrikatzerik ez"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Orri-neurria:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Itaun zerbitzaria"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Iragazkia:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Ez"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Segurtasuna:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonimoa"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Erraza"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Autentifikazioa:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL mekanismoa:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Egiaztatu zerbitzaria"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP itauna"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Errore ezezaguna %1(e)kin konektatzean"
--- /dev/null
+# translation of kio_ldap.po to Persian
+# Nazanin Kazemi <kazemi@itland.ir>, 2006, 2007.
+# MaryamSadat Razavi <razavi@itland.ir>, 2006.
+# Tahereh Dadkhahfar <dadkhahfar@itland.ir>, 2006.
+# Nasim Daniarzadeh <daniarzadeh@itland.ir>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-06-13 15:37+0330\n"
+"Last-Translator: Nazanin Kazemi <kazemi@itland.ir>\n"
+"Language-Team: Persian <kde-i18n-fa@kde.org>\n"
+"Language: fa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"اطلاعات اضافی: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"کارساز LDAP خطای: %1 %2 را بازگرداند\n"
+"نشانی وب LDAP عبارت بود از: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "ورود LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "پایگاه:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "اطلاعات احراز هویت نامعتبر."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "اتصال LDAP لغو شد."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "خرابی در تجزیهکننده Ldif."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "پرونده Ldif نامعتبر در خط %1."
--- /dev/null
+# translation of kio_ldap.po to
+# Ilpo Kantonen <ilpo@iki.fi>, 2004, 2005.
+# Mikko Piippo <piippo@cc.helsinki.fi>, 2007.
+# KDE Finnish translation sprint participants:
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2013-01-20 20:04:10+0000\n"
+"Last-Translator: Mikko Piippo <piippo@cc.helsinki.fi>\n"
+"Language-Team: Finnish <lokalisointi@lists.coss.fi>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-POT-Import-Date: 2012-12-01 22:25:17+0000\n"
+"X-Generator: MediaWiki 1.21alpha (963ddae); Translate 2012-11-08\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Lisätiedot: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP-palvelin palautti virheen: %1 %2\n"
+"LDAP URL oli: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP Sisäänkirjautuminen"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "kohde:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Virheelliset kirjautumistiedot."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP-yhteys peruttu."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "LDIF-jäsentäjä epäonnistui."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Virheellinen LDIF-tiedosto rivillä %1."
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# Tommi Nieminen <translator@legisign.org>, 2010, 2015, 2017, 2018, 2020, 2021.
+# Lasse Liehu <lasse.liehu@gmail.com>, 2013, 2014.
+#
+# KDE Finnish translation sprint participants:
+# Author: Artnay
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-08-22 21:01+0300\n"
+"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
+"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-POT-Import-Date: 2012-12-01 22:25:20+0000\n"
+"X-Generator: Lokalize 20.04.2\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Ei LDAP-tukea…"
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Sattui virhe alustettaessa yhteyttä."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Yhteyskäytännön versioksi ei voi asettaa %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Aikakatkaisua ei voi asettaa %1 sekuntiin."
+msgstr[1] "Aikakatkaisua ei voi asettaa %1 sekuntiin."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "CA-varmennetiedostoa ei voitu asettaa."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Virheellinen TLS:n vaatima varmennetila."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "TLS:n vaatimaa varmennetilaa ei voitu asettaa."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Uutta TLS-kontekstia ei voitu alustaa."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS-tukea ei ole saatavilla LDAP-asiakaskirjastoissa."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Kokorajoitusta ei voi asettaa."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Aikarajoitusta ei voi asettaa."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "SASL-asiakasta ei voi alustaa."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP-tukea ei ole käännetty. Käännä libkldap uudelleen OpenLDAP- tai "
+"yhteensopivalla asiakaskirjastolla tai valita jakelusi paketoijille."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Palvelimeen ei saa yhteyttä: määritä sen asetukset uudelleen."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Lisää palvelin"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"LDAP-salasana tallennetaan salaamattomana tekstinä: haluatko tallentaa sen "
+"lompakkoon?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Tallenna salasana salaamattomana lompakkoon"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Muokkaa palvelinta"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Haluatko poistaa asetuksen palvelimelta ”%1”?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Poista palvelin"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Valitse kaikki palvelimet, joita tulisi käyttää:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "L&isää palvelin…"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Muokkaa palvelinta…"
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "P&oista palvelin"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Käyttäjä:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Alue:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Salasana:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Palvelin:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Portti:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP-versio:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Oletus"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Kokorajoitus:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Oletus"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Aikarajoitus:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Ei sivutusta"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Sivutuksen koko:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Kysy palvelimelta"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Suodatin:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Ei"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Salaus:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Nimetön"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Yksinkertainen"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Todennus:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL-mekanismi:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Tarkista palvelin"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP-kysely"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Tuntematon virhe yhdistettäessä palvelimeen %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP-palvelimet"
+
+#~ msgid "Attribute"
+#~ msgstr "Määrite"
+
+#~ msgid "Value"
+#~ msgstr "Arvo"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "DN-nimi"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL-tukea ei ole saatavilla. Käännä libkldap uudelleen Cyrus-SASL- tai "
+#~ "yhteensopivalla asiakaskirjastolla tai valita jakelusi paketoijille."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP-toimenpiteen virhe"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % French "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+&traducteurEquipeKDE;
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> est le protocole allégé d'accès à des annuaires (en anglais <quote
+>lightweight directory access protocol</quote
+>). Il permet d'accéder à un annuaire X.500, ou à un serveur <acronym
+>LDAP</acronym
+> autonome.</para>
+
+<para
+>Vous pouvez utiliser le module d'entrée / sortie ldap comme suit :</para>
+
+<para
+><userinput
+>ldap://host:port/ou=People,o=where,c=de??sub</userinput
+> pour une requête de sous-arbre</para>
+
+<para
+>ou <userinput
+>ldap://host:port/cn=MM,ou=People,o=where,c=de??base</userinput
+> pour une branche complète.</para>
+
+</article>
--- /dev/null
+# translation of kio_ldap.po to
+# translation of kio_ldap.po to Français
+# traduction de kio_ldap.po en Français
+# Matthieu Robin <kde@macolu.org>, 2004.
+# Nicolas Ternisien <nicolas.ternisien@gmail.com>, 2005.
+# Sébastien Renard <Sebastien.Renard@digitalfox.org>, 2007.
+# xavier <xavier.besnard@neuf.fr>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2013-06-06 14:21+0200\n"
+"Last-Translator: xavier <xavier.besnard@neuf.fr>\n"
+"Language-Team: French <kde-i18n-doc@kde.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 1.5\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Informations supplémentaires : "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Le serveur « LDAP » a retourné l'erreur suivante : %1 %2\n"
+"L'URL « LDAP » était : %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Connexion « LDAP »"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "site :"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Informations d'identification non valables."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Connexion « LDAP » annulée."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Échec de l'analyseur « LDIF »."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Fichier « LDIF » non valable à la ligne %1."
--- /dev/null
+# translation of libkldap.po to Francais
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# Johann Schaeffer <johann.schaeffer@gmail.com>, 2007, 2008.
+# Sébastien Renard <Sebastien.Renard@digitalfox.org>, 2008.
+# Mickael Sibelle <kimael@gmail.com>, 2008.
+# xavier <xavier.besnard@neuf.fr>, 2012, 2013, 2020, 2021.
+# Vincent Pinon <vpinon@kde.org>, 2017, 2018.
+# Simon Depiets <sdepiets@gmail.com>, 2018, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-29 18:04+0200\n"
+"Last-Translator: Xavier Besnard <xavier.besnard@neuf.fr>\n"
+"Language-Team: French <kde-francophone@kde.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 21.07.80\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Aucune prise en charge du « LDAP »..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+"Une erreur s'est produite pendant la phase d'initialisation de connexion."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Impossible de définir la version du protocole à %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Impossible de régler le temps d'attente limite à %1 seconde."
+msgstr[1] "Impossible de régler le temps d'attente limite à %1 secondes."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Impossible de définir le fichier de certificat CA."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Mode de certificat exigé par TLS non valable."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Impossible de définir le mode de certificat exigé par TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Impossible d'initialiser un nouveau contexte TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+"L'option « TLS » n'est pas disponible dans les bibliothèques du client LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Impossible de régler la taille limite."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Impossible de régler le temps limite."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Impossible d'initialiser le client « SASL »."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"La gestion du LDAP n'a pas été compilée avec cette application. Veuillez re-"
+"compiler « libkldap » avec les bibliothèques du client « OpenLDAP » (ou "
+"compatible) ou reporter ce souci aux responsables de paquets de votre "
+"distribution."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Impossible d'accéder au serveur. Veuillez le reconfigurer."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Ajouter un hôte"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"Le mot de passe « LDAP » est enregistré comme texte en clair. Voulez-vous "
+"l'enregistrer dans « kwallet » ?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Enregistrer le mot de passe comme texte en clair dans le portefeuille"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Modifier un hôte"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Voulez-vous vraiment supprimer les paramètres pour l'hôte « %1 » ?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Supprimer un hôte"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Vérifier tous les serveurs devant être utilisés :"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Ajouter un hôte..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "Modifi&er un hôte..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Supp&rimer un hôte"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Utilisateur :"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Nom de domaine de connexion :"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Domaine :"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Mot de passe :"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Hôte :"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr " Port :"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Version LDAP :"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Par défaut"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Taille limite :"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " seconde"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Par défaut"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Temps limite :"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Aucune pagination"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Taille de la page :"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Interroger un serveur"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "Nom de domaine :"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtre :"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Non"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "Chiffrement « TLS »"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Sécurité :"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonyme"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Simple"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Authentification :"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mécanisme « SASL » :"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Vérifier le serveur"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Requête LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Erreur inconnue lors de la connexion %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "Serveurs LDAP"
+
+#~ msgid "Attribute"
+#~ msgstr "Attribut"
+
+#~ msgid "Value"
+#~ msgstr "Valeur"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Nom distinctif"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "La prise en charge de « SASL » est indisponible. Veuillez re-compiler "
+#~ "« libkldap » avec les bibliothèques du client « Cyrus-SASL » (ou "
+#~ "compatible) ou reporter ce souci aux responsables de paquets de votre "
+#~ "distribution."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Erreur d'opérations LDAP"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "Version LDAP :"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Utilisateur :"
--- /dev/null
+# Irish translation of kio_ldap
+# Copyright (C) 2009 This_file_is_part_of_KDE
+# This file is distributed under the same license as the kio_ldap package.
+# Kevin Scannell <kscanne@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: kdepimlibs/kio_ldap.po\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-09-11 07:48-0500\n"
+"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
+"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"Language: ga\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? "
+"3 : 4\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Eolas breise: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"D'aischur an freastalaí LDAP an earráid seo: %1 %2\n"
+"Seo é an URL LDAP: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Logáil Isteach LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "suíomh:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Eolas neamhbhailí údaraithe."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Cealaíodh an ceangal LDAP."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Theip an parsálaí Ldif."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Comhad neamhbhailí Ldif: líne %1."
--- /dev/null
+# Irish translation of libkldap
+# Copyright (C) 2009 This_file_is_part_of_KDE
+# This file is distributed under the same license as the libkldap package.
+# Kevin Scannell <kscanne@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2007-04-15 19:05-0500\n"
+"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
+"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"Language: ga\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? "
+"3 : 4\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Gan tacaíocht LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Tharla earráid le linn túsú an cheangail."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Ní féidir leagan an phrótacail a shocrú mar %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Ní féidir teorainn ama a shocrú mar %1 soicind."
+msgstr[1] "Ní féidir teorainn ama a shocrú mar %1 shoicind."
+msgstr[2] "Ní féidir teorainn ama a shocrú mar %1 shoicind."
+msgstr[3] "Ní féidir teorainn ama a shocrú mar %1 soicind."
+msgstr[4] "Ní féidir teorainn ama a shocrú mar %1 soicind."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "Ní féidir an cliant SASL a thúsú."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Níl tacaíocht TLS ar fáil sna leabharlanna cliaint LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Ní féidir teorainn méide a shocrú."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Ní féidir teorainn ama a shocrú."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Ní féidir an cliant SASL a thúsú."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Níl tacaíocht LDAP ar fáil...Ba chóir duit libkldap a thiomsú arís leis na "
+"leabharlanna cliaint OpenLDAP (nó ceann comhoiriúnach), nó gearán a dhéanamh "
+"le pacáisteoirí do dháileadh."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Ní féidir an freastalaí a rochtain. Cumraigh é arís."
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Óstríomhaire:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Úsáideoir:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "DN ceangail:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Flaitheas:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Focal Faire:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Óstríomhaire:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Leagan LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Réamhshocrú"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Uasmhéid:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Réamhshocrú"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Teorainn ama:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Gan leathanaigh"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Méid an leathanaigh:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Freastalaí na nIarratas"
+
+# translated below
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "AA:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Scagaire:"
+
+# "None"
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Gan Slándáil"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Slándáil"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Gan ainm"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Simplí"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Fíordheimhniú"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Sásra SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Iarratas LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "Leagan LDAP:"
+
+#~ msgid "Attribute"
+#~ msgstr "Aitreabúid"
+
+#~ msgid "Value"
+#~ msgstr "Luach"
+
+# acronym above
+#~ msgid "Distinguished Name"
+#~ msgstr "Ainm Aitheanta"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Níl tacaíocht SASL ar fáil. Ba chóir duit libkldap a thiomsú arís leis na "
+#~ "leabharlanna cliaint Cyrus-SASL (nó ceann comhoiriúnach), nó gearán a "
+#~ "dhéanamh le pacáisteoirí do dháileadh."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Earráid oibríochta LDAP"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Galician "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+><firstname
+>Marce</firstname
+><surname
+>Villarino</surname
+><affiliation
+><address
+><email
+>mvillarino@users.sourceforge.net</email
+></address
+></affiliation
+><contrib
+>Tradutor do proxecto Trasno</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> é o lightweight directory access protocol. Fornece acceso a un directorio X.500, ou a un servidor <acronym
+>LDAP</acronym
+> independente.</para>
+
+<para
+>Pode empregar o kioslave ldap como segue:</para>
+
+<para
+><userinput
+>ldap://servidor:porto/ou=People,o=where,c=de??sub</userinput
+> para pesquisar nunha sub-árbore</para>
+
+<para
+>ou <userinput
+>ldap://servidor:porto/cn=MM,ou=People,o=where,c=de??base</userinput
+> para unha galla completa.</para>
+
+</article>
--- /dev/null
+# translation of kio_ldap.po to galician
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# mvillarino <mvillarino@users.sourceforge.net>, 2007, 2008.
+# Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2017, 2018.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2018-04-28 20:43+0100\n"
+"Last-Translator: Adrian Chaves <adrian@chaves.io>\n"
+"Language-Team: Galician <kde-i18n-doc@kde.org>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Información adicional: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"O servidor LDAP devolveu o seguinte erro: %1 %2\n"
+"O URL de LDAP era: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Acceso con LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "sitio:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Información de autorización incorrecta."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Cancelouse a conexión LDAP."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "O procesador de LDIF fallou."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Ficheiro LDIF incorrecto na liña %1."
--- /dev/null
+# translation of libkldap.po to galician
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# mvillarino <mvillarino@users.sourceforge.net>, 2007, 2008.
+# marce villarino <mvillarino@users.sourceforge.net>, 2009.
+# Adrián Chaves Fernández <adriyetichaves@gmail.com>, 2015, 2017.
+# Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2017, 2018.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2018-04-22 11:09+0100\n"
+"Last-Translator: Adrian Chaves <adrian@chaves.io>\n"
+"Language-Team: Galician <kde-i18n-doc@kde.org>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Non hai compatibilidade con LDAP…"
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Produciuse un erro durante a fase de inicialización da conexión."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Non se pode estabelecer a versión do protocolo como %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Non se pode estabelecer o límite de tempo en %1 segundo."
+msgstr[1] "Non se pode estabelecer o límite de tempo en %1 segundos."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+"Non se puido definir o ficheiro de certificado de autoridade de "
+"certificación."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Modo de requisito de certificado TLS incorrecto."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Non se puido estabelecer o modo de requisito de certificado TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Non se puido inicializar o novo contexto de TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "As bibliotecas LDAP do cliente non teñen compatibilidade con TLS."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Non se pode estabelecer o límite de tamaño."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Non se pode estabelecer o límite de tempo."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Non se pode inicializar o cliente de SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Non ten compatibilidade con LDAP compilada nas bibliotecas. Compile de novo "
+"libkldap coas bibliotecas cliente de OpenLDAP (ou compatíbeis), ou "
+"protéstalle aos empaquetadores da túa distribución."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Non se pode acceder ao servidor. Por favor, reconfigúreo."
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Servidor:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Usuario:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Nome de dominio vinculado:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Área de identificación compartida:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Contrasinal:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Servidor:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Porto:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Versión de LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Predeterminado"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Límite de tamaño:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Predeterminado"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Límite de tempo:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Sen paxinación"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Tamaño da páxina:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Preguntar ao servidor"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "Nome distintivo:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Ningunha"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Seguridade"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anónimo"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Simple"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Autenticación"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mecanismo de SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Comprobar o servidor"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Consulta LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Erro descoñecido ao conectar a %1"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "Versión de LDAP:"
+
+#~ msgid "Attribute"
+#~ msgstr "Atributo"
+
+#~ msgid "Value"
+#~ msgstr "Valor"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Nome distintivo"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "A compatibilidade con SASL non está dispoñíbel. Por favor, compile de "
+#~ "novo libkldap coas bibliotecas cliente de Cyrus-SASL (ou compatíbeis), ou "
+#~ "protéstelles aos empaquetadores da súa distribución."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Erro na operación de LDAP"
--- /dev/null
+# Translation of kio_ldap.po to Hebrew
+# translation of kio_ldap.po to hebrew
+# translation of kdialog.po to hebrew
+# KDE Hebrew Localization Project
+#
+# In addition to the copyright owners of the program
+# which this translation accompanies, this translation is
+# Copyright (C) 2002 Meni Livne <livne@kde.org>
+#
+# This translation is subject to the same Open Source
+# license as the program which it accompanies.
+#
+# Diego Iastrubni <elcuco@kde.org>, 2005.
+# galion <galion.lum@gmail.com>, 2005.
+# tahmar1900 <tahmar1900@gmail.com>, 2006.
+# Meni Livne <livne@kde.org>, 2007.
+# Elkana Bardugo <ttv200@gmail.com>, 2017. #zanata
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2017-05-16 07:05-0400\n"
+"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
+"Language-Team: Hebrew <kde-l10n-he@kde.org>\n"
+"Language: he\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Zanata 3.9.6\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"מידע נוסף: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"שרת ה־LDAP החזיר את השגיאה: %1 %2 \n"
+"כתובת ה־LDAP הייתה: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "כניסת LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "אתר:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "מידע זיהוי לא תקף."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "החיבור ל־LDAP בוטל."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "מפרק ה־Ldif נכשל."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Ldif לא תקף בשורה %1."
--- /dev/null
+# translation of kio_ldap.po to Hindi
+#
+# G Karunakar <karunakar@indlinux.org>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-08-18 15:30+0530\n"
+"Last-Translator: G Karunakar <karunakar@indlinux.org>\n"
+"Language-Team: Hindi <indlinux-hindi@lists.sourceforge.net>\n"
+"Language: hi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Hindi\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"अतिरिक्त जानकारी:"
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"एलडीएपी सर्वर ने निम्न त्रुटि लौटाया: %1 %2\n"
+"एलडीएपी यूआरएल था: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "एलडीएपी लॉगइन"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "साइटः"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "अवैध प्रमाणीकरण जानकारी"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "एलडीएपी कनेक्शन असफल"
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "एलडीआईएफ़ पारसर विफल"
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "पंक्ति %1 में अवैध एलडीआईएफ फ़ाइल है."
--- /dev/null
+# translation of libkldap.po to Hindi
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Ravishankar Shrivastava <raviratlami@yahoo.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2008-01-28 12:57+0530\n"
+"Last-Translator: Ravishankar Shrivastava <aviratlami@aol.in>\n"
+"Language-Team: Hindi <indlinux-hindi@lists.sourceforge.net>\n"
+"Language: hi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "कोई एलडीएपी समर्थन नहीं...."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "कनेक्शन को चालू करने के दौरान एक त्रुटि हुई."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "प्रोटोकॉल संस्करण %1 सेट नहीं किया जा सका."
+
+#: core/ldapconnection.cpp:257
+#, fuzzy, kde-format
+#| msgid "Cannot set time limit."
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "समय सीमा नियत नहीं कर सका."
+msgstr[1] "समय सीमा नियत नहीं कर सका."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "एसएएसएल क्लाएंट प्रारंभ नहीं किया जा सका."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "एलडीएपी क्लाएंट लाइब्रेरी में टीएलएस समर्थन उपलब्ध नहीं है."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "आकार सीमा नियत नहीं कर सका."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "समय सीमा नियत नहीं कर सका."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "एसएएसएल क्लाएंट प्रारंभ नहीं किया जा सका."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "होस्टः"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "होस्टः"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgid "&Add Host..."
+msgstr "होस्टः"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "उपयोक्ता:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "बाइंड डीएन:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "रीयल्म:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "पासवर्ड: "
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "होस्टः"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "पोर्टः"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "एलडीएपी संस्करण:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, fuzzy, kde-format
+#| msgid "Default"
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "डिफ़ॉल्ट"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "आकार सीमा:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr "सेक."
+
+#: widgets/ldapconfigwidget.cpp:154
+#, fuzzy, kde-format
+#| msgid "Default"
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "डिफ़ॉल्ट"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "समय सीमा:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "पेजिंग नहीं"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "पृष्ठ आकार:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "क्वैरी सर्वर"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, fuzzy, kde-format
+#| msgid "DN:"
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "डीएन:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "फ़िल्टर:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, fuzzy, kde-format
+#| msgid "No"
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "नहीं"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, fuzzy, kde-format
+#| msgid "TLS"
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "टीएलएस"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, fuzzy, kde-format
+#| msgid "SSL"
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "एसएसएल"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "सुरक्षा"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, fuzzy, kde-format
+#| msgid "Anonymous"
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "अज्ञातनाम"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, fuzzy, kde-format
+#| msgid "Simple"
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "साधारण"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, fuzzy, kde-format
+#| msgid "SASL"
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "एसएसएल"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "प्रमाणीकरण"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "एसएएसएल मेकेनिज़्म"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "एलडीएपी क्वेरी"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "एलडीएपी संस्करण:"
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "एलडीएपी ऑपरेशन त्रुटि"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "एलडीएपी संस्करण:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "उपयोक्ता:"
--- /dev/null
+# Kristóf Kiszel <ulysses@kubuntu.org>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: KDE 4.0\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2010-12-15 23:18+0100\n"
+"Last-Translator: Kristóf Kiszel <ulysses@kubuntu.org>\n"
+"Language-Team: Hungarian <kde-lista@sophia.jpte.hu>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"További információ: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Az LDAP-kiszolgáló hibát jelzett: %1 %2\n"
+"LDAP URL: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP-bejelentkezés"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "Alapcím:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Érvénytelenek a felhasználóazonosítási adatok."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Az LDAP-kapcsolat megszakadt."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Az LDIF-feldolgozó hibát jelzett."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Hiba az LDIF-fájl %1. sorában."
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Tamas Szanto <tszanto@interware.hu>, 2007.
+# Balázs Úr <urbalazs@gmail.com>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: KDE 4.3\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2014-06-14 15:51+0200\n"
+"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
+"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Nincs LDAP-támogatás..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Hiba történt a kapcsolat inicializálása közben."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Nem sikerült beállítani a protokoll verziószámát erre: %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Nem sikerült beállítani a várakozási időt %1 másodpercre."
+msgstr[1] "Nem sikerült beállítani a várakozási időt %1 másodpercre."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "Nem sikerült inicializálni az SASL-klienst."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Nincs TLS-támogatás az LDAP kliens programkönyvtárában."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Nem sikerült beállítani a méretkorlátot."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Nem sikerült beállítani az időkorlátot."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Nem sikerült inicializálni az SASL-klienst."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Nincs befordítva az LDAP-támogatás. Fordítsa újra a libkldap-ot az OpenLDAP "
+"(vagy ezzel kompatibilis más) kliens programkönyvtárral, vagy kérjen "
+"segítséget a disztribúció csomagkészítőitől."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+"Nem sikerült elérni a kiszolgálót. Ha szükséges, módosítson a beállításokon."
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Gépnév:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Gépnév:"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgid "&Add Host..."
+msgstr "Gépnév:"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Felhasználónév:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Csatlakozási DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Tartomány:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Jelszó:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Gépnév:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP verzió:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Alapértelmezés"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Méretkorlát:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Alapértelmezés"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Időkorlát:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Nincs lapozás"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Lapméret:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Lekérdezés"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Szűrő:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Nincs"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Biztonság"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonymous"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Egyszerű"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Felhasználóazonosítás"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL-mechanizmus:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP lekérdezés"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Ismeretlen hiba csatlakozáskor: %1"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP verzió:"
+
+#~ msgid "Attribute"
+#~ msgstr "Attribútum"
+
+#~ msgid "Value"
+#~ msgstr "Érték"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Azonosító név (DN)"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Nincs SASL-támogatás. Fordítsa újra a libkldap-ot a Cyrus-SASL (vagy "
+#~ "ezzel kompatibilis más) kliens programkönyvtárral, vagy kérjen segítséget "
+#~ "a disztribúció csomagkészítőitől."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Hiba egy LDAP-műveletben"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "LDAP verzió:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Felhasználónév:"
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# g.sora <g.sora@tiscali.it>, 2011, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2012-05-14 14:16+0200\n"
+"Last-Translator: Giovanni Sora <g.sora@tiscali.it>\n"
+"Language-Team: Interlingua <kde-i18n-it@kde.org>\n"
+"Language: ia\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.2\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Information additional: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Servitor LDAP retornava le error: %1 %2\n"
+"Le URL de LDAP esseva: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Accesso de identification LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "sito:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Information de authorization invalide"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Connexion LDAP cancellate."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Le analysator Ldif falleva."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Invalide file de Ldif in linea %1."
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# g.sora <g.sora@tiscali.it>, 2011, 2012, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-29 22:39+0200\n"
+"Last-Translator: giovanni <g.sora@tiscali.it>\n"
+"Language-Team: Interlingua <kde-i18n-doc@kde.org>\n"
+"Language: ia\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 21.04.3\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Nulle supporto LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Un error ha occurrite durante le phase de initialization de connexion."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Non pote fixar version de protocollo a %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Non pote fixar tempore limite a %1 secunda."
+msgstr[1] "Non pote fixar tempore limite a %1 secundas."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Non pote fixar file certificar CA."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "InvalideTLS require modo de certificato"
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Non pote fixar TLS require modo de certificato."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Non pote initialisar nove contexto TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Supporto TLS non es disponibile in le librerias cliente de LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Non pote fixar limite de grandor."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Non pote fixar limite de tempore."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Non pote initializar le cliente SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Supporto LDAP non es compilate intra. Pro favor compila de nove libkldap "
+"con le librerias cliente OpenLDAP (o compatibile), o querela tu "
+"impacchettator de distribution."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Non pote acceder a servitor. Pro favor tu reconfigura lo."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Adde hospite"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"Contrasigno de LDAP es immagazinate como texto clar, tu vole immagazinar lo "
+"in le portafolio kwallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Immagazina contrasigno de texto clar in Wallet"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Modifica hospite"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Tu vole remover preferntias pro hospite \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Remove hospite"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Marca tote servitores que on deberea usar:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Adde hospite..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Modifica hospite..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Remove hospite"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Usator:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Ligamine (Bind) DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Regno:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Contrasigno:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Hospite:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Porto:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Version de LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Predefinite"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Limite de grandor:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sec"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Predefinite"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Limite de tempore:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Nulle pagination"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Dimension de Pagina:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Servitor de requesta"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "No"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Securitate:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonyme"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Simple"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Authentication:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mechanismo SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Verifica servitor"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Requesta LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Error incognite connectente a : %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "Servitores LDAP"
+
+#~ msgid "Attribute"
+#~ msgstr "Attributo"
+
+#~ msgid "Value"
+#~ msgstr "Valor"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Nomine distinguite"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Supporto SASL non es disponibile. Pro favor compila de nove libkldap con "
+#~ "le librerias cliente Cyrus-SASL (o compatibile), o querela tu "
+#~ "impacchettator de distribution."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Error de operationes LDAP"
--- /dev/null
+# translation of kio_ldap.po to Icelandic
+# Íslensk þýðing kio_ldap.po
+# Richard Allen <ra@ra.is>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2005-12-03 13:32+0100\n"
+"Last-Translator: Arnar Leosson <leosson@frisurf.no>\n"
+"Language-Team: Icelandic <kde-isl@molar.is>\n"
+"Language: is\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11\n"
+"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n"
+"\n"
+"\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Viðbótarupplýsingar: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP þjónninn skilaði eftirfarandi villu: %1 %2\n"
+"LDAP slóðin var: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP auðkenni"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "staðsetning:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Ógildar auðkenniupplýsingar."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr ""
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, fuzzy, kde-format
+msgid "The Ldif parser failed."
+msgstr "LDIF þáttarinn brást."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, fuzzy, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Ógild LDIF skrá í línu %1."
+
+#~ msgid "Cannot set LDAP protocol version %1"
+#~ msgstr "Get ekki sett á LDAP samskiptamáta %1"
+
+#~ msgid "Cannot set size limit."
+#~ msgstr "Get ekki sett stærðartakmörkun."
+
+#~ msgid "Cannot set time limit."
+#~ msgstr "Get ekki sett tímatakmörkun."
+
+#~ msgid "SASL authentication not compiled into the ldap ioslave."
+#~ msgstr "SASL auðkenning er ekki þýdd inn í ldap ioslave forritið."
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Italian "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+><firstname
+>Luciano</firstname
+> <surname
+>Montanaro</surname
+><affiliation
+><address
+><email
+>mikelima@cirulla.net</email
+></address
+></affiliation
+><contrib
+>Traduzione del documento</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+>L'<acronym
+>ldap</acronym
+> è il Lightweight Directory Access Protocol. Fornisce accesso a directory X.500 o ad un server <acronym
+>LDAP</acronym
+> indipendente.</para>
+
+<para
+>Il kioslave ldap si usa come segue:</para>
+
+<para
+><userinput
+>ldap://host:port/ou=People,o=where,c=de??sub</userinput
+> per una ricerca su sottoalbero</para>
+
+<para
+>oppure <userinput
+>ldap://host:port/cn=MM,ou=People,o=where,c=de??base</userinput
+> per un ramo completo.</para>
+
+</article>
--- /dev/null
+# translation of kio_ldap.po to Italian
+# Andrea RIZZI <arizzi@pi.infn.it>, 2004.
+# Andrea Rizzi <rizzi@kde.org>, 2005.
+# Nicola Ruggero <nicola@nxnt.org>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2008-01-01 17:26+0100\n"
+"Last-Translator: Nicola Ruggero <nicola@nxnt.org>\n"
+"Language-Team: Italian <kde-i18n-it@kde.org>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Informazioni aggiuntive: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Il server LDAP ha dato il seguente errore: %1%2\n"
+"L'URL LDAP era: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Accesso LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "sito:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Informazioni di autorizzazione non valide."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Connessione LDAP annullata."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "L'analizzatore LDIF non ha funzionato."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "File LDIF non valido alla riga %1."
--- /dev/null
+# translation of libkldap.po to Italian
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# Federico Zenith <federico.zenith@member.fsf.org>, 2007.
+# Luigi Toscano <luigi.toscano@tiscali.it>, 2014, 2017, 2018, 2019, 2020, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-30 23:47+0200\n"
+"Last-Translator: Luigi Toscano <luigi.toscano@tiscali.it>\n"
+"Language-Team: Italian <kde-i18n-it@kde.org>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 20.12.0\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Senza supporto LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+"Si è verificato un errore durante la fase di inizializzazione della "
+"connessione."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Impossibile impostare il protocollo alla versione %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Impossibile impostare la scadenza a %1 secondo."
+msgstr[1] "Impossibile impostare la scadenza a %1 secondi."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Impossibile impostare il file del certificato della CA."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Modalità «TLS richiede un certificato» non valida."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Impossibile impostare la modalità «TLS richiede un certificato»."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Impossibile inizializzare un nuovo contesto TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Supporto TLS non disponibile nelle librerie del client LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Impossibile impostare un limite di dimensione."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Impossibile impostare un limite di tempo."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Impossibile inizializzare il client SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Supporto LDAP non compilato. Ricompila libkldap con le librerie del client "
+"OpenLDAP (o compatibili), o segnala il problema ai responsabili del "
+"pacchetto della tua distribuzione."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+"Impossibile accedere al server; è necessario riconfigurarne i parametri."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Aggiungi host"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr "La password LDAP è memorizzata in chiaro, vuoi salvarla in kwallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Memorizza la password in chiaro nel portafogli"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Modifica host"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Vuoi rimuovere le impostazioni per l'host «%1»?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Rimuovi host"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Controlla tutti i server che devono essere usati:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Aggiungi host..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Modifica host..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Rimuovi host"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Utente:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Autentica ND:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Reame:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Password:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Host:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Porta:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Versione di LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Predefinito"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Limite di dimensione:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sec"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Predefinito"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Scadenza:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Senza paginazione"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Dimensione della pagina:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Interroga server"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "ND:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "No"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Sicurezza:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonimo"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Semplice"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Autenticazione:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Meccanismo SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Verifica server"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Interrogazione LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Errore sconosciuto nella connessione a %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "Server LDAP"
+
+#~ msgid "Attribute"
+#~ msgstr "Attributo"
+
+#~ msgid "Value"
+#~ msgstr "Valore"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Nome distinto"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Supporto SASL non disponibile. Ricompila libkldap con le librerie del "
+#~ "client Cyrus-SASL (o compatibili), o segnala il problema ai responsabili "
+#~ "del pacchetto della tua distribuzione."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Errore di operazione di LDAP"
--- /dev/null
+# translation of kio_ldap.po to Japanese
+# Copyright (C) 2004-2007 This_file_is_part_of_KDE
+# This file is distributed under the same license as the kdepimlibs package.
+# Kenshi Muto <kmuto@debian.org>, 2004.
+# Shinichi Tsunoda <tsuno@ngy.1st.ne.jp>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-09-11 17:00+0900\n"
+"Last-Translator: Yukiko Bando <ybando@k6.dion.ne.jp>\n"
+"Language-Team: Japanese <kde-jp@kde.org>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"追加情報: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP サーバが以下のエラーを返しました: %1 %2\n"
+"LDAP URL: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP ログイン"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "サイト:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "無効な認証情報です。"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP 接続がキャンセルされました。"
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldif パーサが失敗しました。"
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "%1 行目が無効な Ldif ファイルです。"
--- /dev/null
+# Translation of libkldap into Japanese.
+# This file is distributed under the same license as the kdepimlibs package.
+# Yukiko Bando <ybando@k6.dion.ne.jp>, 2007, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2010-01-27 01:06+0900\n"
+"Last-Translator: Yukiko Bando <ybando@k6.dion.ne.jp>\n"
+"Language-Team: Japanese <kde-jp@kde.org>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "LDAP サポートがありません..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "接続初期化フェーズでエラーが発生しました。"
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "プロトコルのバージョンを %1 に設定できません。"
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "タイムアウトを %1 秒に設定できません。"
+msgstr[1] "タイムアウトを %1 秒に設定できません。"
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "SASL クライアントを初期化できません。"
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "LDAP クライアントライブラリに TLS サポートがありません。"
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "サイズ制限を設定できません。"
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "時間制限を設定できません。"
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "SASL クライアントを初期化できません。"
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP サポートがコンパイルされていません。OpenLDAP (または互換の) クライアント"
+"ライブラリ付きで libkldap をコンパイルし直すか、お使いのディストリビューショ"
+"ンのパッケージ作成者に問題を報告してください。"
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "サーバにアクセスできません。設定をやり直してください。"
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "ホスト:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "ユーザ:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "バインド DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "レルム:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "パスワード:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "ホスト:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "ポート:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP バージョン:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "標準"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "サイズ制限:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " 秒"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "標準"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "時間制限:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "ページングなし"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "ページサイズ:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "クエリサーバ"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "フィルタ:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "なし"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "セキュリティ"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "匿名"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "シンプル"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "認証方式"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL メカニズム:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP クエリ"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
--- /dev/null
+# translation of kio_ldap.po to Kazakh
+#
+# Sairan Kikkarin <sairan@computer.org>, 2005, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-09-19 11:24+0600\n"
+"Last-Translator: Sairan Kikkarin <sairan@computer.org>\n"
+"Language-Team: Kazakh\n"
+"Language: kk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Қосымша мәлімет: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP сервер қайтарған қате: %1 %2\n"
+"LDAP URL адресі: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP жүйеге кіру"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "сайт:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Мәлімет шындылық тексерістен өтпеді."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP қосылым үзілді."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldif талдау жаңылысы."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Ldif файлының %1-жолында қате."
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Sairan Kikkarin <sairan@computer.org>, 2011, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2012-02-29 03:21+0600\n"
+"Last-Translator: Sairan Kikkarin <sairan@computer.org>\n"
+"Language-Team: Kazakh <kde-i18n-doc@kde.org>\n"
+"Language: kk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 1.2\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "LDAP қолдауы жоқ..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Қосылуды бастау кезде бір қате орын алды."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Протоколдың нұсқасы %1 деп орнатымады.."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "%1 секундтық күту уақыты орнатылмады."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "SASL клиенті бастау күйіне келмеді."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "LDAP клиенттік жинақ файлдары TLS протоколын қолдамайды."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Өлшемінің шегі орнатылмады."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Уақыт шегі орнатылмады."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "SASL клиенті бастау күйіне келмеді."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP қолдауысыз жинақталған файл. libkldap-ты OpenLDAP (немесе үйлесімді) "
+"клиенттік жинақ файлдарымен бірге қайта компиляциялап жинқтаңыз, не "
+"дистрибутивіңіздің жабдықтаушыңызға шағымданыңыз."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Серверімен қатынас жоқ. Оны қайта баптап көріңіз."
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Хосты:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Пайдаланушы:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "DN байланысы:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Аумағы:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Паролі:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Хосты:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Порты:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP нұсқасы:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Әдетті"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Өлшемінің шегі:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " сек"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Әдетті"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Уақыт шегі:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Парақтаусыз"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Парақ өлшемі:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Серверге сұрау салу"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Сүзгісі:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Жоқ"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Қауіпсіздігі"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Анонимды"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Қарапайым"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Аутентификация"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL тетігі:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP сұранысы"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP нұсқасы:"
+
+#~ msgid "Attribute"
+#~ msgstr "Атрибуты"
+
+#~ msgid "Value"
+#~ msgstr "Мәні"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Айырымды атау (DN)"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "LDAP қолдауы жоқ. libkldap-ты Cyrus-SASL (немесе үйлесімді) клиенттік "
+#~ "жинақ файлдарымен бірге қайта компиляциялап жинқтаңыз, не "
+#~ "дистрибутивіңіздің жабдықтаушыңызға шағымданыңыз."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP амалдар қатесі"
--- /dev/null
+# translation of kio_ldap.po to Khmer
+# Khoem Sokhem <khoemsokhem@khmeros.info>, 2005, 2007, 2008.
+# Sokun <sokun_poch@khmeros.info>, 2007.
+# Auk Piseth <piseth_dv@khmeros.info>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2008-01-24 10:13+0700\n"
+"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
+"Language-Team: Khmer <support@khmeros.info>\n"
+"Language: km\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"ព័ត៌មានបន្ថែម ៖ "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"ម៉ាស៊ីនបម្រើ LDAP បានត្រឡប់កំហុស ៖ %1 %2\n"
+"URL របស់ LDAP គឺ ៖ %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "ការចូល LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "តំបន់បណ្ដាញ ៖"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "ព័ត៌មានអំពីការអនុញ្ញាតមិនត្រឹមត្រូវ ។"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "ការតភ្ជាប់ LDAP ត្រូវបានបោះបង់ ។"
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "ឧបករណ៍ញែក Ldif បានបរាជ័យ ។"
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "ឯកសារ Ldif មិនត្រឹមត្រូវនៅបន្ទាត់ %1 ។"
--- /dev/null
+# translation of libkldap.po to Khmer
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Khoem Sokhem <khoemsokhem@khmeros.info>, 2008, 2009, 2010.
+# Morn Met, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2010-12-13 09:23+0700\n"
+"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
+"Language-Team: Khmer <support@khmeros.info>\n"
+"Language: km\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "គ្មានការគាំទ្រ LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "កំហុសមួយបានកើតឡើងខណៈពេលដំណាក់កាលចាប់ផ្ដើមការតភ្ជាប់ ។"
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "មិនអាចកំណត់កំណែពិធីការទៅ %1 បានឡើយ ។"
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "មិនអាចកំណត់ពេលសម្រាកទៅ %1 វិនាទី ។"
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "មិនអាចចាប់ផ្ដើមម៉ាស៊ីនភ្ញៀវ SASL ។"
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "មិនមានការគាំទ្រ TLS នៅក្នុងបណ្ណាល័យម៉ាស៊ីនភ្ញៀវ LDAP ។"
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "មិនអាចកំណត់ដែនកំណត់របស់ទំហំ ។"
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "មិនអាចកំណត់ម៉ោងកំណត់បានឡើយ ។"
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "មិនអាចចាប់ផ្ដើមម៉ាស៊ីនភ្ញៀវ SASL ។"
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"ការគាំទ្រ LDAP មិនបានចងក្រងនៅ ។ សូមចងក្រង libkldap ដោយបណ្ណាល័យម៉ាស៊ីនភ្ញៀវ OpenLDAP (ឬ"
+"ឆបគ្នា) ឬតវ៉ាទៅអ្នកគ្រប់គ្រងកញ្ចប់ចែកចាយរបស់អ្នក ។"
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "មិនអាចចូលដំណើរការទៅកាន់ម៉ាស៊ីនបម្រើបានទេ ។ សូមកំណត់រចនាសម្ព័ន្ធវាម្ដងទៀត ។"
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "ម៉ាស៊ីន ៖"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "អ្នកប្រើ ៖"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN ៖"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Realm ៖"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "ពាក្យសម្ងាត់ ៖"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "ម៉ាស៊ីន ៖"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "ច្រក ៖"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "កំណែ LDAP ៖"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "លំនាំដើម"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "ដែនកំណត់ទំហំ ៖"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " វិ."
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "លំនាំដើម"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "ដែនកំណត់ពេលវេលា ៖"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "គ្មានភេយីង"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "ទំហំទំព័រ ៖"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "ម៉ាស៊ីនបម្រើសំណួរ"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN ៖"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "តម្រង ៖"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "ទេ"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "សុវត្ថិភាព"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "អនាមិក"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "សាមញ្ញ"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "យន្តការ SASL ៖"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "សំណួរ LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "កំណែ LDAP ៖"
+
+#~ msgid "Attribute"
+#~ msgstr "គុណលក្ខណៈ"
+
+#~ msgid "Value"
+#~ msgstr "តម្លៃ"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "ឈ្មោះដែលចំណាំ"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "មិនមានការគាំទ្រ SASL ទេ ។ សូមចងក្រង libkldap ឡើងវិញ ដែលមាន Cyrus-SASL (ឬឆបគ្នា) "
+#~ "បណ្ណាល័យម៉ាស៊ីនភ្ញៀវ ឬប្ដឹងទៅអ្នកកាន់កាប់កញ្ចប់ចែកចាយរបស់អ្នក ។"
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "កំហុសក្នុងការប្រតិបត្តិ LDAP"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Korean "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>LDAP</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit lang="ko" role="translator"
+><surname
+>박</surname
+><firstname
+>신조</firstname
+><affiliation
+><address
+><email
+>kde@peremen.name</email
+></address
+></affiliation
+><contrib
+>한국어 번역</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>LDAP</acronym
+>(Lightweight Directory Access Protocol)은 디렉터리 서비스용 프로토콜입니다. X.500 디렉터리에 접근하거나 단독 <acronym
+>LDAP</acronym
+> 서버에 접근할 수 있습니다.</para>
+
+<para
+>다음과 같이 LDAP KIO 슬레이브를 사용할 수 있습니다:</para>
+
+<para
+>하위 트리 질의: <userinput
+>ldap://host:port/ou=People,o=where,c=de??sub</userinput
+></para>
+
+<para
+>완전한 브랜치 질의: <userinput
+>ldap://host:port/cn=MM,ou=People,o=where,c=de??base</userinput
+></para>
+
+</article>
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Shinjo Park <kde@peremen.name>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2014-03-03 00:26+0900\n"
+"Last-Translator: Shinjo Park <kde@peremen.name>\n"
+"Language-Team: Korean <kde-kr@kde.org>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"추가 정보: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP 서버에서 오류를 반환했습니다: %1 %2\n"
+"LDAP URL: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP 로그인"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "사이트:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "인증 정보가 잘못되었습니다."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP 연결이 취소되었습니다."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "LDIF 파서가 실패했습니다."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "%1줄에 잘못된 LDIF 파일이 있습니다."
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# Shinjo Park <kde@peremen.name>, 2015, 2017, 2018, 2020, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-31 15:54+0200\n"
+"Last-Translator: Shinjo Park <kde@peremen.name>\n"
+"Language-Team: Korean <kde-kr@kde.org>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 20.12.3\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "LDAP 지원 없음..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "연결 초기화 중 오류가 발생했습니다."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "프로토콜 버전을 %1(으)로 설정할 수 없습니다."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "시간 제한을 %1초로 설정할 수 없습니다."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "CA 인증서 파일을 설정할 수 없습니다."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "잘못된 TLS 인증서 요청 모드입니다."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "TLS 인증서 요청 모드를 설정할 수 없습니다."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "새 TLS 콘텍스트를 초기화할 수 없습니다."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "LDAP 클라이언트 라이브러리에서 TLS를 사용할 수 없습니다."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "크기 제한을 설정할 수 없습니다."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "시간 제한을 설정할 수 없습니다."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "SASL 클라이언트를 초기화할 수 없습니다."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP 지원을 사용할 수 없습니다. libkldap을 OpenLDAP 및 호환되는 클라이언트 라"
+"이브러리와 같이 컴파일하거나, 배포판 패키지 관리자에게 문의하십시오."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "서버에 접근할 수 없습니다. 다시 설정하십시오."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "호스트 추가"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr "LDAP 암호가 평문으로 저장되어 있습니다. KWallet에 저장하시겠습니까?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "지갑에 평문으로 암호 저장"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "호스트 편집"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "호스트 \"%1\"의 설정을 삭제하시겠습니까?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "호스트 삭제"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "사용될 모든 서버 확인:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "호스트 추가(&A)..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "호스트 편집(&E)..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "호스트 삭제(&R)"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "사용자:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "바인드 DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "영역:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "암호:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "호스트:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "포트:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP 버전:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "기본값"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "크기 제한:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " 초"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "기본값"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "시간 제한:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "페이징 없음"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "페이지 크기:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "질의 보내기"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "필터:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "아니요"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "보안:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "익명"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "간단함"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "인증:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL 방식:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "서버 확인"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP 질의"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "%1에 연결 중 알 수 없는 오류"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP 서버"
+
+#~ msgid "Attribute"
+#~ msgstr "속성"
+
+#~ msgid "Value"
+#~ msgstr "값"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "구분되는 이름"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL 지원을 사용할 수 없습니다. libkldap을 Cyrus-SASL 및 호환되는 클라이언"
+#~ "트 라이브러리와 함께 컴파일하거나, 배포판 패키지 관리자에게 문의하십시오."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP 작업 오류"
--- /dev/null
+# translation of kio_ldap.po to Lithuanian
+# Donatas Glodenis <dgvirtual@akl.lt>, 2005.
+# Tomas Straupis <tomasstraupis@gmail.com>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2011-06-23 14:28+0300\n"
+"Last-Translator: Tomas Straupis <tomasstraupis@gmail.com>\n"
+"Language-Team: Lithuanian <kde-i18n-lt@kde.org>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n"
+"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n"
+"(n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 1.2\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Papildoma info:"
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP serveris grąžino šią klaidą: %1 %2\n"
+"LDAP URL buvo: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP registravimasis"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "sritis:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Neteisinga autorizacijos informacija."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP jungtis nutraukta."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldif tikrintojas nesuveikė."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Neteisingas LDIF failas eilutėje %1."
--- /dev/null
+# translation of libkldap.po to Lithuanian
+# This file is distributed under the same license as the libkldap package.
+# Donatas Glodenis <dgvirtual@akl.lt>, 2007.
+# Remigijus Jarmalavičius <remigijus@jarmalavicius.lt>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2011-09-25 13:12+0300\n"
+"Last-Translator: Remigijus Jarmalavičius <remigijus@jarmalavicius.lt>\n"
+"Language-Team: Lithuanian <kde-i18n-lt@kde.org>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n"
+"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n"
+"X-Generator: Lokalize 1.2\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Nėra LDAP palaikymo..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Nepavyksta nustatyti dydžio limito."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Nepavyksta nustatyti laiko limito."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Mazgas:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Naudotojas:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Prisijungimo DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Sritis:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Slaptažodis:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Mazgas:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Prievadas:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP versija:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Numatytas"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Dydžio limitas:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek."
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Numatytas"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Laiko limitas:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Be puslapiavimo"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Puslapio dydis:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Siųsti užklausą serveriui"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtras:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Ne"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Saugumas"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonimiškas"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Paprastas"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Patvirtinimas"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL mechanizmas:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP užklausa"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP versija:"
+
+#~ msgid "Attribute"
+#~ msgstr "Atributas"
+
+#~ msgid "Value"
+#~ msgstr "Vertė"
--- /dev/null
+# translation of kio_ldap.po to Latvian
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Viesturs Zarins <viesturs.zarins@mii.lu.lv>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-12-29 19:11+0200\n"
+"Last-Translator: Viesturs Zarins <viesturs.zarins@mii.lu.lv>\n"
+"Language-Team: Latvian <locale@laka.lv>\n"
+"Language: lv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Papildus informācija: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP serveris atgrieza kļūdu: %1 %2\n"
+"LDAP URL bija: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP pieteikšanās"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "vietne:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Nederīga autorizācijas informācija"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP pieslēgšanās atcelta."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldif analizators cieta neveiksmi."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Nederīga Ldif rinda failā %1."
--- /dev/null
+# translation of libkldap.po to Latvian
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Viesturs Zarins <viesturs.zarins@mii.lu.lv>, 2007, 2008.
+# Viesturs Zariņš <viesturs.zarins@mii.lu.lv>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2009-06-01 20:03+0300\n"
+"Last-Translator: Viesturs Zariņš <viesturs.zarins@mii.lu.lv>\n"
+"Language-Team: Latvian <locale@laka.lv>\n"
+"Language: lv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Nav LDAP atbalsta..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Gadījās kļūda savienojuma inicializācijas fāzē."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Nizdevās uzstādīt protokola versiju uz %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Neizdevās iestatīt noildzi uz %1 sekundi."
+msgstr[1] "Neizdevās iestatīt noildzi uz %1 sekundēm."
+msgstr[2] "Neizdevās iestatīt noildzi uz %1 sekundēm."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "Neizdodas inicializēt SASL klientu."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Nav pieejams TLS atbalsts LDAP klienta bibliotēkās."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Neizdodas iestatīt izmēra ierobežojumu."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Neizdodas izstādīt laika ierobežojumu."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Neizdodas inicializēt SASL klientu."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP atbalsts nav iekompilēts. Lūdzu pāromilējiet libkldap ar OpenLDAP (vai "
+"savietojamu) klienta bibliotēku, vai sūdzieties jūsu distribūcijas "
+"pakotājiem."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Neizdevās piekļūt serverim. Lūdzu konfigurējiet to."
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Serveris:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Lietotājs:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Piesaistīt DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Realms:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Parole:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Serveris:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Ports:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP versija:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Noklusētais"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Izmēra ierobežojums:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Noklusētais"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Laika ierobežojums:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Bez lapošanas"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Lapas izmērs:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Apjautāt serveri"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtrs:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Nav"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Drošība"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonīms"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Vienkārša"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Autentificēšana"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL mehānisms:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP pieprasījums"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP versija:"
+
+#~ msgid "Attribute"
+#~ msgstr "Attribūts"
+
+#~ msgid "Value"
+#~ msgstr "Vērtība"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Identifikācijas nosaukums"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL atbalsts nav pieejams. Lūdzu pārkompilējiet libkldap ar Cyrus-SASL "
+#~ "(vai savietojamu) klienta bibliotēku, vai sūdzieties jūsu distribūcijas "
+#~ "pakotājiem."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP operācijas kļūda"
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Chetan Khona <chetan@kompkin.com>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2013-03-13 15:24+0530\n"
+"Last-Translator: Chetan Khona <chetan@kompkin.com>\n"
+"Language-Team: Marathi <kde-i18n-doc@kde.org>\n"
+"Language: mr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "एलडीएपी प्रवेश"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "साइट :"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "अवैध प्रमाणीकरण माहिती."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr ""
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr ""
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr ""
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Chetan Khona <chetan@kompkin.com>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2013-03-13 15:17+0530\n"
+"Last-Translator: Chetan Khona <chetan@kompkin.com>\n"
+"Language-Team: Marathi <kde-i18n-doc@kde.org>\n"
+"Language: mr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr ""
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "यजमान :"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "वापरकर्ता:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "बाइंड डीएन :"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "रीयल्म :"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "गुप्तशब्द :"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "यजमान :"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "पोर्ट :"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "एलडीएपी आवृत्ती :"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "मूलभूत"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "आकार मर्यादा :"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " सेकंद"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "मूलभूत"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "वेळ मर्यादा :"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "पेजिंग नाही"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "पान आकार :"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "प्रश्न सर्व्हर"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "गाळणी :"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "नाही"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "टीएलएस"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "सुरक्षा"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "निनावी"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "साधी"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "एसएएसएल"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "अधिप्रमाणन"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "एसएएसएल मेकेनिज़्म :"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "एलडीएपी प्रश्न"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "एलडीएपी आवृत्ती :"
+
+#~ msgid "Attribute"
+#~ msgstr "विशेषता"
+
+#~ msgid "Value"
+#~ msgstr "मूल्य"
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "एलडीएपी ऑपरेशन त्रुटि"
--- /dev/null
+# Translation of kio_ldap to Norwegian Bokmål
+#
+# Nils Kristian Tomren <slx@nilsk.net>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-10-07 15:46+0200\n"
+"Last-Translator: MagicPO 0.3 (automated)\n"
+"Language-Team: Norwegian Bokmål <l10n-no@lister.huftis.org>\n"
+"Language: nb\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: MagicPO 0.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Ekstra informasjon:"
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP-tjeneren gav feilen: %1 %2\n"
+"LDAP-stien var: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP innlogging"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "side:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Ugyldig autentiseringsinformasjon"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP-tilkobling avbrutt."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldiffortolkeren feilet."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Ugyldig Ldif-fil på linje %1."
--- /dev/null
+# Translation of libkldap5 to Norwegian Bokmål
+#
+# Bjørn Steensrud <bjornst@skogkatt.homelinux.org>, 2007, 2008, 2009, 2010, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2014-09-23 22:05+0200\n"
+"Last-Translator: Bjørn Steensrud <bjornst@skogkatt.homelinux.org>\n"
+"Language-Team: Norwegian Bokmål <l10n-no@lister.huftis.org>\n"
+"Language: nb\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.5\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Ingen LDAP-støtte"
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Det oppsto en feil mens tilkoblingen ble klargjort."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Klarte ikke sette protokollversjon til %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Klarte ikke sette tidsgrense til %1 sekund."
+msgstr[1] "Klarte ikke sette tidsgrense til %1 sekunder."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS-støtte finnes ikke i LDAP klientbibliotekene."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Kan ikke sette størrelsesgrense."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Kan ikke sette tidsgrense."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Kan ikke klargjøre SASL-klienten."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP-støtte er ikke kompilert inn. Rekompiler libkldap med klientbiblioteker "
+"fra OpenLDAP (eller kompatible), eller klag til den som pakker "
+"distribusjonen."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Får ikke tilgang til tjeneren. Endre oppsettet på den."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Bruker:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Område:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Passord:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Vert:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP-versjon:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Standard"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Størrelsesgrense:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Standard"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Tidsgrense:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Ingen sideveksling"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Sidestørrelse:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Spør tjener"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Ingen"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonym"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Enkel"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL-mekanisme:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Ukjent feil ved kobling til %1"
--- /dev/null
+# Translation of kio_ldap.po to Low Saxon
+#
+# Sönke Dibbern <s_dibbern@web.de>, 2005, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-03-25 23:59+0200\n"
+"Last-Translator: Sönke Dibbern <s_dibbern@web.de>\n"
+"Language-Team: Low Saxon <kde-i18n-nds@kde.org>\n"
+"Language: nds\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Mehr Informatschonen: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"De LDAP-Server geev dissen Fehler torüch: %1 %2\n"
+"De LDAP-URL weer: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP-Anmellen"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "Server:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Anmell-Informatschonen gellt nich"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP-Verbinnen afbraken."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "De LDIF-Inleser hett keen Spood hatt."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "LDIF-Datei gellt nich, Reeg %1"
--- /dev/null
+# Translation of libkldap.po to Low Saxon
+# translation of libkldap.po to Low Saxon
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# Sönke Dibbern <s_dibbern@web.de>, 2007, 2008, 2009, 2014.
+# Manfred Wiese <m.j.wiese@web.de>, 2009, 2010, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2014-06-05 16:27+0200\n"
+"Last-Translator: Sönke Dibbern <s_dibbern@web.de>\n"
+"Language-Team: Low Saxon <kde-i18n-nds@kde.org>\n"
+"Language: nds\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "LDAP warrt nich ünnerstütt..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Dat geev en Fehler bi't Torechtmaken vun't Tokoppeln."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Protokoll-Verschoon lett sik nich op %1 setten."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Tietgrenz lett sik nich op een Sekunn fastleggen."
+msgstr[1] "Tietgrenz lett sik nich op %1 Sekunnen fastleggen."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "De SASL-Client lett sik nich torechtmaken."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "De LDAP-Clientbibliotheken ünnerstütt keen TLS."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Gröttgrenz lett sik nich fastleggen."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Tietgrenz lett sik nich fastleggen."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "De SASL-Client lett sik nich torechtmaken."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Keen Ünnerstütten för LDAP inbuut. Kompileer \"libkldap\" bitte nochmaal mit "
+"de Client-Bibliotheken vun OpenLDAP (oder mit anner, kompatibel "
+"Bibliotheken), oder snack dor de Paketmakers vun Dien Distributschoon op an."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Keen Togriep op Server. Bitte nieg instellen."
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Reekner:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Bruker:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Anbinn-DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Rebeet:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Passwoort:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Reekner:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP-Verschoon:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Standard"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Gröttgrenz:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Standard"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Tietgrenz:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Nich opspleten"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Siedengrött:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Anfraag-Server"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Keen"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Sekerheit"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonüm"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Eenfach"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Identiteetprööv"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL-Metood:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP-Anfraag"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Nich begäng Fehler bi't Tokoppeln na %1"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP-Verschoon:"
+
+#~ msgid "Attribute"
+#~ msgstr "Attribut"
+
+#~ msgid "Value"
+#~ msgstr "Weert"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Kennnaam (DN)"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Dat gifft keen Ünnerstütten för SASL. Kompileer \"libkldap\" bitte "
+#~ "nochmaal mit de Client-Bibliotheken vun Cyrus-SASL (oder mit anner, "
+#~ "kompatibel Bibliotheken), oder snack dor de Paketmakers vun Dien "
+#~ "Distributschoon op an."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP-Akschoonfehler"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Dutch "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+&Otto.Bruggeman;&Rinse.Devries;
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> is het lichtgewicht directory acces protocol. Het biedt toegang tot een X.500-directory of naar een alleenstaande <acronym
+>LDAP</acronym
+>-server.</para>
+
+<para
+>U kunt deze io-slave als volgt gebruiken:</para>
+
+<para
+><userinput
+>ldap://host:poort/ou=People,o=waar,c=de??sub</userinput
+> voor een zoekopdracht in een sub-boomstructuur</para>
+
+<para
+>of <userinput
+>ldap://host:poort/cn=MM,ou=People,o=waar,c=de??basis</userinput
+> voor een complete boomstructuur.</para>
+
+</article>
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Freek de Kruijf <freekdekruijf@kde.nl>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2016-04-04 12:51+0200\n"
+"Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
+"Language-Team: Dutch <kde-i18n-nl@kde.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Aanvullende informatie: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"De LDAP-server gaf de volgende foutmelding: %1 %2\n"
+"Het URL-adres van LDAP was: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP-login"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "site:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Ongeldige autorisatie-informatie."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP-verbinding geannuleerd."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "De LDIF-ontleding is mislukt."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Ongeldig LDIF-bestand op regel %1."
--- /dev/null
+# translation of libkldap.po to Nederlands
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Bram Schoenmakers <bramschoenmakers@kde.nl>, 2007.
+# Rinse de Vries <rinsedevries@kde.nl>, 2007.
+# Antoon Tolboom <atolboo@casema.nl>, 2008.
+# Freek de Kruijf <freekdekruijf@kde.nl>, 2010, 2014, 2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-28 17:00+0200\n"
+"Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
+"Language-Team: \n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 21.04.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Geen LDAP-ondersteuning..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Er deed zich een fout voor bij het opzetten van de verbinding."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Kan de protocolversie niet instellen op %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Kan de tijdslimiet niet instellen op %1 seconde."
+msgstr[1] "Kan de tijdslimiet niet instellen op %1 seconden."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Kon CA certificaatbestand niet instellen."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Ongeldige TLS vereiste certificaatmodus."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Kon TLS vereiste certificaatmodus niet instellen."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Kon nieuwe TLS-context niet initialiseren."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+"TLS-ondersteuning is niet beschikbaar in de LDAP-bibliotheken op de client."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Kan de maximale grootte niet instellen."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Kan de tijdslimiet niet instellen."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Kan de SASL-client niet initialiseren."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP-ondersteuning is niet meegecompileerd. Compileer libkldap opnieuw met "
+"de OpenLDAP clientbibliotheken (of die daarmee compatibel zijn), of meld dit "
+"aan uw distributie."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Kan de server niet benaderen. Doe een herconfiguratie."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Host toevoegen"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"LDAP-wachtwoord is opgeslagen als leesbare tekst, wilt u het opslaan in "
+"kwallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Wachtwoord in leesbare tekst opslaan in portefeuille"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Host bewerken"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Wilt u de instellingen voor host \"%1\" verwijderen?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Host verwijderen"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Selecteer alle servers die zouden moeten worden gebruikt:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "Host toevoege&n..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "Host b&ewerken..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Host ve&rwijderen"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Gebruiker:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Domein:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Wachtwoord:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Hostnaam:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Poort:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP-versie:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Standaard"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Maximale grootte:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sec"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Standaard"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Tijdslimiet:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Geen paging"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Pagegrootte:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Queryserver"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Nee"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Beveiliging:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anoniem"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Eenvoudig"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Authenticatie:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL-mechanisme:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Server controleren"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP-query"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Onbekende fout bij verbinden met %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP-servers"
+
+#~ msgid "Attribute"
+#~ msgstr "Attribuut"
+
+#~ msgid "Value"
+#~ msgstr "Waarde"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Unieke naam"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL-ondersteuning is niet meegecompileerd. Compileer libkldap opnieuw "
+#~ "met de Cyrus-SASL clientbibliotheken (of die daarmee compatibel zijn), of "
+#~ "meld dit aan uw distributeur."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP afhandelingsfout"
+
+#~ msgid "kcmldap"
+#~ msgstr "kcmldap"
+
+#~ msgid "LDAP Server Settings"
+#~ msgstr "LDAP-serverinstellingen"
+
+#~ msgid "(c) 2009 - 2010 Tobias Koenig"
+#~ msgstr "(c) 2009 - 2010 Tobias Koenig"
+
+#~ msgid "Tobias Koenig"
+#~ msgstr "Tobias Koenig"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Title"
+#~ msgstr "Titel"
+
+#~ msgid "Full Name"
+#~ msgstr "Volledige naam"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Email"
+#~ msgstr "E-mail"
+
+#~ msgid "Home Number"
+#~ msgstr "Telefoon privé"
+
+#~ msgid "Work Number"
+#~ msgstr "Telefoon werk"
+
+#~ msgid "Mobile Number"
+#~ msgstr "Mobiele telefoon"
+
+#~ msgid "Fax Number"
+#~ msgstr "Faxnummer"
+
+#~ msgid "Pager"
+#~ msgstr "Semafoon"
+
+#~ msgid "Street"
+#~ msgstr "Straat"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "State"
+#~ msgstr "Staat"
+
+#~ msgid "Country"
+#~ msgstr "Land"
+
+#~ msgid "City"
+#~ msgstr "Stad"
+
+#~ msgid "Organization"
+#~ msgstr "Organisatie"
+
+#~ msgid "Company"
+#~ msgstr "Bedrijf"
+
+#~ msgid "Department"
+#~ msgstr "Afdeling"
+
+#~ msgid "Zip Code"
+#~ msgstr "Postcode"
+
+#~ msgid "Postal Address"
+#~ msgstr "Postadres"
+
+#~ msgid "Description"
+#~ msgstr "Beschrijving"
+
+#~ msgid "User ID"
+#~ msgstr "Gebruikers-id"
+
+#~ msgctxt "Search attribute: Name of contact"
+#~ msgid "Name"
+#~ msgstr "Naam"
+
+#~ msgctxt "Search attribute: Email of the contact"
+#~ msgid "Email"
+#~ msgstr "E-mail"
+
+#~ msgctxt "@title:column Column containing email addresses"
+#~ msgid "Email"
+#~ msgstr "E-mail"
+
+#~ msgctxt ""
+#~ "@title:column Column containing the residential state of the address"
+#~ msgid "State"
+#~ msgstr "Staat"
+
+#~ msgctxt "@title:column Column containing title of the person"
+#~ msgid "Title"
+#~ msgstr "Titel"
+
+#~ msgid "Import Contacts from LDAP"
+#~ msgstr "Contactpersonen uit LDAP importeren"
+
+#~ msgid "Search for Addresses in Directory"
+#~ msgstr "Zoeken naar adressen in map"
+
+#~ msgid "Search for:"
+#~ msgstr "Zoeken naar:"
+
+#~ msgctxt "In LDAP attribute"
+#~ msgid "in"
+#~ msgstr "in"
+
+#~ msgctxt "@item:inlistbox Name of the contact"
+#~ msgid "Name"
+#~ msgstr "Naam"
+
+#~ msgctxt "@item:inlistbox email address of the contact"
+#~ msgid "Email"
+#~ msgstr "E-mail"
+
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Home Number"
+#~ msgstr "Telefoon privé"
+
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Work Number"
+#~ msgstr "Telefoon werk"
+
+#~ msgid "Stop"
+#~ msgstr "Stoppen"
+
+#~ msgctxt "@action:button Start searching"
+#~ msgid "&Search"
+#~ msgstr "&Zoeken"
+
+#~ msgid "Recursive search"
+#~ msgstr "Recursieve zoekactie"
+
+#~ msgid "Contains"
+#~ msgstr "Bevat"
+
+#~ msgid "Starts With"
+#~ msgstr "Begint met"
+
+#~ msgid "Select All"
+#~ msgstr "Alles selecteren"
+
+#~ msgid "Unselect All"
+#~ msgstr "Alles deselecteren"
+
+#~ msgid "Add Selected"
+#~ msgstr "Selectie toevoegen"
+
+#~ msgid "Configure LDAP Servers..."
+#~ msgstr "LDAP-servers instellen..."
+
+#~ msgid "You must select an LDAP server before searching."
+#~ msgstr "U moet een LDAP-server selecteren alvorens te gaan zoeken."
+
+#~ msgctxt "arguments are host name, datetime"
+#~ msgid "Imported from LDAP directory %1 on %2"
+#~ msgstr "Geïmporteerd van LDAP-map %1 op %2"
+
+#~ msgid "Configure the Address Book LDAP Settings"
+#~ msgstr "De LDAP-instellingen voor uw adresboek configureren"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Freek de Kruijf"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "freekdekruijf@kde.nl"
--- /dev/null
+# Translation of kio_ldap to Norwegian Nynorsk
+#
+# Gaute Hvoslef Kvalnes <gaute@verdsveven.com>, 2004, 2005.
+# Eirik U. Birkeland <eirbir@gmail.com>, 2008.
+# Karl Ove Hufthammer <karl@huftis.org>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2008-08-03 19:24+0200\n"
+"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
+"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
+"Language: nn\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Meir informasjon: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP-tenaren returnerte feilen: %1 %2\n"
+"LDAP-adressa var: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP-brukarnamn"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "stad:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Ugyldige autorisasjonsopplysningar."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP-tilkoplinga vart avbroten."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "LDIF-tolkaren mislukkast."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Ugyldig LDIF-fil i linje %1."
--- /dev/null
+# Translation of libkldap5 to Norwegian Nynorsk
+#
+# Karl Ove Hufthammer <karl@huftis.org>, 2008, 2020, 2022.
+# Eirik U. Birkeland <eirbir@gmail.com>, 2008, 2009, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2022-06-19 14:02+0200\n"
+"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
+"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
+"Language: nn\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 22.04.2\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Inga støtte for LDAP …"
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Det oppstod ein feil under oppstart av tilkoplinga."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Klarar ikkje velja protokollversjon %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Klarar ikkje setja tidsgrensa til %1 sekund."
+msgstr[1] "Klarar ikkje setja tidsgrensa til %1 sekund."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Klarte ikkje velja sertifikatfil for sertifiseringsinstans."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Ugyldig kravmodus for TLS-sertifikat."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Klarte ikkje definera kravmodus for TLS-sertifikat."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Klarte ikkje gjera klar ny TLS-kontekst."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS-støtte er ikkje tilgjengeleg i LDAP-klientbiblioteka."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Klarar ikkje velja storleiksgrense."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Klarar ikkje velja tidsgrense."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Klarar ikkje starta SASL-klienten."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP-støtte er ikkje innkompilert. Kompiler libkldap på nytt med "
+"klientbiblioteka OpenLDAP (eller tilsvarande), eller klag til dei som har "
+"pakka distribusjonen."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Får ikkje tilgang til tenaren. Prøv å setja han opp på nytt."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Legg til vert"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr "LDAP-passordet vert lagra som reintekst. Vil du lagra det i KWallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Lagra reintekst-passord i lommebok"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Rediger vert"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Ønskjer du å fjerna innstillingane for verten «%1»?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Fjern vert"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Kryss av for alle tenarane som skal brukast:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Legg til vert …"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Rediger vert …"
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Fjern vert"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Brukar:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind-DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Område:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Passord:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Vert:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP-versjon:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Standard"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Storleiksgrense:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Standard"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Tidsgrense:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Inga paginering"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Sidestorleik:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Spør tenar"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Nei"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Tryggleik:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonym"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Enkel"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Autentisering:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL-mekanisme:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Kontroller tenar"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP-spørjing"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Ukjend feil ved kopling til %1"
--- /dev/null
+# translation of kio_ldap.po to Punjabi
+# Amanpreet Singh Alam <aalam@redhat.com>, 2004, 2005.
+# Amanpreet Singh Brar <aalam@redhat.com>, 2005.
+# AP S Alam <aalam@users.sf.net>, 2007.
+# A S Alam <aalam@users.sf.net>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-08-06 21:07+0530\n"
+"Last-Translator: A S Alam <aalam@users.sf.net>\n"
+"Language-Team: Punjabi <punjabi-l10n@users.sf.net>\n"
+"Language: pa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"\n"
+"\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"ਹੋਰ ਜਾਣਕਾਰੀ: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP ਸਰਵਰ ਨੇ ਇਹ ਗਲਤੀ ਭੇਜੀ ਹੈ: %1 %2\n"
+"LDAP URL ਸੀ: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP ਲਾਗਇਨ"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "ਸਾਇਟ:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "ਗਲਤ ਪਰਮਾਣਕਤਾ ਜਾਣਕਾਰੀ ਹੈ।"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP ਕੁਨੈਕਸ਼ਨ ਰੱਦ ਕੀਤਾ ਗਿਆ।"
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldif ਪਾਰਸਰ ਅਸਫ਼ਲ ਹੈ।"
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "%1 ਲਾਇਨ ਵਿੱਚ ਗਲਤ Ldif ਫਾਇਲ ਹੈ।"
--- /dev/null
+# translation of libkldap.po to Punjabi
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# A S Alam <aalam@users.sf.net>, 2007, 2009.
+# ASB <aalam@users.sf.net>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2009-01-20 09:03+0530\n"
+"Last-Translator: A S Alam <aalam@users.sf.net>\n"
+"Language-Team: Punjabi <punjabi-l10n@users.sf.net>\n"
+"Language: pa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "ਕੋਈ LDAP ਸਹਿਯੋਗ ਨਹੀਂ..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "ਹੋਸਟ:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "ਹੋਸਟ:"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgid "&Add Host..."
+msgstr "ਹੋਸਟ:"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "ਯੂਜ਼ਰ:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "ਰੀਲੇਅ:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "ਪਾਸਵਰਡ:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "ਹੋਸਟ:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "ਪੋਰਟ:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP ਵਰਜਨ:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "ਡਿਫਾਲਟ"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "ਆਕਾਰ ਲਿਮਟ:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " ਸਕਿੰਟ"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "ਡਿਫਾਲਟ"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "ਸਮਾਂ ਲਿਮਟ:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "ਪੇਜ਼ਿੰਗ ਨਹੀਂ"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "ਸਫ਼ਾ ਆਕਾਰ:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "ਕਿਊਰੀ ਸਰਵਰ"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "ਫਿਲਟਰ:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "ਨਹੀਂ"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "ਸੁਰੱਖਿਆ"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "ਅਗਿਆਤ"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "ਸੈਂਪਲ"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "ਪਰਮਾਣਕਿਤਾ"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL ਢੰਗ:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP ਕਿਊਰੀ"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP ਵਰਜਨ:"
+
+#~ msgid "Attribute"
+#~ msgstr "ਗੁਣ"
+
+#~ msgid "Value"
+#~ msgstr "ਮੁੱਲ"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "ਹੋਸਟਹੋਸਟਹੋਸਟਹੋਸਟਹੋਸਟ"
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP ਓਪਰੇਸ਼ਨ ਗਲਤੀ"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "LDAP ਵਰਜਨ:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "ਯੂਜ਼ਰ:"
--- /dev/null
+# translation of kio_ldap.po to
+# Krzysztof Lichota <lichota@mimuw.edu.pl>, 2004, 2005.
+# Marta Rybczyńska <kde-i18n@rybczynska.net>, 2007.
+# Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>, 2019.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2019-01-20 07:31+0100\n"
+"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
+"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 19.03.70\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Dodatkowe informacje: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Serwer LDAP zwrócił błąd: %1 %2\n"
+"Użyty URL LDAP: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Logowanie LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "serwer:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Błędne dane autoryzacji."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Porzucono połączenie LDAP."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Analizator składni Ldif zakończył pracę z błędem."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Błędny plik Ldif w wierszu %1."
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>, 2014, 2017, 2018, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-08-08 09:01+0200\n"
+"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
+"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 20.12.1\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Brak obsługi LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Podczas fazy inicjacji połączenia nastąpił błąd."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Nie można ustawić wersji protokołu na %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Nie można ustawić ograniczenia czasowego na %1 sekundę."
+msgstr[1] "Nie można ustawić ograniczenia czasowego na %1 sekundy."
+msgstr[2] "Nie można ustawić ograniczenia czasowego na %1 sekund."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Nie można ustawić pliku certyfikatu CA."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Nieprawidłowy tryb TLS żądania certyfikatu."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Nie można ustawić trybu TLS żądania certyfikatu."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Nie można zainicjować nowego kontekstu TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Obsługa TLS jest niedostępna w bibliotekach klienta LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Nie można ustawić ograniczenia rozmiaru."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Nie można ustawić ograniczenia czasowego."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Nie można zainicjować klienta SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Obsługa LDAP nie została wkompilowana. Proszę ponownie skompilować z "
+"bibliotekami klienta OpenLDAP (lub zgodnymi) lub zgłosić problem autorom "
+"swojej dystrybucji."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Nie można uzyskać dostępu do serwera. Proszę ustawić go ponownie."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Dodaj gospodarza"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"Hasło LDAP jest przechowywane jako zwykły tekst, czy zapisać je zamiast tego "
+"w portfelu?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Przechowuj hasło jako zwykły tekst w Portfelu"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Zmień gospodarza"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Czy usunąć ustawienia dla gospodarza \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Usuń gospodarza"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Sprawdź wszystkie serwery, które powinny być użyte:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "Dod&aj gospodarza..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "Zmi&eń gospodarza..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Usuń gospoda&rza"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Użytkownik:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Powiązane DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Dziedzina:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Hasło:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Gospodarz:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Wersja LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Domyślny"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Ograniczenie rozmiaru:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek."
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Domyślne"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Ograniczenie czasowe:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Bez stronicowania"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Rozmiar strony:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Serwer zapytań"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtr:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Nie"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Bezpieczeństwo:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonimowe"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Proste"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Uwierzytelnianie:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mechanizm SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Sprawdź serwer"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Zapytanie LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Nieznany błąd przy łączeniu do %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "Serwery LDAP"
+
+#~ msgid "Attribute"
+#~ msgstr "Atrybut"
+
+#~ msgid "Value"
+#~ msgstr "Wartość"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Wyróżniona nazwa (DN)"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Brak obsługi SASL. Proszę ponownie skomplikować libkldap z bibliotekami "
+#~ "klienta Cyrus-SASL (lub zgodnymi) lub zgłosić problem autorom swojej "
+#~ "dystrybucji."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Błąd operacji LDAP"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Portuguese "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+><firstname
+>José</firstname
+><surname
+>Pires</surname
+><affiliation
+><address
+><email
+>zepires@gmail.com</email
+></address
+></affiliation
+><contrib
+>Tradução</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+>O <acronym
+>LDAP</acronym
+> é o protocolo simples de acesso a directórios. Providencia o acesso a um directório de X.500 ou a um servidor de <acronym
+>LDAP</acronym
+> autónomo.</para>
+
+<para
+>Poderá usar o 'kioslave' de LDAP da seguinte maneira:</para>
+
+<para
+><userinput
+>ldap://maquina:porto/ou=Pessoas,o=onde,c=de??sub</userinput
+> para uma pesquisa na sub-árvore.</para>
+
+<para
+>ou <userinput
+>ldap://maquina:porto/cn=MM,ou=Pessoas,o=onde,c=de??base</userinput
+> para um ramo completo.</para>
+
+</article>
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2016-04-04 11:45+0000\n"
+"Last-Translator: José Nuno Coelho Pires <zepires@gmail.com>\n"
+"Language-Team: Portuguese <kde-i18n-pt@kde.org>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Informação adicional: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"O servidor LDAP devolveu o seguinte erro: %1 %2\n"
+"O URL de LDAP era: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Ligação LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "máquina:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Informação de autorização inválida."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "A ligação de LDAP foi cancelada."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "O processador de LDIF falhou."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "O ficheiro LDIF tem dados inválidos na linha %1."
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-24 20:14+0100\n"
+"Last-Translator: José Nuno Coelho Pires <zepires@gmail.com>\n"
+"Language-Team: Portuguese <kde-i18n-doc@kde.org>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-POFile-SpellExtra: DN OpenLDAP libkldap Cyrus Koenig Pager kcmldap AC\n"
+"X-POFile-SpellExtra: KWallet\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Sem Suporte para LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Ocorreu um erro na fase de inicialização da ligação."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Não é possível configurar a versão do protocolo como %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Não foi possível modificar o tempo-limite para %1 segundo."
+msgstr[1] "Não foi possível modificar o tempo-limite para %1 segundos."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Não foi possível definir o ficheiro do certificado da AC."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "O modo do pedido de certificado TLS é inválido."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Não foi possível definir o modo de pedido de certificado TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Não foi possível inicializar um novo contexto de TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "O suporte de TLS não está disponível nas bibliotecas-clientes do LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Não foi possível colocar limite de tamanho."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Não foi possível colocar limite de tempo."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Não é possível inicializar o cliente de SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"O suporte para LDAP não foi integrado na compilação. Compile de novo a "
+"libkldap com as bibliotecas-clientes do OpenLDAP (ou compatível), ou peça-o "
+"aos criadores de pacotes da sua distribuição."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Não é possível aceder ao servidor. Reconfigure-o, por favor."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Adicionar uma Máquina"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"A senha de LDAP é guardada em texto simples; deseja guardá-la no KWallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Guardar a senha em texto simples no KWallet"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Editar a Máquina"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Deseja remover a definição da máquina \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Remover a Máquina"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Assinale todos os servidores que deverá usar:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Adicionar uma Máquina..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Editar a Máquina..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Remover a Máquina"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Utilizador:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "DN de ligação:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Reino:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Senha:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Máquina:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Porto:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Versão LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Predefinição"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Limite de tamanho:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Predefinição"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Limite de tempo:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Sem paginação"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Tamanho da página:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Procurar no Servidor"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Não"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Segurança:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anónimo"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Simples"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Autenticação:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mecanismo SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Verificar o servidor"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Pesquisa LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Ocorreu um erro desconhecido ao ligar-se a %1"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Brazilian-Portuguese "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+><firstname
+>Lisiane</firstname
+> <surname
+>Sztoltz</surname
+><affiliation
+><address
+> <email
+>lisiane@conectiva.com.br</email
+></address
+></affiliation
+><contrib
+>Tradução</contrib
+></othercredit
+><othercredit role="translator"
+><firstname
+>André Marcelo</firstname
+><surname
+>Alvarenga</surname
+><affiliation
+><address
+><email
+>andrealvarenga@gmx.net</email
+></address
+></affiliation
+><contrib
+>Revisão da tradução</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+>O <acronym
+>ldap</acronym
+> é um protocolo de acesso a serviço de diretório, e fornece acesso a um diretório X.500, ou a um servidor <acronym
+>LDAP</acronym
+> independente.</para>
+
+<para
+>Você pode usar o kioslave do ldap da seguinte forma:</para>
+
+<para
+><userinput
+>ldap://máquina:porta/ou=People,o=onde,c=br??sub</userinput
+> para uma consulta pela subárvore</para>
+
+<para
+>ou <userinput
+>ldap://máquina:porta/cn=MM,ou=People,o=onde,c=br??base</userinput
+> para uma ramificação completa.</para>
+
+</article>
--- /dev/null
+# Translation of kio_ldap.po to Brazilian Portuguese
+# Copyright (C) 2016 This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# André Marcelo Alvarenga <alvarenga@kde.org>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2016-04-04 23:22-0300\n"
+"Last-Translator: André Marcelo Alvarenga <alvarenga@kde.org>\n"
+"Language-Team: Brazilian Portuguese <kde-i18n-pt_br@kde.org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Informações adicionais: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"O servidor LDAP retornou o seguinte erro: %1 %2\n"
+"A URL do LDAP era o seguinte: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Login do LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "site:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Informações de autorização inválidas."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Conexão LDAP cancelada."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "O analisador de Ldif falhou."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Arquivo Ldif inválido na linha %1."
--- /dev/null
+# Translation of libkldap5.po to Brazilian Portuguese
+# Copyright (C) 2007-2018 This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Diniz Bortolotto <diniz.bortolotto@gmail.com>, 2007.
+# André Marcelo Alvarenga <alvarenga@kde.org>, 2008, 2009, 2010, 2014, 2018.
+# Luiz Fernando Ranghetti <elchevive@opensuse.org>, 2010, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap5\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-08-04 10:44-0300\n"
+"Last-Translator: Luiz Fernando Ranghetti <elchevive@opensuse.org>\n"
+"Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 21.04.3\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Sem suporte ao LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Ocorreu um erro durante a fase de inicialização da conexão."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Não foi possível definir a versão do protocolo para %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Não foi possível definir o tempo de espera para %1 segundo."
+msgstr[1] "Não foi possível definir o tempo de espera para %1 segundos."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Não foi possível definir o arquivo de certificado da AC."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "O modo da requisição de certificado TLS é inválido."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Não foi possível definir o modo de requisição de certificado TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Não foi possível inicializar um novo contexto de TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "O suporte ao TLS não está disponível nas bibliotecas do cliente LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Não foi possível definir o limite de tamanho."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Não foi possível definir o limite de tempo."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Não foi possível inicializar o cliente SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"O suporte ao LDAP não foi incluído na compilação. Por favor, recompile a "
+"libkldap com as bibliotecas do cliente OpenLDAP (ou compatível), ou solicite "
+"aos criadores dos pacotes da sua distribuição."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Não foi possível acessar o servidor. Reconfigure-o."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Adicionar máquina"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"A senha LDAP está armazenada em texto simples. Deseja armazená-la no KWallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Armazenar a senha em texto simples na carteira"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Editar máquina"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Deseja remover a configuração da máquina \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Remover máquina"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Selecione todos os servidores que devem ser usados:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Adicionar máquina..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Editar máquina..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Remover máquina"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Usuário:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Associar ND:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Domínio:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Senha:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Máquina:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Porta:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Versão LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Padrão"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Limite de tamanho:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " s"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Padrão"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Limite de tempo:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Sem paginação"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Tamanho da página:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Procurar no servidor"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "ND:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Não"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Segurança:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anônimo"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Simples"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Autenticação:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mecanismo SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Verificar servidor"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Consulta LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Ocorreu um erro desconhecido ao conectar-se em %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "Servidores LDAP"
+
+#~ msgid "Attribute"
+#~ msgstr "Atributo"
+
+#~ msgid "Value"
+#~ msgstr "Valor"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Nome distinto"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "O suporte a SASL não está disponível. Por favor, recompile a libkldap com "
+#~ "as bibliotecas do cliente Cyrus-SASL (ou compatível), ou solicite aos "
+#~ "criadores dos pacotes da sua distribuição."
--- /dev/null
+# Traducerea kio_ldap.po în Română
+# Claudiu Costin <claudiuc@kde.org>, 2004.
+# Sergiu Bivol <sergiu@cip.md>, 2008.
+# translation of kio_ldap.po to Romanian
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2008-03-14 16:09+0200\n"
+"Last-Translator: Sergiu Bivol <sergiu-bivol@mail.md>\n"
+"Language-Team: Română <kde-i18n-ro@kde.org>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Informație sulimentară:"
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Serverul LDAP a returnat următoarea eroare: %1 %2\n"
+"URL-ul LDAP a fost: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Autentificare LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "sit:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Informații de autorizare eronate."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Conexiune LDAP revocată."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Analizorul LDIF a eșuat."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Fișier LDIF eronat la linia %1."
--- /dev/null
+# translation of libkldap to Romanian
+# Copyright (C) 2008 This_file_is_part_of_KDE
+# This file is distributed under the same license as the libkldap package.
+# Laurenţiu Buzdugan <lbuz@rolix.org>, 2008".
+# Sergiu Bivol <sergiu@cip.md>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2009-01-05 10:56+0200\n"
+"Last-Translator: Sergiu Bivol <sergiu@ase.md>\n"
+"Language-Team: Romanian <kde-i18n-ro@lists.kde.org>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Niciun suport LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Imposibil de stabilit versiunea protocolului la %1."
+
+#: core/ldapconnection.cpp:257
+#, fuzzy, kde-format
+#| msgid "Cannot set timeout to %1 seconds."
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Imposibil de stabilit temporizarea la %1 secunde."
+msgstr[1] "Imposibil de stabilit temporizarea la %1 secunde."
+msgstr[2] "Imposibil de stabilit temporizarea la %1 secunde."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "Imposibil de inițializat clientul SASL."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+"Suportul pentru TLS nu este disponibil în bibliotecile clientului LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Imposibil de stabilit limita de dimensiune."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Imposibil de stabilit limita de timp."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Imposibil de inițializat clientul SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Gazdă:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Gazdă:"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgid "&Add Host..."
+msgstr "Gazdă:"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Utilizator:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Domeniu:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Parolă:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Gazdă:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Versiune LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Implicită"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Limită dimensiune:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sec"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Implicită"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Limită de timp:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Fără paginare"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Dimensiune pagină:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Interoghează serverul"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtru:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Fără"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Securitate"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonim"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Simplă"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Autentificare"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mecanism SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Interogare LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "Versiune LDAP:"
+
+#~ msgid "Attribute"
+#~ msgstr "Atribut"
+
+#~ msgid "Value"
+#~ msgstr "Valoare"
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Eroare operații LDAP"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "Versiune LDAP:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Utilizator:"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Russian "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+><firstname
+></firstname
+><surname
+></surname
+><affiliation
+><address
+><email
+></email
+></address
+></affiliation
+><contrib
+></contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> — это простой протокол доступа к каталогам (lightweight directory access protocol). Он предоставляет доступ к каталогу X.500 или серверу <acronym
+>LDAP</acronym
+>.</para>
+
+<para
+>Вы можете использовать этот протокол так:</para>
+
+<para
+><userinput
+>ldap://host:port/ou=People,o=where,c=de??sub</userinput
+> (запрос поддерева)</para>
+
+<para
+>или так: <userinput
+>ldap://host:port/cn=MM,ou=People,o=where,c=de??base</userinput
+> (полная ветвь).</para>
+
+</article>
--- /dev/null
+# translation of kio_ldap.po into Russian
+#
+# Gregory Mokhin <mok@kde.ru>, 2005.
+# Andrey Cherepanov <skull@kde.ru>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2009-03-24 19:01+0300\n"
+"Last-Translator: Andrey Cherepanov <skull@kde.ru>\n"
+"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 0.3\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Дополнительная информация: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Ошибка сервера LDAP: %1 %2\n"
+"URL LDAP: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Вход в LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "сайт:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Неверные данные для идентификации."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Подключение к LDAP прервано."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ошибка обработки файла LDIF."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Неверный файл LDIF указан в строке %1."
+
+#~ msgid "Cannot set LDAP protocol version %1"
+#~ msgstr "Не удаётся задать версию протокола LDAP %1"
+
+#~ msgid "Cannot set size limit."
+#~ msgstr "Не удаётся задать предельный размер."
+
+#~ msgid "Cannot set time limit."
+#~ msgstr "Не удаётся задать лимит времени."
+
+#~ msgid "SASL authentication not compiled into the ldap ioslave."
+#~ msgstr ""
+#~ "Идентификация с помощью SASL не была включена при сборке ldap ioslave."
--- /dev/null
+# KDE3 - kdelibs/kdelibs.po Russian translation.
+# Copyright (C) 2005, KDE Russian translation team.
+#
+# Denis Perchine <dyp@perchine.com>, 2000.
+# Gregory Mokhin <mok@kde.ru>, 2000, 2004, 2005.
+# Albert R. Valiev <darkstar@altlinux.ru>, 2002.
+# Leonid Kanter <leon@asplinux.ru>, 2002-2004, 2005.
+# Nick Shafff <linux@l10n.org.ua>, 2004.
+# Andrey Cherepanov <sibskull@mail.ru>, 2005-2007.
+# Nick Shaforostoff <shafff@ukr.net>, 2006.
+# Andrey Cherepanov <skull@kde.ru>, 2009.
+# Alexander Potashev <aspotashev@gmail.com>, 2011, 2014.
+# Alexander Yavorsky <kekcuha@gmail.com>, 2018, 2020, 2021, 2022.
+msgid ""
+msgstr ""
+"Project-Id-Version: kdelibs\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2022-10-02 14:59+0300\n"
+"Last-Translator: Alexander Yavorsky <kekcuha@gmail.com>\n"
+"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 21.08.3\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Нет поддержки LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Ошибка при установлении подключения."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Невозможно установить версию протокола %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Невозможно установить время ожидания в %1 секунду."
+msgstr[1] "Невозможно установить время ожидания в %1 секунды."
+msgstr[2] "Невозможно установить время ожидания в %1 секунд."
+msgstr[3] "Невозможно установить время ожидания в 1 секунду."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Не удалось установить файл сертификата удостоверяющего центра."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Неверный режим TLS, требуемый сертификатом."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Не удалось установить требуемый сертификатом режим TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Не удалось инициализировать новый контекст TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Нет поддержки TLS в клиентских библиотеках LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Невозможно установить лимит размера."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Невозможно установить лимит времени."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Невозможно запустить клиент SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Нет поддержки LDAP. Соберите libkldap с библиотеками клиента OpenLDAP (или "
+"совместимыми) или попросите сделать это поставщика вашего дистрибутива."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Не удалось получить доступ к серверу, настройте его."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Добавление сервера"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"Пароль LDAP сохраняется в открытом виде, хотите хранить его в безопасном "
+"бумажнике KWallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Сохранение открытого пароля в бумажнике KDE"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Изменение конфигурации сервера"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Удалить конфигурацию для сервера «%1»?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Удаление сервера"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Выберите все серверы, которые должны быть использованы:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Добавить сервер..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Изменить сервер..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Удалить сервер"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Пользователь:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Роль:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Пароль:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Адрес сервера:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Порт:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Версия LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "По умолчанию"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Размер:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " с"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "По умолчанию"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Время:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Нет страничного обмена"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Размер страницы:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Получить с сервера"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Фильтр:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Нет"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Защита:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Анонимно"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Простая"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Аутентификация:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Механизм SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Проверьте сервер"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Запрос LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Неизвестная ошибка при подключении к %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "Серверы LDAP"
+
+#~ msgid "Attribute"
+#~ msgstr "Атрибут"
+
+#~ msgid "Value"
+#~ msgstr "Значение"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "DN"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Нет поддержки SASL. Соберите libkldap с библиотеками клиента Cyrus-SASL "
+#~ "(или совместимыми) или попросите сделать это поставщика вашего "
+#~ "дистрибутива."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Ошибка операции с LDAP"
+
+#, fuzzy
+#~| msgid "&Save Settings"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "&Сохранить параметры"
+
+#, fuzzy
+#~| msgid "(c) 2003 Tobias Koenig"
+#~ msgid "(c) 2009 - 2010 Tobias Koenig"
+#~ msgstr "(c) 2003 Tobias Koenig"
+
+#, fuzzy
+#~| msgid "(c) 2003 Tobias Koenig"
+#~ msgid "Tobias Koenig"
+#~ msgstr "(c) 2003 Tobias Koenig"
+
+#, fuzzy
+#~| msgid "Title:"
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Title"
+#~ msgstr "Заголовок:"
+
+#, fuzzy
+#~| msgid "Family Name"
+#~ msgid "Full Name"
+#~ msgstr "Фамилия"
+
+#, fuzzy
+#~| msgid "Email"
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Email"
+#~ msgstr "E-mail"
+
+#, fuzzy
+#~| msgid "Telephone Number"
+#~ msgid "Home Number"
+#~ msgstr "Номер телефона"
+
+#, fuzzy
+#~| msgid "of November"
+#~ msgid "Work Number"
+#~ msgstr "ноября"
+
+#, fuzzy
+#~| msgid "Middle Name"
+#~ msgid "Mobile Number"
+#~ msgstr "Отчество"
+
+#~ msgid "Pager"
+#~ msgstr "Пейджер"
+
+#~ msgid "Street"
+#~ msgstr "Улица"
+
+#, fuzzy
+#~| msgid "State"
+#~ msgctxt "@item LDAP search key"
+#~ msgid "State"
+#~ msgstr "Состояние"
+
+#~ msgid "Country"
+#~ msgstr "Страна"
+
+#~ msgid "City"
+#~ msgstr "Город"
+
+#~ msgid "Organization"
+#~ msgstr "Организация"
+
+#, fuzzy
+#~| msgid "Copy"
+#~ msgid "Company"
+#~ msgstr "Копировать"
+
+#~ msgid "Department"
+#~ msgstr "Отдел"
+
+#, fuzzy
+#~| msgid "Zipcode"
+#~ msgid "Zip Code"
+#~ msgstr "Индекс"
+
+#, fuzzy
+#~| msgid "Email Address"
+#~ msgid "Postal Address"
+#~ msgstr "Адрес электронной почты"
+
+#, fuzzy
+#~| msgid "Description:"
+#~ msgid "Description"
+#~ msgstr "Описание:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Пользователь:"
+
+#, fuzzy
+#~| msgid "Name"
+#~ msgctxt "Search attribute: Name of contact"
+#~ msgid "Name"
+#~ msgstr "Имя"
+
+#, fuzzy
+#~| msgid "Email"
+#~ msgctxt "Search attribute: Email of the contact"
+#~ msgid "Email"
+#~ msgstr "E-mail"
+
+#, fuzzy
+#~| msgid "Email"
+#~ msgctxt "@title:column Column containing email addresses"
+#~ msgid "Email"
+#~ msgstr "E-mail"
+
+#, fuzzy
+#~| msgid "State"
+#~ msgctxt ""
+#~ "@title:column Column containing the residential state of the address"
+#~ msgid "State"
+#~ msgstr "Состояние"
+
+#, fuzzy
+#~| msgid "Title:"
+#~ msgctxt "@title:column Column containing title of the person"
+#~ msgid "Title"
+#~ msgstr "Заголовок:"
+
+#, fuzzy
+#~| msgid "&Search:"
+#~ msgid "Search for:"
+#~ msgstr "&Поиск:"
+
+#, fuzzy
+#~| msgid "Win"
+#~ msgctxt "In LDAP attribute"
+#~ msgid "in"
+#~ msgstr "Win"
+
+#, fuzzy
+#~| msgid "Name"
+#~ msgctxt "@item:inlistbox Name of the contact"
+#~ msgid "Name"
+#~ msgstr "Имя"
+
+#, fuzzy
+#~| msgid "Email"
+#~ msgctxt "@item:inlistbox email address of the contact"
+#~ msgid "Email"
+#~ msgstr "E-mail"
+
+#, fuzzy
+#~| msgid "Telephone Number"
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Home Number"
+#~ msgstr "Номер телефона"
+
+#, fuzzy
+#~| msgid "of November"
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Work Number"
+#~ msgstr "ноября"
+
+#~ msgid "Stop"
+#~ msgstr "Стоп"
+
+#, fuzzy
+#~| msgid "&Search"
+#~ msgctxt "@action:button Start searching"
+#~ msgid "&Search"
+#~ msgstr "&Поиск"
+
+#, fuzzy
+#~| msgid "Recursive search for domains"
+#~ msgid "Recursive search"
+#~ msgstr "Рекурсивный поиск доменов"
+
+#, fuzzy
+#~| msgid "Contents"
+#~ msgid "Contains"
+#~ msgstr "Содержание"
+
+#~ msgid "Select All"
+#~ msgstr "Выделить все"
+
+#, fuzzy
+#~| msgid "Select All"
+#~ msgid "Unselect All"
+#~ msgstr "Выделить все"
+
+#, fuzzy
+#~| msgid "Selected"
+#~ msgid "Add Selected"
+#~ msgstr "Выделено"
+
+#, fuzzy
+#~| msgid "Configure S&hortcuts..."
+#~ msgid "Configure LDAP Servers..."
+#~ msgstr "&Комбинации клавиш..."
+
+#~ msgid "Editor Chooser"
+#~ msgstr "Редактор по умолчанию"
+
+#~ msgid ""
+#~ "Please choose the default text editing component that you wish to use in "
+#~ "this application. If you choose <B>System Default</B>, the application "
+#~ "will honor your changes in the Control Center. All other choices will "
+#~ "override that setting."
+#~ msgstr ""
+#~ "Выберите основной компонент редактирования текста, который вы хотите "
+#~ "использовать с этим приложением. Если вы выберете <B>По умолчанию</B>, "
+#~ "приложение будет соблюдать выбор, сделанный вами в Центре управления. Все "
+#~ "остальные варианты будут более приоритетны, чем установленный в Центре "
+#~ "управления параметр."
+
+#~ msgid "&Certificate"
+#~ msgstr "С&ертификат"
+
+#~ msgid "Alternate shortcut:"
+#~ msgstr "Альтернативная комбинация:"
+
+#~ msgid "Primary shortcut:"
+#~ msgstr "Основная комбинация:"
+
+#~ msgid ""
+#~ "The currently set shortcut or the shortcut you are entering will show up "
+#~ "here."
+#~ msgstr "Здесь отображается текущая или вводимая вами комбинация."
+
+#~ msgid "x"
+#~ msgstr "x"
+
+#~ msgid "Clear shortcut"
+#~ msgstr "Очистить комбинацию"
+
+#~ msgid "Multi-key mode"
+#~ msgstr "Многоклавишный режим"
+
+#~ msgid "Enable the entry of multi-key shortcuts"
+#~ msgstr "Разрешить ввод многоклавишных комбинаций"
+
+#~ msgid ""
+#~ "Select this checkbox to enable the entry of multi-key shortcuts. A multi-"
+#~ "key shortcut consists of a sequence of up to 4 keys. For example, you "
+#~ "could assign \"Ctrl+F,B\" to Font-Bold and \"Ctrl+F,U\" to Font-Underline."
+#~ msgstr ""
+#~ "Установите этот параметр, чтобы включить поддержку многоклавишных "
+#~ "комбинаций. Многоклавишная комбинация может включать последовательность "
+#~ "до 4 клавиш. Например, можно назначить \"Ctrl+F,B\" для включения курсива "
+#~ "или \"Ctrl+F,U\" - для подчёркивания."
+
+#~ msgid "&File"
+#~ msgstr "&Файл"
+
+#~ msgid "&Game"
+#~ msgstr "&Игра"
+
+#~ msgid "&Edit"
+#~ msgstr "&Правка"
+
+#~ msgid ""
+#~ "_: Menu title\n"
+#~ "&Move"
+#~ msgstr "&Ход"
+
+#~ msgid "&View"
+#~ msgstr "&Вид"
+
+#~ msgid "&Go"
+#~ msgstr "Пе&рейти"
+
+#~ msgid "&Bookmarks"
+#~ msgstr "&Закладки"
+
+#~ msgid "&Tools"
+#~ msgstr "С&ервис"
+
+#~ msgid "&Settings"
+#~ msgstr "&Настройка"
+
+#~ msgid "Main Toolbar"
+#~ msgstr "Основная панель инструментов"
+
+#~ msgid "Shortcut:"
+#~ msgstr "Комбинация:"
+
+#~ msgid "Alt+Tab"
+#~ msgstr "Alt+Tab"
+
+#~ msgid "Unknown word:"
+#~ msgstr "Неизвестное слово:"
+
+#~ msgid ""
+#~ "<qt><p>This word was considered to be an \"unknown word\" because it does "
+#~ "not match any entry in the dictionary currently in use. It may also be a "
+#~ "word in a foreign language.</p>\n"
+#~ "<p>If the word is not misspelled, you may add it to the dictionary by "
+#~ "clicking <b>Add to Dictionary</b>. If you don't want to add the unknown "
+#~ "word to the dictionary, but you want to leave it unchanged, click "
+#~ "<b>Ignore</b> or <b>Ignore All</b>.</p>\n"
+#~ "<p>However, if the word is misspelled, you can try to find the correct "
+#~ "replacement in the list below. If you cannot find a replacement there, "
+#~ "you may type it in the text box below, and click <b>Replace</b> or "
+#~ "<b>Replace All</b>.</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt><p>Это слово считается \"неизвестным\", т.к. в текущем словаре его "
+#~ "нет. Возможно это иностранное слово, или неологизм.</p>\n"
+#~ "<p>Если вы уверены, что слово не содержит ошибок, вы можете его "
+#~ "<b>Добавить в словарь</b>. Если вы не хотите это делать, просто нажмите "
+#~ "<b>Пропустить</b> или <b>Пропустить все</b>.</p>\n"
+#~ "<p>В противном случае, если слово содержит ошибку, выберите из списка "
+#~ "подходящий вариант. Если такого не имеется, введите слово вручную и "
+#~ "нажмите <b>Заменить</b> или <b>Заменить все</b>.</p>\n"
+#~ "</qt>"
+
+#~ msgid "<b>misspelled</b>"
+#~ msgstr "<b>ошибочно</b>"
+
+#~ msgid "Unknown word"
+#~ msgstr "Неизвестное слово"
+
+#~ msgid "&Language:"
+#~ msgstr "&Язык:"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<p>Select the language of the document you are proofing here.</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<p>Выберите язык проверяемого документа.</p>\n"
+#~ "</qt>"
+
+#~ msgid "... the <b>misspelled</b> word shown in context ..."
+#~ msgstr "...<b>ошибочное</b> слово показано в контексте ..."
+
+#~ msgid "Text excerpt showing the unknown word in its context."
+#~ msgstr "Отрывок текста со словом, содержащим ошибку."
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<p>Here you can see a text excerpt showing the unknown word in its "
+#~ "context. If this information is not sufficient to choose the best "
+#~ "replacement for the unknown word, you can click on the document you are "
+#~ "proofing, read a larger part of the text and then return here to continue "
+#~ "proofing.</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<p>Здесь отображается контекст слова, содержащего ошибку. Если этого "
+#~ "отрывка недостаточно, щёлкните по документу, прочтите большую часть "
+#~ "текста и вернитесь в проверку орфографии.</p>\n"
+#~ "</qt>"
+
+#~ msgid "<< Add to Dictionary"
+#~ msgstr "<< Добавить в словарь"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<p>The unknown word was detected and considered unknown because it is not "
+#~ "included in the dictionary.<br>\n"
+#~ "Click here if you consider that the unknown word is not misspelled and "
+#~ "you want to avoid wrongly detecting it again in the future. If you want "
+#~ "to let it remain as is, but not add it to the dictionary, then click "
+#~ "<b>Ignore</b> or <b>Ignore All</b> instead.</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<p>Это слово считается \"неизвестным\", т.к. в текущем словаре его нет. "
+#~ "Возможно это иностранное слово, или неологизм.<br>\n"
+#~ "Щёлкните здесь если вы уверены, что слово не содержит ошибок и хотите "
+#~ "добавить его в словарь, или же просто нажмите <b>Пропустить</b> или "
+#~ "<b>Пропустить все</b>.</p>\n"
+#~ "</qt>"
+
+#~ msgid "R&eplace All"
+#~ msgstr "Зам&енить все"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<p>Click here to replace all occurrences of the unknown text with the "
+#~ "text in the edit box above (to the left).</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<p>Нажмите здесь чтобы заменить это слово во всём документе.</p>\n"
+#~ "</qt>"
+
+#~ msgid "Suggested Words"
+#~ msgstr "Предлагаемые слова"
+
+#~ msgid "Suggestion List"
+#~ msgstr "Предлагаемые варианты"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<p>If the unknown word is misspelled, you should check if the correction "
+#~ "for it is available and if it is, click on it. If none of the words in "
+#~ "this list is a good replacement you may type the correct word in the edit "
+#~ "box above.</p>\n"
+#~ "<p>To correct this word click <b>Replace</b> if you want to correct only "
+#~ "this occurrence or <b>Replace All</b> if you want to correct all "
+#~ "occurrences.</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<p>Если слово содержит ошибку, проверьте наличие правильного варианта в "
+#~ "предлагаемом списке. Если его там не будет, вы можете ввести правильный "
+#~ "вариант вручную.</p>\n"
+#~ "<p>Чтобы исправить это слово только в этом месте нажмите <b>Заменить</b>, "
+#~ "а чтобы исправить его во всём документе, воспользуйтесь <b>Заменить все</"
+#~ "b>.</p>\n"
+#~ "</qt>"
+
+#~ msgid "&Replace"
+#~ msgstr "&Заменить"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<p>Click here to replace this occurrence of the unknown text with the "
+#~ "text in the edit box above (to the left).</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<p>Нажмите здесь чтобы заменить слово в данном случае.</p>\n"
+#~ "</qt>"
+
+#~ msgid "Replace &with:"
+#~ msgstr "Заменить &на:"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<p>If the unknown word is misspelled, you should type the correction for "
+#~ "your misspelled word here or select it from the list below.</p>\n"
+#~ "<p>You can then click <b>Replace</b> if you want to correct only this "
+#~ "occurrence of the word or <b>Replace All</b> if you want to correct all "
+#~ "occurrences.</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<p>Введите здесь правильный вариант написания слова или выберите го из "
+#~ "списка.</p>\n"
+#~ "<p>Затем нажмите <b>Заменить</b> либо <b>Заменить все</b>.</p>\n"
+#~ "</qt>"
+
+#~ msgid "&Ignore"
+#~ msgstr "&Игнорировать"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<p>Click here to let this occurrence of the unknown word remain as is.</"
+#~ "p>\n"
+#~ "<p>This action is useful when the word is a name, an acronym, a foreign "
+#~ "word or any other unknown word that you want to use but not add to the "
+#~ "dictionary.</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<p>Нажмите, чтобы оставить это неизвестное слово \"как есть\".</p>\n"
+#~ "<p>Это может быть полезно, если слово является именем, сокращением, "
+#~ "иностранным словом или любым другим словом, которое вы хотите "
+#~ "использовать, но не хотите добавлять в словарь.</p>\n"
+#~ "</qt>"
+
+#~ msgid "I&gnore All"
+#~ msgstr "Игнорировать вез&де"
+
+#~ msgid ""
+#~ "<qt>\n"
+#~ "<p>Click here to let all occurrences of the unknown word remain as they "
+#~ "are.</p>\n"
+#~ "<p>This action is useful when the word is a name, an acronym, a foreign "
+#~ "word or any other unknown word that you want to use but not add to the "
+#~ "dictionary.</p>\n"
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt>\n"
+#~ "<p>Нажмите, чтобы оставить все включения этого неизвестного слова \"как "
+#~ "есть\".</p>\n"
+#~ "<p>Это может быть полезно, если слово является именем, сокращением, "
+#~ "иностранным словом или любым другим словом, которое вы хотите "
+#~ "использовать, но не хотите добавлять в словарь.</p>\n"
+#~ "</qt>"
+
+#~ msgid "S&uggest"
+#~ msgstr "В&ариант"
+
+#~ msgid "English"
+#~ msgstr "Английский"
+
+#~ msgid "Language Selection"
+#~ msgstr "Выбор языка"
+
+#~ msgid "Frame"
+#~ msgstr "Фрейм"
+
+#~ msgid "JavaScript Errors"
+#~ msgstr "Ошибки JavaScript"
+
+#~ msgid ""
+#~ "This dialog provides you with notification and details of scripting "
+#~ "errors that occur on web pages. In many cases it is due to an error in "
+#~ "the web site as designed by its author. In other cases it is the result "
+#~ "of a programming error in Konqueror. If you suspect the former, please "
+#~ "contact the webmaster of the site in question. Conversely if you suspect "
+#~ "an error in Konqueror, please file a bug report at http://bugs.kde.org/. "
+#~ "A test case which illustrates the problem will be appreciated."
+#~ msgstr ""
+#~ "В этом диалоге показаны ошибки скриптов на веб-страницах. Чаще всего они "
+#~ "обусловлены ошибками при создании веб-страниц, но иногда - ошибками в "
+#~ "Konqueror. В первом случае известите об ошибке веб-мастера сайта, если "
+#~ "же это всё-таки ошибка в Konqueror, отправьте сообщение об ошибке на "
+#~ "http://bugs.kde.org/. Пример, иллюстрирующий ошибку, поможет её "
+#~ "устранить."
+
+#~ msgid "C&lear"
+#~ msgstr "О&чистить"
+
+#~ msgid "Document Information"
+#~ msgstr "Сведения о документе"
+
+#~ msgid "General"
+#~ msgstr "Общие"
+
+#~ msgid "URL:"
+#~ msgstr "Ссылка:"
+
+#~ msgid "Last modified:"
+#~ msgstr "Последнее изменение:"
+
+#~ msgid "Document encoding:"
+#~ msgstr "Кодировка документа:"
+
+#~ msgid "HTTP Headers"
+#~ msgstr "Заголовки HTTP"
+
+#~ msgid "Property"
+#~ msgstr "Параметр"
+
+#~ msgid ""
+#~ "This is the default language that the spell checker will use. The drop "
+#~ "down box will list all of the dictionaries of your existing languages."
+#~ msgstr ""
+#~ "Язык, используемы при проверки орфографии. Вы можете быбрать другой язык "
+#~ "из выпадающего списка."
+
+#~ msgid "Options"
+#~ msgstr "Параметры"
+
+#~ msgid "Enable &background spellchecking"
+#~ msgstr "Включить &фоновую проверку орфографии"
+
+#~ msgid ""
+#~ "If checked, the \"spell as you type\" mode is active and all misspelled "
+#~ "words are immediately highlighted."
+#~ msgstr ""
+#~ "При включении этого параметра по мере набора вводимые слова будут "
+#~ "проверяться автоматически и при ошибке выделяться красным."
+
+#~ msgid "Skip all &uppercase words"
+#~ msgstr "Пропускать &слова в верхнем регистре"
+
+#~ msgid ""
+#~ "If checked, words that consist of only uppercase letters are not spell "
+#~ "checked. This is useful if you have a lot of acronyms, such as KDE for "
+#~ "example."
+#~ msgstr ""
+#~ "При включении этого параметра не будет проверяться орфография слов в "
+#~ "верхнем регистре (к примеру, KDE)."
+
+#~ msgid "S&kip run-together words"
+#~ msgstr "Пропускать слова, &написанные слитно"
+
+#~ msgid ""
+#~ "If checked, concatenated words made of existing words are not spell "
+#~ "checked. This is useful in some languages."
+#~ msgstr ""
+#~ "При включении этого параметра слитные слова, полученные из правильно "
+#~ "написанных простых слов, не будут показываться как ошибочные. Это "
+#~ "актуально для некоторых языков."
+
+#~ msgid "Default language:"
+#~ msgstr "Язык по умолчанию:"
+
+#~ msgid "Ignore These Words"
+#~ msgstr "Игнорировать следующие слова"
+
+#~ msgid ""
+#~ "To add a word you want to ignore, type it in the top edit field and click "
+#~ "Add. To remove a word, highlight it in the list and click Remove."
+#~ msgstr ""
+#~ "Для добавления игнорируемого слова, укажите его в верхнем поле ввода и "
+#~ "нажмите кнопку 'Добавить'. Для удаления слова, выберите его в списке и "
+#~ "нажмите на кнопку 'Удалить'."
+
+#~ msgid "Autocorrect"
+#~ msgstr "Автокоррекция"
+
+#~ msgid "Additional domains for browsing"
+#~ msgstr "Дополнительные домены для обзора"
+
+#~ msgid "List of 'wide-area' (non link-local) domains that should be browsed."
+#~ msgstr ""
+#~ "Список внешних (не локальных) доменов, которые будут просматриваться."
+
+#~ msgid "Browse local network"
+#~ msgstr "Обзор локальной сети"
+
+#~ msgid ""
+#~ "If true .local domain will be browsed. It is always link-local, using "
+#~ "multicast DNS."
+#~ msgstr "Если флажок включен, будут просмотрены локальные домены."
+
+#~ msgid "Removed in KDE 3.5.0"
+#~ msgstr "Удалено в KDE 3.5.0"
+
+#~ msgid ""
+#~ "Select publishing in LAN (multicast) or WAN (unicast, needs configured "
+#~ "DNS server)"
+#~ msgstr ""
+#~ "Поиск ресурсов в локальной сети (multicast) или внешней сети (unicast, "
+#~ "требует настроенного сервера DNS)"
+
+#~ msgid ""
+#~ "Specifies if publishing should be by default link-local using multicast "
+#~ "DNS (LAN) or 'wide-area' using normal DNS server (WAN)."
+#~ msgstr "Осуществлять поиск в локальной сети или внешней сети."
+
+#~ msgid "Name of default publishing domain for WAN"
+#~ msgstr "Имя домена для ресурсов внешней сети"
+
+#~ msgid ""
+#~ "Domain name for publishing using 'wide-area' (normal DNS) ZeroConf. This "
+#~ "must match domain specified in /etc/mdnsd.conf. This value is used only "
+#~ "if PublishType is set to WAN.\n"
+#~ msgstr ""
+#~ "Имя домена для поиска ресурсов ZeroConf во внешней сети. Имя этого домена "
+#~ "вы можете найти в файле /etc/mdnsd.conf. Этот параметр используется если "
+#~ "PublishType установлен в WAN.\n"
+
+#~ msgid ""
+#~ "_: NAME OF TRANSLATORS\n"
+#~ "Your names"
+#~ msgstr "Григорий Мохин"
+
+#~ msgid ""
+#~ "_: EMAIL OF TRANSLATORS\n"
+#~ "Your emails"
+#~ msgstr "mok@kde.ru"
+
+#~ msgid "Configure"
+#~ msgstr "Настройка"
+
+#~ msgid "&Configure"
+#~ msgstr "&Настроить"
+
+#~ msgid "Configuration"
+#~ msgstr "Настройка"
+
+#~ msgid "Modify"
+#~ msgstr "Изменить"
+
+#~ msgid "&Modify"
+#~ msgstr "&Изменить"
+
+#~ msgid "Align"
+#~ msgstr "Выравнивание"
+
+#~ msgid "Page"
+#~ msgstr "Страница"
+
+#~ msgid "Border"
+#~ msgstr "Рамка"
+
+#~ msgid "Orientation"
+#~ msgstr "Ориентация"
+
+#~ msgid "Width"
+#~ msgstr "Ширина"
+
+#~ msgid "&Width"
+#~ msgstr "&Ширина"
+
+#~ msgid "Height"
+#~ msgstr "Высота"
+
+#~ msgid "&Height"
+#~ msgstr "&Высота"
+
+#~ msgid "Horizontal"
+#~ msgstr "Горизонтально"
+
+#~ msgid "Vertical"
+#~ msgstr "Вертикально"
+
+#~ msgid "Right"
+#~ msgstr "Справа"
+
+#~ msgid "Left"
+#~ msgstr "Слева"
+
+#~ msgid "Center"
+#~ msgstr "По центру"
+
+#~ msgid "Top"
+#~ msgstr "Сверху"
+
+#~ msgid "Bottom"
+#~ msgstr "Снизу"
+
+#~ msgid "&Bottom"
+#~ msgstr "В&низу"
+
+#~ msgid "Move"
+#~ msgstr "Переместить"
+
+#~ msgid "Delete All"
+#~ msgstr "Удалить все"
+
+#~ msgid "Clear All"
+#~ msgstr "Очистить все"
+
+#~ msgid "Export"
+#~ msgstr "Экспорт"
+
+#~ msgid "Import"
+#~ msgstr "Импорт"
+
+#~ msgid "Zoom"
+#~ msgstr "Масштаб"
+
+#~ msgid "&Zoom"
+#~ msgstr "&Масштаб"
+
+#~ msgid "Error"
+#~ msgstr "Ошибка"
+
+#~ msgid "Malformed URL"
+#~ msgstr "Недопустимый URL"
+
+#~ msgid "Charset:"
+#~ msgstr "Кодировка:"
+
+#~ msgid "Warning"
+#~ msgstr "Предупреждение"
+
+#~ msgid "Save a file"
+#~ msgstr "Сохранить файл"
+
+#~ msgid "About"
+#~ msgstr "О программе"
+
+#~ msgid "&About"
+#~ msgstr "&О программе"
+
+#~ msgid "A&bout"
+#~ msgstr "&Примечания"
+
+#~ msgid "Untitled"
+#~ msgstr "Безымянный"
+
+#~ msgid "&OK"
+#~ msgstr "&ОК"
+
+#~ msgid "On"
+#~ msgstr "Вкл"
+
+#~ msgid "Off"
+#~ msgstr "Выкл"
+
+#~ msgid "&Apply"
+#~ msgstr "&Применить"
+
+#~ msgid "File"
+#~ msgstr "Файл"
+
+#~ msgid "&Discard"
+#~ msgstr "От&клонить"
+
+#~ msgid "Discard"
+#~ msgstr "Отклонить"
+
+#~ msgid "&Options"
+#~ msgstr "П&араметры"
+
+#~ msgid "View"
+#~ msgstr "Вид"
+
+#~ msgid "E&xit"
+#~ msgstr "В&ыход"
+
+#~ msgid "Quit"
+#~ msgstr "Выход"
+
+#~ msgid "&Quit"
+#~ msgstr "В&ыход"
+
+#~ msgid "Reload"
+#~ msgstr "Обновить"
+
+#~ msgid "Back"
+#~ msgstr "Назад"
+
+#~ msgid "&New Window..."
+#~ msgstr "&Новое окно..."
+
+#~ msgid "New &Window..."
+#~ msgstr "&Новое окно..."
+
+#~ msgid "&New Window"
+#~ msgstr "&Новое окно"
+
+#~ msgid "New Game"
+#~ msgstr "Новая игра"
+
+#~ msgid "&New Game"
+#~ msgstr "&Новая игра"
+
+#~ msgid "Open"
+#~ msgstr "Открыть"
+
+#~ msgid "Open a File"
+#~ msgstr "Открыть файл"
+
+#~ msgid "Open..."
+#~ msgstr "Открыть..."
+
+#~ msgid "&Open..."
+#~ msgstr "&Открыть..."
+
+#~ msgid "&Cut"
+#~ msgstr "Вы&резать"
+
+#~ msgid "C&ut"
+#~ msgstr "Вы&резать"
+
+#~ msgid "Font"
+#~ msgstr "Шрифт"
+
+#~ msgid "&Foreground Color"
+#~ msgstr "Цвет &текста"
+
+#~ msgid "&Background Color"
+#~ msgstr "Цвет &фона"
+
+#~ msgid "Save"
+#~ msgstr "Сохранить"
+
+#~ msgid "&Save"
+#~ msgstr "&Сохранить"
+
+#~ msgid "Save As"
+#~ msgstr "Сохранить как"
+
+#~ msgid "Save As..."
+#~ msgstr "Сохранить как..."
+
+#~ msgid "S&ave As..."
+#~ msgstr "Сохранить &как..."
+
+#~ msgid "&Print..."
+#~ msgstr "Пе&чать..."
+
+#~ msgid "Sorry"
+#~ msgstr "Ошибка"
+
+#~ msgid "Remove"
+#~ msgstr "Удалить"
+
+#~ msgid "Add"
+#~ msgstr "Добавить"
+
+#~ msgid "Change"
+#~ msgstr "Изменить"
+
+#~ msgid "&Delete"
+#~ msgstr "&Удалить"
+
+#~ msgid "Italic"
+#~ msgstr "Курсив"
+
+#~ msgid "Roman"
+#~ msgstr "Прямой"
+
+#~ msgid "Information"
+#~ msgstr "Сведения"
+
+#~ msgid "Portrait"
+#~ msgstr "Книга"
+
+#~ msgid "Landscape"
+#~ msgstr "Альбом"
+
+#~ msgid "locally connected"
+#~ msgstr "локальное соединение"
+
+#~ msgid "Browse..."
+#~ msgstr "Обзор..."
+
+#~ msgid "&Remove"
+#~ msgstr "&Удалить"
+
+#~ msgid "&Properties..."
+#~ msgstr "&Свойства..."
+
+#~ msgid "Properties"
+#~ msgstr "Свойства"
+
+#~ msgid "&Start"
+#~ msgstr "З&апуск"
+
+#~ msgid "St&op"
+#~ msgstr "С&топ"
+
+#~ msgid "Miscellaneous"
+#~ msgstr "Разное"
+
+#~ msgid "Font Size"
+#~ msgstr "Размер шрифта"
+
+#~ msgid "Fonts"
+#~ msgstr "Шрифты"
+
+#~ msgid "&Fonts"
+#~ msgstr "&Шрифты"
+
+#~ msgid "&Reload"
+#~ msgstr "&Обновить"
+
+#~ msgid "Files"
+#~ msgstr "Файлы"
+
+#~ msgid "Continue"
+#~ msgstr "Продолжить"
+
+#~ msgid "Restore"
+#~ msgstr "Восстановить"
+
+#~ msgid "Appearance"
+#~ msgstr "Внешний вид"
+
+#~ msgid "Print"
+#~ msgstr "Печать"
+
+#~ msgid "Monday"
+#~ msgstr "Понедельник"
+
+#~ msgid "Tuesday"
+#~ msgstr "Вторник"
+
+#~ msgid "Wednesday"
+#~ msgstr "Среда"
+
+#~ msgid "Thursday"
+#~ msgstr "Четверг"
+
+#~ msgid "Friday"
+#~ msgstr "Пятница"
+
+#~ msgid "Saturday"
+#~ msgstr "Суббота"
+
+#~ msgid "Sunday"
+#~ msgstr "Воскресенье"
+
+#~ msgid "&Update"
+#~ msgstr "&Обновить"
+
+#~ msgid "Highscore"
+#~ msgstr "Рекорды"
+
+#~ msgid "&New View"
+#~ msgstr "&Новый вид"
+
+#~ msgid "&Insert"
+#~ msgstr "&Вставка"
+
+#~ msgid ""
+#~ "_: Opposite to Previous\n"
+#~ "&Next"
+#~ msgstr "&Далее"
+
+#~ msgid "&Previous"
+#~ msgstr "&Предыдущий"
+
+#~ msgid "Replace"
+#~ msgstr "Заменить"
+
+#~ msgid "&Replace..."
+#~ msgstr "&Заменить..."
+
+#~ msgid "&Defaults"
+#~ msgstr "По &умолчанию"
+
+#~ msgid "&Contents"
+#~ msgstr "&Содержание"
+
+#~ msgid "Open Recent"
+#~ msgstr "Последние файлы"
+
+#~ msgid "Open &Recent"
+#~ msgstr "По&следние файлы"
+
+#~ msgid "&Find..."
+#~ msgstr "&Найти..."
+
+#~ msgid "Find &Next"
+#~ msgstr "П&родолжить поиск"
+
+#~ msgid "Bookmarks"
+#~ msgstr "Закладки"
+
+#~ msgid "&Add Bookmark"
+#~ msgstr "Добавить &закладку"
+
+#~ msgid "&Edit Bookmarks..."
+#~ msgstr "Р&едактировать закладки..."
+
+#~ msgid "&Spelling..."
+#~ msgstr "Проверка &орфографии..."
+
+#~ msgid "Show &Menubar"
+#~ msgstr "Показать &меню"
+
+#~ msgid "Show &Toolbar"
+#~ msgstr "Показать панель &инструментов"
+
+#~ msgid "Show &Statusbar"
+#~ msgstr "Показывать &строку состояния"
+
+#~ msgid "Configure &Key Bindings..."
+#~ msgstr "Настроить &комбинации клавиш..."
+
+#~ msgid "&Preferences..."
+#~ msgstr "&Настройка..."
+
+#~ msgid "Do not show this message again"
+#~ msgstr "Не показывать больше это сообщение"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Prior"
+#~ msgstr "Prior"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Next"
+#~ msgstr "Next"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Shift"
+#~ msgstr "Shift"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Control"
+#~ msgstr "Ctrl"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Meta"
+#~ msgstr "Meta"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Alt"
+#~ msgstr "Alt"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "ParenLeft"
+#~ msgstr "Скобка ([)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "ParenRight"
+#~ msgstr "Скобка (])"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Asterisk"
+#~ msgstr "Звёздочка (*)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Plus"
+#~ msgstr "Плюс (+)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Comma"
+#~ msgstr "Запятая (,)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Minus"
+#~ msgstr "Минус (-)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Period"
+#~ msgstr "Точка (.)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Slash"
+#~ msgstr "Косая черта (/)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Colon"
+#~ msgstr "Двоеточие (:)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Semicolon"
+#~ msgstr "Точка с запятой (;)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Less"
+#~ msgstr "Меньше (<)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Equal"
+#~ msgstr "Равно (=)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Greater"
+#~ msgstr "Больше (>)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Question"
+#~ msgstr "Вопрос. знак (?)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "BracketLeft"
+#~ msgstr "Левая скобка ("
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Backslash"
+#~ msgstr "Обратная косая черта (\\)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "BracketRight"
+#~ msgstr "Правая скобка )"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "AsciiCircum"
+#~ msgstr "Собачка (@)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Underscore"
+#~ msgstr "Подчёркивание (_)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "QuoteLeft"
+#~ msgstr "Левая одинарная кавычка"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "BraceLeft"
+#~ msgstr "Скобка ({)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "BraceRight"
+#~ msgstr "Скобка (})"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "AsciiTilde"
+#~ msgstr "Тильда (~)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Apostrophe"
+#~ msgstr "Апостроф (')"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Ampersand"
+#~ msgstr "Амперсанд"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Exclam"
+#~ msgstr "Восклиц. знак (!)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Dollar"
+#~ msgstr "Доллар ($)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Percent"
+#~ msgstr "Процент"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "NumberSign"
+#~ msgstr "Решётка (#)"
+
+#~ msgid ""
+#~ "_: font style\n"
+#~ "Demi-bold"
+#~ msgstr "Полужирный"
+
+#~ msgid ""
+#~ "_: font style\n"
+#~ "Light"
+#~ msgstr "Светлый"
+
+#~ msgid ""
+#~ "_: font style\n"
+#~ "Light Italic"
+#~ msgstr "Светлый курсив"
+
+#~ msgid ""
+#~ "_: font style\n"
+#~ "Demi-bold Italic"
+#~ msgstr "Полужирный курсив"
+
+#~ msgid ""
+#~ "_: font style\n"
+#~ "Oblique"
+#~ msgstr "Наклонный"
+
+#~ msgid ""
+#~ "_: font style\n"
+#~ "Book"
+#~ msgstr "Книжный"
+
+#~ msgid ""
+#~ "_: font style\n"
+#~ "Book Oblique"
+#~ msgstr "Книжный наклонный"
+
+#~ msgid ""
+#~ "_: window operation\n"
+#~ "Sticky"
+#~ msgstr "Прикрепить"
+
+#~ msgid ""
+#~ "_: window operation\n"
+#~ "Un-Sticky"
+#~ msgstr "Открепить"
+
+#~ msgid "No default value"
+#~ msgstr "Нет значения по умолчанию"
+
+#~ msgid "Evaluation error"
+#~ msgstr "Ошибка вычисления"
+
+#~ msgid "Range error"
+#~ msgstr "Ошибка границ"
+
+#~ msgid "Reference error"
+#~ msgstr "Ошибка ссылки"
+
+#~ msgid "Syntax error"
+#~ msgstr "Синтаксическая ошибка"
+
+#~ msgid "Type error"
+#~ msgstr "Ошибка типа"
+
+#~ msgid "URI error"
+#~ msgstr "Ошибка URI"
+
+#~ msgid "Undefined value"
+#~ msgstr "Неопределённое значение"
+
+#~ msgid "Null value"
+#~ msgstr "Нулевое значение"
+
+#~ msgid "Invalid reference base"
+#~ msgstr "Неверная база ссылок"
+
+#~ msgid "Can't find variable: "
+#~ msgstr "Не удалось найти переменную: "
+
+#~ msgid "Base is not an object"
+#~ msgstr "Основа не является объектом"
+
+#~ msgid "Syntax error in parameter list"
+#~ msgstr "Синтаксическая ошибка в списке параметров"
+
+#~ msgid "System Default (%1)"
+#~ msgstr "По умолчанию (%1)"
+
+#~ msgid "Unable to get KScript Runner for type \"%1\"."
+#~ msgstr "Не удаётся получить KScript Runner для типа \"%1\""
+
+#~ msgid "KScript Error"
+#~ msgstr "Ошибка KScript"
+
+#~ msgid "Unable find script \"%1\"."
+#~ msgstr "Невозможно найти скрипт \"%1\"."
+
+#~ msgid "KDE Scripts"
+#~ msgstr "Скрипты KDE"
+
+#~ msgid "Video Toolbar"
+#~ msgstr "Панель инструментов Видео"
+
+#~ msgid "Fullscreen &Mode"
+#~ msgstr "&Полноэкранный режим"
+
+#~ msgid "&Half Size"
+#~ msgstr "&Половинный размер"
+
+#~ msgid "&Normal Size"
+#~ msgstr "&Обычный размер"
+
+#~ msgid "&Double Size"
+#~ msgstr "&Двойной размер"
+
+#~ msgid "Unable to load resource '%1'"
+#~ msgstr "Ошибка чтения из источника '%1'"
+
+#~ msgid "X509"
+#~ msgstr "X509"
+
+#~ msgid "PGP"
+#~ msgstr "PGP"
+
+#~ msgid "Custom"
+#~ msgstr "Прочее"
+
+#~ msgid "Unknown type"
+#~ msgstr "Неизвестный тип"
+
+#~ msgid "Unknown Field"
+#~ msgstr "Неизвестное поле"
+
+#~ msgid "All"
+#~ msgstr "Все"
+
+#~ msgid "Frequent"
+#~ msgstr "Часто используемые"
+
+#~ msgid ""
+#~ "_: street/postal\n"
+#~ "Address"
+#~ msgstr "Почтовый адрес"
+
+#~ msgid "Personal"
+#~ msgstr "Персональные"
+
+#~ msgid "Undefined"
+#~ msgstr "Не определено"
+
+#~ msgid "Disable automatic startup on login"
+#~ msgstr "Отключить автоматический запуск при входе в систему"
+
+#~ msgid "Override existing entries"
+#~ msgstr "Переписать существующие записи"
+
+#~ msgid ""
+#~ "Address book file <b>%1</b> not found! Make sure the old address book is "
+#~ "located there and you have read permission for this file."
+#~ msgstr ""
+#~ "Файл адресной книги <b>%1</b> не найден. Проверьте, расположена ли по "
+#~ "указанному пути старая адресная книга и есть ли права доступа к ней."
+
+#~ msgid "Kab to Kabc Converter"
+#~ msgstr "Перенос из Kab в Kabc"
+
+#~ msgid "Loading resource '%1' failed!"
+#~ msgstr "Сбой загрузки ресурса '%1'!"
+
+#~ msgid "Saving resource '%1' failed!"
+#~ msgstr "Сбой сохранения ресурса '%1'!"
+
+#~ msgid "Resource Selection"
+#~ msgstr "Выбор ресурса"
+
+#~ msgid "Resources"
+#~ msgstr "Ресурсы"
+
+#~ msgid "Public"
+#~ msgstr "Публичный"
+
+#~ msgid "Private"
+#~ msgstr "Личный"
+
+#~ msgid "Confidential"
+#~ msgstr "Конфиденциальный"
+
+#~ msgid "Error in libkabc"
+#~ msgstr "Ошибка в libkabc"
+
+#~ msgid "List of Emails"
+#~ msgstr "Список почтовых адресов"
+
+#~ msgid "LockNull: All locks succeed but no actual locking is done."
+#~ msgstr ""
+#~ "LockNull: Все операции блокировки выполнены успешно, но никаких "
+#~ "блокировок не установлено."
+
+#~ msgid "LockNull: All locks fail."
+#~ msgstr "LockNull: Блокировки не выполнены."
+
+#~ msgid ""
+#~ "_: Preferred phone\n"
+#~ "Preferred"
+#~ msgstr "Основной телефон"
+
+#~ msgid ""
+#~ "_: Home phone\n"
+#~ "Home"
+#~ msgstr "Домашний телефон"
+
+#~ msgid ""
+#~ "_: Work phone\n"
+#~ "Work"
+#~ msgstr "Телефон"
+
+#~ msgid "Messenger"
+#~ msgstr "Система сообщений"
+
+#~ msgid "Preferred Number"
+#~ msgstr "Основной номер"
+
+#~ msgid "Voice"
+#~ msgstr "Голосовой"
+
+#~ msgid "Fax"
+#~ msgstr "Факс"
+
+#~ msgid ""
+#~ "_: Mobile Phone\n"
+#~ "Mobile"
+#~ msgstr "Мобильный"
+
+#~ msgid "Video"
+#~ msgstr "Видео"
+
+#~ msgid "Mailbox"
+#~ msgstr "А/Я"
+
+#~ msgid "Modem"
+#~ msgstr "Модем"
+
+#~ msgid ""
+#~ "_: Car Phone\n"
+#~ "Car"
+#~ msgstr "В автомобиле"
+
+#~ msgid "ISDN"
+#~ msgstr "ISDN"
+
+#~ msgid "PCS"
+#~ msgstr "PCS"
+
+#~ msgid "Home Fax"
+#~ msgstr "Домашний факс"
+
+#~ msgid "Work Fax"
+#~ msgstr "Факс"
+
+#~ msgid "Other"
+#~ msgstr "Прочее"
+
+#~ msgid "Configure Distribution Lists"
+#~ msgstr "Настройка списков рассылки"
+
+#~ msgid "Select Email Address"
+#~ msgstr "Выбор адресов E-Mail"
+
+#~ msgid "Email Addresses"
+#~ msgstr "Адреса электронной почты"
+
+#~ msgid "New List..."
+#~ msgstr "Новый список..."
+
+#~ msgid "Rename List..."
+#~ msgstr "Переименовать список..."
+
+#~ msgid "Available addresses:"
+#~ msgstr "Доступные адреса:"
+
+#~ msgid "Preferred Email"
+#~ msgstr "Основной адрес"
+
+#~ msgid "Add Entry"
+#~ msgstr "Добавить запись"
+
+#~ msgid "Use Preferred"
+#~ msgstr "Использовать предпочтительный"
+
+#~ msgid "Change Email..."
+#~ msgstr "Изменить e-mail..."
+
+#~ msgid "Remove Entry"
+#~ msgstr "Удалить запись"
+
+#~ msgid "New Distribution List"
+#~ msgstr "Новый список рассылки"
+
+#~ msgid "Please enter &name:"
+#~ msgstr "Введите &имя:"
+
+#~ msgid "Distribution List"
+#~ msgstr "Список рассылки"
+
+#~ msgid "Please change &name:"
+#~ msgstr "Измените &имя:"
+
+#~ msgid "Delete distribution list '%1'?"
+#~ msgstr "Удалить список рассылки '%1'?"
+
+#~ msgid "Selected addressees:"
+#~ msgstr "Выбранные адресаты:"
+
+#~ msgid "Selected addresses in '%1':"
+#~ msgstr "Выбранные адреса в '%1':"
+
+#~ msgid "Dr."
+#~ msgstr "Д-р"
+
+#~ msgid "Miss"
+#~ msgstr "Г-жа"
+
+#~ msgid "Mr."
+#~ msgstr "Г-н"
+
+#~ msgid "Mrs."
+#~ msgstr "Г-жа"
+
+#~ msgid "Ms."
+#~ msgstr "Г-жа"
+
+#~ msgid "Prof."
+#~ msgstr "Проф."
+
+#~ msgid "I"
+#~ msgstr "I"
+
+#~ msgid "II"
+#~ msgstr "II"
+
+#~ msgid "III"
+#~ msgstr "III"
+
+#~ msgid "Jr."
+#~ msgstr "Мл."
+
+#~ msgid "Sr."
+#~ msgstr "Ст."
+
+#~ msgid "Post Office Box"
+#~ msgstr "А/Я"
+
+#~ msgid "Extended Address Information"
+#~ msgstr "Расширенная информация об адресе"
+
+#~ msgid "Locality"
+#~ msgstr "Населённый пункт"
+
+#~ msgid "Region"
+#~ msgstr "Область"
+
+#~ msgid "Postal Code"
+#~ msgstr "Почтовый индекс"
+
+#~ msgid "Delivery Label"
+#~ msgstr "Наклейка на конверт"
+
+#~ msgid ""
+#~ "_: Preferred address\n"
+#~ "Preferred"
+#~ msgstr "Основной адрес"
+
+#~ msgid "Domestic"
+#~ msgstr "Внутренний"
+
+#~ msgid "International"
+#~ msgstr "Международный"
+
+#~ msgid "Postal"
+#~ msgstr "Почтовый"
+
+#~ msgid "Parcel"
+#~ msgstr "Для посылок"
+
+#~ msgid ""
+#~ "_: Home Address\n"
+#~ "Home"
+#~ msgstr "Домашний адрес"
+
+#~ msgid ""
+#~ "_: Work Address\n"
+#~ "Work"
+#~ msgstr "Служебный адрес"
+
+#~ msgid "Preferred Address"
+#~ msgstr "Основной адрес"
+
+#~ msgid "Unable to open lock file."
+#~ msgstr "Не удаётся открыть файл блокировки."
+
+#~ msgid ""
+#~ "The address book '%1' is locked by application '%2'.\n"
+#~ "If you believe this is incorrect, just remove the lock file from '%3'"
+#~ msgstr ""
+#~ "Адресная книга '%1' заблокирована приложением '%2'.\n"
+#~ "Если вы считаете, что это ошибка, удалите файл блокировки '%3'"
+
+#~ msgid "Unlock failed. Lock file is owned by other process: %1 (%2)"
+#~ msgstr ""
+#~ "Ошибка разблокирования. Файл блокировки принадлежит другому процессу: %1 "
+#~ "(%2)"
+
+#~ msgid "Unable to save to resource '%1'. It is locked."
+#~ msgstr "Не удаётся сохранить в ресурс '%1', потому что он заблокирован."
+
+#~ msgid "Select Addressee"
+#~ msgstr "Выбор адресата"
+
+#~ msgid "Unselect"
+#~ msgstr "Отменить выделение"
+
+#~ msgid "New List"
+#~ msgstr "Новый список"
+
+#~ msgid "Change Email"
+#~ msgstr "Изменить e-mail"
+
+#~ msgid "Please enter name:"
+#~ msgstr "Введите имя:"
+
+#~ msgid "vCard"
+#~ msgstr "vCard"
+
+#~ msgid "vCard Format"
+#~ msgstr "Формат vCard"
+
+#~ msgid "No description available."
+#~ msgstr "Описание недоступно."
+
+#~ msgid "Unique Identifier"
+#~ msgstr "Уникальный идентификатор"
+
+#~ msgid "Formatted Name"
+#~ msgstr "Полное имя"
+
+#~ msgid "Given Name"
+#~ msgstr "Имя"
+
+#~ msgid "Additional Names"
+#~ msgstr "Дополнительные имена"
+
+#~ msgid "Honorific Prefixes"
+#~ msgstr "Почтительное обращение (в начале)"
+
+#~ msgid "Honorific Suffixes"
+#~ msgstr "Почтительное обращение (в конце)"
+
+#~ msgid "Nick Name"
+#~ msgstr "Ник"
+
+#~ msgid "Birthday"
+#~ msgstr "День рождения"
+
+#~ msgid "Home Address Street"
+#~ msgstr "Домашний адрес: улица"
+
+#~ msgid "Home Address City"
+#~ msgstr "Домашний адрес: город"
+
+#~ msgid "Home Address State"
+#~ msgstr "Домашний адрес: область/край"
+
+#~ msgid "Home Address Zip Code"
+#~ msgstr "Домашний адрес: индекс"
+
+#~ msgid "Home Address Country"
+#~ msgstr "Домашний адрес: страна"
+
+#~ msgid "Home Address Label"
+#~ msgstr "Домашний адрес: наклейка"
+
+#~ msgid "Business Address Street"
+#~ msgstr "Служебный адрес: улица"
+
+#~ msgid "Business Address City"
+#~ msgstr "Служебный адрес: город"
+
+#~ msgid "Business Address State"
+#~ msgstr "Служебный адрес: область/край"
+
+#~ msgid "Business Address Zip Code"
+#~ msgstr "Служебный адрес: индекс"
+
+#~ msgid "Business Address Country"
+#~ msgstr "Служебный адрес: страна"
+
+#~ msgid "Business Address Label"
+#~ msgstr "Служебный адрес: наклейка"
+
+#~ msgid "Home Phone"
+#~ msgstr "Домашний телефон"
+
+#~ msgid "Business Phone"
+#~ msgstr "Телефон"
+
+#~ msgid "Mobile Phone"
+#~ msgstr "Мобильный телефон"
+
+#~ msgid "Business Fax"
+#~ msgstr "Факс"
+
+#~ msgid "Car Phone"
+#~ msgstr "Телефон в автомобиле"
+
+#~ msgid "Mail Client"
+#~ msgstr "Почтовый клиент"
+
+#~ msgid "Time Zone"
+#~ msgstr "Часовой пояс"
+
+#~ msgid "Geographic Position"
+#~ msgstr "Географическое расположение"
+
+#~ msgid ""
+#~ "_: person\n"
+#~ "Title"
+#~ msgstr "Обращение"
+
+#~ msgid ""
+#~ "_: person in organization\n"
+#~ "Role"
+#~ msgstr "Должность"
+
+#~ msgid "Note"
+#~ msgstr "Заметка"
+
+#~ msgid "Product Identifier"
+#~ msgstr "Идентификатор продукта"
+
+#~ msgid "Revision Date"
+#~ msgstr "Дата изменения"
+
+#~ msgid "Sort String"
+#~ msgstr "Сортировка"
+
+#~ msgid "Homepage"
+#~ msgstr "Веб-сайт"
+
+#~ msgid "Security Class"
+#~ msgstr "Класс безопасности"
+
+#~ msgid "Logo"
+#~ msgstr "Логотип"
+
+#~ msgid "Photo"
+#~ msgstr "Фото"
+
+#~ msgid "Sound"
+#~ msgstr "Звук"
+
+#~ msgid "Agent"
+#~ msgstr "Сотрудник"
+
+#~ msgid "TestWritevCard"
+#~ msgstr "TestWritevCard"
+
+#~ msgid "vCard 2.1"
+#~ msgstr "vCard 2.1"
+
+#~ msgid "Input file"
+#~ msgstr "Файл ввода"
+
+#~ msgid "Output data in UTF-8 instead of local encoding"
+#~ msgstr "Выводить данные в UTF-8 вместо кодировки локали"
+
+#~ msgid ""
+#~ "Print menu-id of the menu that contains\n"
+#~ "the application"
+#~ msgstr ""
+#~ "Вывести идентификатор меню, которое\n"
+#~ "содержит приложение"
+
+#~ msgid ""
+#~ "Print menu name (caption) of the menu that\n"
+#~ "contains the application"
+#~ msgstr ""
+#~ "Вывести имя меню, которое содержит\n"
+#~ "приложение"
+
+#~ msgid "Highlight the entry in the menu"
+#~ msgstr "Подсвечивать элемент меню"
+
+#~ msgid "Do not check if sycoca database is up to date"
+#~ msgstr "Не проверять актуальность базы данных sysoca"
+
+#~ msgid "The id of the menu entry to locate"
+#~ msgstr "Идентификатор элемента меню, который необходимо найти"
+
+#~ msgid "Menu item '%1' could not be highlighted."
+#~ msgstr "Элемент меню '%1' не может быть подчеркнут."
+
+#~ msgid ""
+#~ "KDE Menu query tool.\n"
+#~ "This tool can be used to find in which menu a specific application is "
+#~ "shown.\n"
+#~ "The --highlight option can be used to visually indicate to the user "
+#~ "where\n"
+#~ "in the KDE menu a specific application is located."
+#~ msgstr ""
+#~ "Утилита запроса меню среды KDE.\n"
+#~ "Эта утилита может быть использована для определения, в каком меню "
+#~ "содержится конкретное приложение.\n"
+#~ "Параметр --highlight может быть использован для визуальной индикации "
+#~ "меню, содержащего конкретное приложение."
+
+#~ msgid "kde-menu"
+#~ msgstr "kde-menu"
+
+#~ msgid "Author"
+#~ msgstr "Автор"
+
+#~ msgid "You must specify an application-id such as 'kde-konsole.desktop'"
+#~ msgstr "Вы должны указать application-id, например 'kde-konsole.desktop'"
+
+#~ msgid ""
+#~ "You must specify at least one of --print-menu-id, --print-menu-name or --"
+#~ "highlight"
+#~ msgstr ""
+#~ "Вы должны указать хотя бы один параметр из --print-menu-id, --print-menu-"
+#~ "name или --highlight"
+
+#~ msgid "No menu item '%1'."
+#~ msgstr "Нет элемента меню '%1'."
+
+#~ msgid "Menu item '%1' not found in menu."
+#~ msgstr "Элемент '%1' не найден в меню."
+
+#~ msgid "Old hostname"
+#~ msgstr "Старое имя узла"
+
+#~ msgid "New hostname"
+#~ msgstr "Новое имя узла"
+
+#~ msgid "Error: HOME environment variable not set.\n"
+#~ msgstr "Ошибка: не задана переменная окружения HOME.\n"
+
+#~ msgid "Error: DISPLAY environment variable not set.\n"
+#~ msgstr "Ошибка: не задана переменная окружения DISPLAY.\n"
+
+#~ msgid "KDontChangeTheHostName"
+#~ msgstr "KDontChangeTheHostName"
+
+#~ msgid "Informs KDE about a change in hostname"
+#~ msgstr "Сообщает KDE об изменении имени узла"
+
+#~ msgid "Check Sycoca database only once"
+#~ msgstr "Проверять базу данных Sycoca только один раз"
+
+#~ msgid "KDE Daemon"
+#~ msgstr "Служба KDE"
+
+#~ msgid "KDE Daemon - triggers Sycoca database updates when needed"
+#~ msgstr ""
+#~ "Служба KDE - запускает обновление базы данных Sycoca по необходимости"
+
+#~ msgid ""
+#~ "Error creating database '%1'.\n"
+#~ "Check that the permissions are correct on the directory and the disk is "
+#~ "not full.\n"
+#~ msgstr ""
+#~ "Ошибка создания базы данных '%1'.\n"
+#~ "Проверьте права доступа к каталогу и свободное место на диске.\n"
+
+#~ msgid "KBuildSycoca"
+#~ msgstr "KBuildSycoca"
+
+#~ msgid ""
+#~ "Error writing database '%1'.\n"
+#~ "Check that the permissions are correct on the directory and the disk is "
+#~ "not full.\n"
+#~ msgstr ""
+#~ "Ошибка записи в базу данных '%1'.\n"
+#~ "Проверьте права доступа к каталогу и свободное место на диске.\n"
+
+#~ msgid "Do not signal applications to update"
+#~ msgstr "Не посылать сигнал приложениям для обновления"
+
+#~ msgid "Disable incremental update, re-read everything"
+#~ msgstr "Отключить инкрементное обновление, перечитать все"
+
+#~ msgid "Check file timestamps"
+#~ msgstr "Проверять время изменения файлов"
+
+#~ msgid "Disable checking files (dangerous)"
+#~ msgstr "Отключить проверку файлов (опасно)"
+
+#~ msgid "Create global database"
+#~ msgstr "Создать глобальную базу"
+
+#~ msgid "Perform menu generation test run only"
+#~ msgstr "Выполнить только тест генерации меню"
+
+#~ msgid "Track menu id for debug purposes"
+#~ msgstr "Отслеживать идентификатор меню для отладки"
+
+#~ msgid "Silent - work without windows and stderr"
+#~ msgstr "\"Тихий\" режим - работать без окон и stderr"
+
+#~ msgid "Show progress information (even if 'silent' mode is on)"
+#~ msgstr "Показывать ход выполнения (даже в тихом режиме)"
+
+#~ msgid "Rebuilds the system configuration cache."
+#~ msgstr "Повторное создание кэша системной конфигурации."
+
+#~ msgid "Reloading KDE configuration, please wait..."
+#~ msgstr "Обновление конфигурации KDE, подождите..."
+
+#~ msgid "KDE Configuration Manager"
+#~ msgstr "Администратор настройки KDE"
+
+#~ msgid "Do you want to reload KDE configuration?"
+#~ msgstr "Обновить конфигурацию KDE?"
+
+#~ msgid "Do Not Reload"
+#~ msgstr "Не обновлять"
+
+#~ msgid "Configuration information reloaded successfully."
+#~ msgstr "Конфигурация успешно обновлена."
+
+#~ msgid "Tool &Views"
+#~ msgstr "&Инструментарий"
+
+#~ msgid "MDI Mode"
+#~ msgstr "Режим MDI"
+
+#~ msgid "&Toplevel Mode"
+#~ msgstr "&Отдельные окна"
+
+#~ msgid "C&hildframe Mode"
+#~ msgstr "&Дочерние окна"
+
+#~ msgid "Ta&b Page Mode"
+#~ msgstr "&Вкладки"
+
+#~ msgid "I&DEAl Mode"
+#~ msgstr "I&DEAl"
+
+#~ msgid "Tool &Docks"
+#~ msgstr "&Фиксация"
+
+#~ msgid "Switch Top Dock"
+#~ msgstr "Вверху"
+
+#~ msgid "Switch Left Dock"
+#~ msgstr "Слева"
+
+#~ msgid "Switch Right Dock"
+#~ msgstr "Справа"
+
+#~ msgid "Switch Bottom Dock"
+#~ msgstr "Внизу"
+
+#~ msgid "Previous Tool View"
+#~ msgstr "Предыдущее отображение"
+
+#~ msgid "Next Tool View"
+#~ msgstr "Следующее отображение"
+
+#~ msgid "Show %1"
+#~ msgstr "Показать %1"
+
+#~ msgid "Hide %1"
+#~ msgstr "Скрыть %1"
+
+#~ msgid "Window"
+#~ msgstr "Окно"
+
+#~ msgid "Undock"
+#~ msgstr "Отстыковать"
+
+#~ msgid "Dock"
+#~ msgstr "Пристыковать"
+
+#~ msgid "Operations"
+#~ msgstr "Операции"
+
+#~ msgid "Close &All"
+#~ msgstr "Очистить &все"
+
+#~ msgid "&Minimize All"
+#~ msgstr "С&вернуть все"
+
+#~ msgid "&MDI Mode"
+#~ msgstr "Режим &MDI"
+
+#~ msgid "&Tile"
+#~ msgstr "В&выстроить окна"
+
+#~ msgid "Ca&scade Windows"
+#~ msgstr "Расположить окна &каскадом"
+
+#~ msgid "Cascade &Maximized"
+#~ msgstr "Развернуть к&аскадом"
+
+#~ msgid "Expand &Vertically"
+#~ msgstr "Развернуть &вертикально"
+
+#~ msgid "Expand &Horizontally"
+#~ msgstr "Развернуть &горизонтально"
+
+#~ msgid "Tile &Non-Overlapped"
+#~ msgstr "Выстроить &без перекрытия"
+
+#~ msgid "Tile Overla&pped"
+#~ msgstr "Выстроить с &перекрытием"
+
+#~ msgid "Tile V&ertically"
+#~ msgstr "Выстроить в&ертикально"
+
+#~ msgid "&Dock/Undock"
+#~ msgstr "&Пристыковать/Отстыковать"
+
+#~ msgid "Unnamed"
+#~ msgstr "Без имени"
+
+#~ msgid "R&esize"
+#~ msgstr "Изм&енить размер"
+
+#~ msgid "M&inimize"
+#~ msgstr "С&вернуть"
+
+#~ msgid "M&aximize"
+#~ msgstr "Р&азвернуть"
+
+#~ msgid "&Maximize"
+#~ msgstr "&Развернуть"
+
+#~ msgid "&Minimize"
+#~ msgstr "&Свернуть"
+
+#~ msgid "M&ove"
+#~ msgstr "&Переместить"
+
+#~ msgid "&Resize"
+#~ msgstr "Изменить &размер"
+
+#~ msgid "&Undock"
+#~ msgstr "&Отстыковать"
+
+#~ msgid ""
+#~ "_: Switch between overlap and side by side mode\n"
+#~ "Overlap"
+#~ msgstr "Перекрытие"
+
+#~ msgid "The library %1 does not offer an %2 function."
+#~ msgstr "Библиотека %1 не предоставляет функции %2."
+
+#~ msgid "The library %1 does not offer a KDE compatible factory."
+#~ msgstr "Библиотека %1 не предоставляет фабрику, совместимую с KDE."
+
+#~ msgid "Library files for \"%1\" not found in paths."
+#~ msgstr "Файлы библиотек для \"%1\" не найдены в путях поиска."
+
+#~ msgid ""
+#~ "_: Dear Translator! Translate this string to the string 'LTR' in left-to-"
+#~ "right languages (as english) or to 'RTL' in right-to-left languages (such "
+#~ "as Hebrew and Arabic) to get proper widget layout."
+#~ msgstr "LTR"
+
+#~ msgid ""
+#~ "There was an error setting up inter-process communications for KDE. The "
+#~ "message returned by the system was:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ошибка установки межпроцессного взаимодействия для KDE.\n"
+#~ "Сообщение системы:\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "Please check that the \"dcopserver\" program is running!"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Проверьте, запущена ли программа \"dcopserver\"."
+
+#~ msgid "DCOP communications error (%1)"
+#~ msgstr "Ошибка связи по протоколу DCOP (%1)"
+
+#~ msgid "Use the X-server display 'displayname'"
+#~ msgstr "Использовать дисплей X-сервера 'displayname'"
+
+#~ msgid "Use the QWS display 'displayname'"
+#~ msgstr "Использовать QWS дисплей 'displayname'"
+
+#~ msgid "Restore the application for the given 'sessionId'"
+#~ msgstr "Восстановить сеанс приложения по ключу 'sessionId'"
+
+#~ msgid ""
+#~ "Causes the application to install a private color\n"
+#~ "map on an 8-bit display"
+#~ msgstr ""
+#~ "В случае 8-битного дисплея приложение\n"
+#~ "будет использовать собственную таблицу\n"
+#~ "цветов"
+
+#~ msgid ""
+#~ "Limits the number of colors allocated in the color\n"
+#~ "cube on an 8-bit display, if the application is\n"
+#~ "using the QApplication::ManyColor color\n"
+#~ "specification"
+#~ msgstr ""
+#~ "Ограничить количество используемых \n"
+#~ "цветов на 8-битном дисплее. Этот параметр \n"
+#~ "работает только для приложений, \n"
+#~ "использующих режим\n"
+#~ "QApplication::ManyColor."
+
+#~ msgid "tells Qt to never grab the mouse or the keyboard"
+#~ msgstr "Запрещает Qt перехватывать мышь или клавиатуру"
+
+#~ msgid ""
+#~ "running under a debugger can cause an implicit\n"
+#~ "-nograb, use -dograb to override"
+#~ msgstr ""
+#~ "при запуске в отладчике применять\n"
+#~ "-nograb. Используйте -dograb, чтобы явно включить этот режим"
+
+#~ msgid "switches to synchronous mode for debugging"
+#~ msgstr "включает синхронный режим для отладки"
+
+#~ msgid "defines the application font"
+#~ msgstr "определяет шрифт приложения"
+
+#~ msgid ""
+#~ "sets the default background color and an\n"
+#~ "application palette (light and dark shades are\n"
+#~ "calculated)"
+#~ msgstr ""
+#~ "задаёт цвет фона по умолчанию и палитру\n"
+#~ "приложения (светлые и тёмные тени\n"
+#~ "вычисляются)."
+
+#~ msgid "sets the default foreground color"
+#~ msgstr "определяет цвет текста по умолчанию"
+
+#~ msgid "sets the default button color"
+#~ msgstr "определяет цвет кнопок по умолчанию"
+
+#~ msgid "sets the application name"
+#~ msgstr "определяет имя приложения"
+
+#~ msgid "sets the application title (caption)"
+#~ msgstr "устанавливает заголовок приложения"
+
+#~ msgid ""
+#~ "forces the application to use a TrueColor visual on\n"
+#~ "an 8-bit display"
+#~ msgstr ""
+#~ "Приложение будет работать с 8-битным\n"
+#~ "дисплеем как с полноцветным устройством."
+
+#~ msgid ""
+#~ "sets XIM (X Input Method) input style. Possible\n"
+#~ "values are onthespot, overthespot, offthespot and\n"
+#~ "root"
+#~ msgstr ""
+#~ "Устанавливает тип ввода XIM (X Input Method).\n"
+#~ "Возможные значения: onthespot, overthespot, offthespot и \n"
+#~ "root."
+
+#~ msgid "disable XIM"
+#~ msgstr "запретить XIM"
+
+#~ msgid "forces the application to run as QWS Server"
+#~ msgstr "Заставляет приложение работать как QWS сервер"
+
+#~ msgid "mirrors the whole layout of widgets"
+#~ msgstr "отразить расположение виджетов"
+
+#~ msgid "Use 'caption' as name in the titlebar"
+#~ msgstr "Использовать имя 'caption' в заголовке"
+
+#~ msgid "Use 'icon' as the application icon"
+#~ msgstr "Использовать 'icon' как значок приложения"
+
+#~ msgid "Use 'icon' as the icon in the titlebar"
+#~ msgstr "Использовать 'icon' как значок заголовка окна"
+
+#~ msgid "Use alternative configuration file"
+#~ msgstr "Использовать альтернативный файл конфигурации"
+
+#~ msgid "Use the DCOP Server specified by 'server'"
+#~ msgstr "Использовать сервер DCOP 'server'"
+
+#~ msgid "Disable crash handler, to get core dumps"
+#~ msgstr ""
+#~ "Отключить обработчик сбоев. Это позволит в случае сбоя получить core dump."
+
+#~ msgid "Waits for a WM_NET compatible windowmanager"
+#~ msgstr "Ожидать инициализации WM_NET-совместимого оконного менеджера"
+
+#~ msgid "sets the application GUI style"
+#~ msgstr "устанавливает стиль графического интерфейса приложения"
+
+#~ msgid ""
+#~ "sets the client geometry of the main widget - see man X for the argument "
+#~ "format"
+#~ msgstr ""
+#~ "устанавливает положение и размер главного окна приложения - формат "
+#~ "аргумента см. в man X "
+
+#~ msgid "The style %1 was not found\n"
+#~ msgstr "Стиль %1 не найден\n"
+
+#~ msgid "modified"
+#~ msgstr "изменён"
+
+#~ msgid "Could not Launch Help Center"
+#~ msgstr "Не удаётся запустить Центр справки"
+
+#~ msgid ""
+#~ "Could not launch the KDE Help Center:\n"
+#~ "\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Не удаётся запустить Центр справки КДЕ:\n"
+#~ "\n"
+#~ "%1"
+
+#~ msgid "Could not Launch Mail Client"
+#~ msgstr "Не удаётся запустить почтовый клиент"
+
+#~ msgid ""
+#~ "Could not launch the mail client:\n"
+#~ "\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Не удаётся запустить почтовый клиент:\n"
+#~ "\n"
+#~ "%1"
+
+#~ msgid "Could not Launch Browser"
+#~ msgstr "Не удаётся запустить браузер"
+
+#~ msgid ""
+#~ "Could not launch the browser:\n"
+#~ "\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Не удаётся запустить браузер:\n"
+#~ "\n"
+#~ "%1"
+
+#~ msgid "Could not register with DCOP.\n"
+#~ msgstr "Ошибка регистрации на сервере DCOP.\n"
+
+#~ msgid "KLauncher could not be reached via DCOP.\n"
+#~ msgstr "DCOP сервер не обеспечивает доступа к KLauncher.\n"
+
+#~ msgid "Desktop %1"
+#~ msgstr "Рабочий стол %1"
+
+#~ msgid "Will not save configuration.\n"
+#~ msgstr "Конфигурация не будет сохранена.\n"
+
+#~ msgid "Configuration file \"%1\" not writable.\n"
+#~ msgstr "Нет доступа для записи в файл конфигурации \"%1\".\n"
+
+#~ msgid "Please contact your system administrator."
+#~ msgstr "Свяжитесь с вашим системным администратором."
+
+#~ msgid "Unknown option '%1'."
+#~ msgstr "Неизвестный параметр '%1'."
+
+#~ msgid "'%1' missing."
+#~ msgstr "Отсутствует '%1'."
+
+#~ msgid ""
+#~ "_: the 2nd argument is a list of name+address, one on each line\n"
+#~ "%1 was written by\n"
+#~ "%2"
+#~ msgstr ""
+#~ "автор(ы) %1:\n"
+#~ "%2"
+
+#~ msgid ""
+#~ "This application was written by somebody who wants to remain anonymous."
+#~ msgstr "Автор программы пожелал остаться неизвестным."
+
+#~ msgid "Please use http://bugs.kde.org to report bugs.\n"
+#~ msgstr "Используйте http://bugs.kde.org для сообщений об ошибках.\n"
+
+#~ msgid "Please report bugs to %1.\n"
+#~ msgstr "Используйте %1 для сообщений об ошибках.\n"
+
+#~ msgid "Unexpected argument '%1'."
+#~ msgstr "Непредвиденный аргумент '%1'."
+
+#~ msgid "Use --help to get a list of available command line options."
+#~ msgstr ""
+#~ "Используйте --help для вывода списка доступных параметров командной "
+#~ "строки."
+
+#~ msgid ""
+#~ "\n"
+#~ "%1:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%1:\n"
+
+#~ msgid "[options] "
+#~ msgstr "[параметры]"
+
+#~ msgid "[%1-options]"
+#~ msgstr "[параметры %1]"
+
+#~ msgid "Usage: %1 %2\n"
+#~ msgstr "Применение: %1 %2\n"
+
+#~ msgid "Generic options"
+#~ msgstr "Общие параметры"
+
+#~ msgid "Show help about options"
+#~ msgstr "Показать справку о параметрах"
+
+#~ msgid "Show %1 specific options"
+#~ msgstr "Показать специфические параметры %1"
+
+#~ msgid "Show all options"
+#~ msgstr "Показать все параметры"
+
+#~ msgid "Show author information"
+#~ msgstr "Показать сведения об авторе"
+
+#~ msgid "Show version information"
+#~ msgstr "Показать сведения о версии"
+
+#~ msgid "Show license information"
+#~ msgstr "Показать сведения о лицензии"
+
+#~ msgid "End of options"
+#~ msgstr "Конец параметров"
+
+#~ msgid "%1 options"
+#~ msgstr "параметры %1"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Параметры:\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Arguments:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Аргументы:\n"
+
+#~ msgid "The files/URLs opened by the application will be deleted after use"
+#~ msgstr ""
+#~ "Файлы или URL, открытые приложением, будут удалены после использования"
+
+#~ msgid "<unknown socket>"
+#~ msgstr "<неизв. сокет>"
+
+#~ msgid "<empty>"
+#~ msgstr "<нет>"
+
+#~ msgid ""
+#~ "_: 1: hostname, 2: port number\n"
+#~ "%1 port %2"
+#~ msgstr "порт %2 на %1"
+
+#~ msgid "<empty UNIX socket>"
+#~ msgstr "<пустой Unix-сокет>"
+
+#~ msgid "Dr. Klash' Accelerator Diagnosis"
+#~ msgstr "Диагностика акселераторов имени от Dr. Klash"
+
+#~ msgid "&Disable automatic checking"
+#~ msgstr "&Отключить автоматическую проверку"
+
+#~ msgid "<h2>Accelerators changed</h2>"
+#~ msgstr "<h2>Акселераторы изменены</h2>"
+
+#~ msgid "<h2>Accelerators removed</h2>"
+#~ msgstr "<h2>Акселераторы удалены</h2> "
+
+#~ msgid "<h2>Accelerators added (just for your info)</h2>"
+#~ msgstr "<h2>Акселераторы добавлены</h2> "
+
+#~ msgid "New"
+#~ msgstr "Создать"
+
+#~ msgid "Paste Selection"
+#~ msgstr "Вставить выделение"
+
+#~ msgid "Deselect"
+#~ msgstr "Отменить выделение"
+
+#~ msgid "Delete Word Backwards"
+#~ msgstr "Удалить слово перед курсором"
+
+#~ msgid "Delete Word Forward"
+#~ msgstr "Удалить слово за курсором"
+
+#~ msgid "Find"
+#~ msgstr "Найти"
+
+#~ msgid "Find Next"
+#~ msgstr "Найти далее"
+
+#~ msgid "Find Prev"
+#~ msgstr "Найти ранее"
+
+#~ msgid "Navigation"
+#~ msgstr "Переход"
+
+#~ msgid ""
+#~ "_: Opposite to End\n"
+#~ "Home"
+#~ msgstr "Начало"
+
+#~ msgid "End"
+#~ msgstr "В конец"
+
+#~ msgid "Beginning of Line"
+#~ msgstr "Начало строки"
+
+#~ msgid "End of Line"
+#~ msgstr "Конец строки"
+
+#~ msgid "Prior"
+#~ msgstr "Предыдущий"
+
+#~ msgid ""
+#~ "_: Opposite to Prior\n"
+#~ "Next"
+#~ msgstr "Следующий"
+
+#~ msgid "Go to Line"
+#~ msgstr "Перейти к строке"
+
+#~ msgid "Add Bookmark"
+#~ msgstr "Добавить закладку"
+
+#~ msgid "Zoom In"
+#~ msgstr "Увеличить"
+
+#~ msgid "Zoom Out"
+#~ msgstr "Уменьшить"
+
+#~ msgid "Up"
+#~ msgstr "Вверх"
+
+#~ msgid "Forward"
+#~ msgstr "Вперёд"
+
+#~ msgid "Popup Menu Context"
+#~ msgstr "Показать контекстное меню"
+
+#~ msgid "Show Menu Bar"
+#~ msgstr "Показать меню"
+
+#~ msgid "Backward Word"
+#~ msgstr "На слово назад"
+
+#~ msgid "Forward Word"
+#~ msgstr "На слово вперёд"
+
+#~ msgid "Activate Next Tab"
+#~ msgstr "Активировать следующую вкладку"
+
+#~ msgid "Activate Previous Tab"
+#~ msgstr "Активировать предыдущую вкладку"
+
+#~ msgid "Full Screen Mode"
+#~ msgstr "Полноэкранный режим"
+
+#~ msgid "What's This"
+#~ msgstr "Что это"
+
+#~ msgid "Text Completion"
+#~ msgstr "Завершение текста"
+
+#~ msgid "Previous Completion Match"
+#~ msgstr "Предыдущий вариант завершения"
+
+#~ msgid "Next Completion Match"
+#~ msgstr "Следующий вариант завершения"
+
+#~ msgid "Substring Completion"
+#~ msgstr "Завершение строки"
+
+#~ msgid "Previous Item in List"
+#~ msgstr "Предыдущий элемент в списке"
+
+#~ msgid "Next Item in List"
+#~ msgstr "Следующий элемент в списке"
+
+#~ msgid "Muharram"
+#~ msgstr "Мухаррам"
+
+#~ msgid "Safar"
+#~ msgstr "Сафар"
+
+#~ msgid "R. Awal"
+#~ msgstr "Раби-уль-авваль"
+
+#~ msgid "R. Thaani"
+#~ msgstr "Раби-уль-ахир"
+
+#~ msgid "J. Awal"
+#~ msgstr "Джумад-уль-авваль"
+
+#~ msgid "J. Thaani"
+#~ msgstr "Джумад-уль-ахир"
+
+#~ msgid "Rajab"
+#~ msgstr "Раджаб"
+
+#~ msgid "Sha`ban"
+#~ msgstr "Ша'бан"
+
+#~ msgid "Ramadan"
+#~ msgstr "Рамадан"
+
+#~ msgid "Shawwal"
+#~ msgstr "Шавваль"
+
+#~ msgid "Qi`dah"
+#~ msgstr "Зуль-ка'да"
+
+#~ msgid "Hijjah"
+#~ msgstr "Зуль-хиджжа"
+
+#~ msgid "Rabi` al-Awal"
+#~ msgstr "Раби-уль-авваль"
+
+#~ msgid "Rabi` al-Thaani"
+#~ msgstr "Раби-уль-ахир"
+
+#~ msgid "Jumaada al-Awal"
+#~ msgstr "Джумад-уль-авваль"
+
+#~ msgid "Jumaada al-Thaani"
+#~ msgstr "Джумад-уль-ахир"
+
+#~ msgid "Thu al-Qi`dah"
+#~ msgstr "Зуль-ка'да"
+
+#~ msgid "Thu al-Hijjah"
+#~ msgstr "Зуль-хиджжа"
+
+#~ msgid "of Muharram"
+#~ msgstr "Мухаррама"
+
+#~ msgid "of Safar"
+#~ msgstr "Сафара"
+
+#~ msgid "of R. Awal"
+#~ msgstr "of R. Awal"
+
+#~ msgid "of R. Thaani"
+#~ msgstr "of R. Thaani"
+
+#~ msgid "of J. Awal"
+#~ msgstr "of J. Awal"
+
+#~ msgid "of J. Thaani"
+#~ msgstr "of J. Thaani"
+
+#~ msgid "of Rajab"
+#~ msgstr "Раджаба"
+
+#~ msgid "of Sha`ban"
+#~ msgstr "Ша'бана"
+
+#~ msgid "of Ramadan"
+#~ msgstr "Рамадана"
+
+#~ msgid "of Shawwal"
+#~ msgstr "Шавваля"
+
+#~ msgid "of Qi`dah"
+#~ msgstr "of Qi`dah"
+
+#~ msgid "of Hijjah"
+#~ msgstr "Хиджжа"
+
+#~ msgid "of Rabi` al-Awal"
+#~ msgstr "Раби-уль-авваля"
+
+#~ msgid "of Rabi` al-Thaani"
+#~ msgstr "of Rabi` al-Thaani"
+
+#~ msgid "of Jumaada al-Awal"
+#~ msgstr "of Jumaada al-Awal"
+
+#~ msgid "of Jumaada al-Thaani"
+#~ msgstr "of Jumaada al-Thaani"
+
+#~ msgid "of Thu al-Qi`dah"
+#~ msgstr "of Thu al-Qi`dah"
+
+#~ msgid "of Thu al-Hijjah"
+#~ msgstr "of Thu al-Hijjah"
+
+#~ msgid "Ith"
+#~ msgstr "Ith"
+
+#~ msgid "Thl"
+#~ msgstr "Thl"
+
+#~ msgid "Arb"
+#~ msgstr "Арб"
+
+#~ msgid "Kha"
+#~ msgstr "Kha"
+
+#~ msgid "Jum"
+#~ msgstr "Jum"
+
+#~ msgid "Sab"
+#~ msgstr "Sab"
+
+#~ msgid "Ahd"
+#~ msgstr "Ahd"
+
+#~ msgid "Yaum al-Ithnain"
+#~ msgstr "Yaum al-Ithnain"
+
+#~ msgid "Yau al-Thulatha"
+#~ msgstr "Yau al-Thulatha"
+
+#~ msgid "Yaum al-Arbi'a"
+#~ msgstr "Yaum al-Arbi'a"
+
+#~ msgid "Yaum al-Khamees"
+#~ msgstr "Yaum al-Khamees"
+
+#~ msgid "Yaum al-Jumma"
+#~ msgstr "Yaum al-Jumma"
+
+#~ msgid "Yaum al-Sabt"
+#~ msgstr "Yaum al-Sabt"
+
+#~ msgid "Yaum al-Ahad"
+#~ msgstr "Yaum al-Ahad"
+
+#~ msgid ""
+#~ "_: Dear translator, please do not translate this string in any form, but "
+#~ "pick the _right_ value out of NoPlural/TwoForms/French... If not sure "
+#~ "what to do mail thd@kde.org and coolo@kde.org, they will tell you. Better "
+#~ "leave that out if unsure, the programs will crash!!\n"
+#~ "Definition of PluralForm - to be set by the translator of kdelibs.po"
+#~ msgstr "Russian"
+
+#~ msgid ""
+#~ "_: January\n"
+#~ "Jan"
+#~ msgstr "Янв"
+
+#~ msgid ""
+#~ "_: February\n"
+#~ "Feb"
+#~ msgstr "Фев"
+
+#~ msgid ""
+#~ "_: March\n"
+#~ "Mar"
+#~ msgstr "Мар"
+
+#~ msgid ""
+#~ "_: April\n"
+#~ "Apr"
+#~ msgstr "Апр"
+
+#~ msgid ""
+#~ "_: May short\n"
+#~ "May"
+#~ msgstr "Май"
+
+#~ msgid ""
+#~ "_: June\n"
+#~ "Jun"
+#~ msgstr "Июн"
+
+#~ msgid ""
+#~ "_: July\n"
+#~ "Jul"
+#~ msgstr "Июл"
+
+#~ msgid ""
+#~ "_: August\n"
+#~ "Aug"
+#~ msgstr "Авг"
+
+#~ msgid ""
+#~ "_: September\n"
+#~ "Sep"
+#~ msgstr "Сен"
+
+#~ msgid ""
+#~ "_: October\n"
+#~ "Oct"
+#~ msgstr "Окт"
+
+#~ msgid ""
+#~ "_: November\n"
+#~ "Nov"
+#~ msgstr "Ноя"
+
+#~ msgid ""
+#~ "_: December\n"
+#~ "Dec"
+#~ msgstr "Дек"
+
+#~ msgid "January"
+#~ msgstr "Январь"
+
+#~ msgid "February"
+#~ msgstr "Февраль"
+
+#~ msgid "March"
+#~ msgstr "Март"
+
+#~ msgid "April"
+#~ msgstr "Апрель"
+
+#~ msgid ""
+#~ "_: May long\n"
+#~ "May"
+#~ msgstr "Май"
+
+#~ msgid "June"
+#~ msgstr "Июнь"
+
+#~ msgid "July"
+#~ msgstr "Июль"
+
+#~ msgid "August"
+#~ msgstr "Август"
+
+#~ msgid "September"
+#~ msgstr "Сентябрь"
+
+#~ msgid "October"
+#~ msgstr "Октябрь"
+
+#~ msgid "November"
+#~ msgstr "Ноябрь"
+
+#~ msgid "December"
+#~ msgstr "Декабрь"
+
+#~ msgid ""
+#~ "_: of January\n"
+#~ "of Jan"
+#~ msgstr "янв"
+
+#~ msgid ""
+#~ "_: of February\n"
+#~ "of Feb"
+#~ msgstr "фев"
+
+#~ msgid ""
+#~ "_: of March\n"
+#~ "of Mar"
+#~ msgstr "мар"
+
+#~ msgid ""
+#~ "_: of April\n"
+#~ "of Apr"
+#~ msgstr "апр"
+
+#~ msgid ""
+#~ "_: of May short\n"
+#~ "of May"
+#~ msgstr "мая"
+
+#~ msgid ""
+#~ "_: of June\n"
+#~ "of Jun"
+#~ msgstr "июн"
+
+#~ msgid ""
+#~ "_: of July\n"
+#~ "of Jul"
+#~ msgstr "июл"
+
+#~ msgid ""
+#~ "_: of August\n"
+#~ "of Aug"
+#~ msgstr "авг"
+
+#~ msgid ""
+#~ "_: of September\n"
+#~ "of Sep"
+#~ msgstr "сен"
+
+#~ msgid ""
+#~ "_: of October\n"
+#~ "of Oct"
+#~ msgstr "окт"
+
+#~ msgid ""
+#~ "_: of November\n"
+#~ "of Nov"
+#~ msgstr "ноя"
+
+#~ msgid ""
+#~ "_: of December\n"
+#~ "of Dec"
+#~ msgstr "дек"
+
+#~ msgid "of January"
+#~ msgstr "января"
+
+#~ msgid "of February"
+#~ msgstr "февраля"
+
+#~ msgid "of March"
+#~ msgstr "марта"
+
+#~ msgid "of April"
+#~ msgstr "апреля"
+
+#~ msgid ""
+#~ "_: of May long\n"
+#~ "of May"
+#~ msgstr "мая"
+
+#~ msgid "of June"
+#~ msgstr "июня"
+
+#~ msgid "of July"
+#~ msgstr "июля"
+
+#~ msgid "of August"
+#~ msgstr "августа"
+
+#~ msgid "of September"
+#~ msgstr "сентября"
+
+#~ msgid "of October"
+#~ msgstr "октября"
+
+#~ msgid "of December"
+#~ msgstr "декабря"
+
+#~ msgid "pm"
+#~ msgstr "pm"
+
+#~ msgid "am"
+#~ msgstr "am"
+
+#~ msgid ""
+#~ "_: concatenation of dates and time\n"
+#~ "%1 %2"
+#~ msgstr "%1 %2"
+
+#~ msgid "&Next"
+#~ msgstr "&Далее"
+
+#~ msgid "no error"
+#~ msgstr "нет ошибки"
+
+#~ msgid "address family for nodename not supported"
+#~ msgstr "семейство адресов для не поддерживается для данного nodename"
+
+#~ msgid "temporary failure in name resolution"
+#~ msgstr "временный сбой разрешения имён"
+
+#~ msgid "invalid value for 'ai_flags'"
+#~ msgstr "неверное значение для 'ai_flags'"
+
+#~ msgid "non-recoverable failure in name resolution"
+#~ msgstr "фатальный сбой разрешения имён"
+
+#~ msgid "'ai_family' not supported"
+#~ msgstr "семейство 'ai_family' не поддерживается"
+
+#~ msgid "memory allocation failure"
+#~ msgstr "ошибка выделения памяти"
+
+#~ msgid "no address associated with nodename"
+#~ msgstr "с данным узлом (nodename) не связан никакой адрес"
+
+#~ msgid "name or service not known"
+#~ msgstr "неизвестное имя или сервис"
+
+#~ msgid "servname not supported for ai_socktype"
+#~ msgstr "servname не поддерживается для типа ai_socktype"
+
+#~ msgid "'ai_socktype' not supported"
+#~ msgstr "тип 'ai_socktype' не поддерживается"
+
+#~ msgid "system error"
+#~ msgstr "системная ошибка"
+
+#~ msgid "Far"
+#~ msgstr "Фар"
+
+#~ msgid "Ord"
+#~ msgstr "Орд"
+
+#~ msgid "Kho"
+#~ msgstr "Хо"
+
+#~ msgid "Tir"
+#~ msgstr "Тир"
+
+#~ msgid "Mor"
+#~ msgstr "Мор"
+
+#~ msgid "Sha"
+#~ msgstr "Ша"
+
+#~ msgid "Meh"
+#~ msgstr "Meh"
+
+#~ msgid "Aba"
+#~ msgstr "Аба"
+
+#~ msgid "Aza"
+#~ msgstr "Аза"
+
+#~ msgid "Dei"
+#~ msgstr "Dei"
+
+#~ msgid "Bah"
+#~ msgstr "Bah"
+
+#~ msgid "Esf"
+#~ msgstr "Esf"
+
+#~ msgid "Farvardin"
+#~ msgstr "Farvardin"
+
+#~ msgid "Ordibehesht"
+#~ msgstr "Ordibehesht"
+
+#~ msgid "Khordad"
+#~ msgstr "Хордад"
+
+#~ msgid "Mordad"
+#~ msgstr "Мордад"
+
+#~ msgid "Shahrivar"
+#~ msgstr "Шахривар"
+
+#~ msgid "Mehr"
+#~ msgstr "Мер"
+
+#~ msgid "Aban"
+#~ msgstr "Абан"
+
+#~ msgid "Azar"
+#~ msgstr "Азар"
+
+#~ msgid "Bahman"
+#~ msgstr "Бахман"
+
+#~ msgid "Esfand"
+#~ msgstr "Эсфанд"
+
+#~ msgid "2sh"
+#~ msgstr "2sh"
+
+#~ msgid "3sh"
+#~ msgstr "3sh"
+
+#~ msgid "4sh"
+#~ msgstr "4sh"
+
+#~ msgid "5sh"
+#~ msgstr "5sh"
+
+#~ msgid "Jom"
+#~ msgstr "Йом"
+
+#~ msgid "shn"
+#~ msgstr "shn"
+
+#~ msgid "1sh"
+#~ msgstr "1sh"
+
+#~ msgid "Do shanbe"
+#~ msgstr "Do shanbe"
+
+#~ msgid "Se shanbe"
+#~ msgstr "Se shanbe"
+
+#~ msgid "Chahar shanbe"
+#~ msgstr "Chahar shanbe"
+
+#~ msgid "Panj shanbe"
+#~ msgstr "Panj shanbe"
+
+#~ msgid "Jumee"
+#~ msgstr "Jumee"
+
+#~ msgid "Shanbe"
+#~ msgstr "Shanbe"
+
+#~ msgid "Yek-shanbe"
+#~ msgstr "Yek-shanbe"
+
+#~ msgid "Backspace"
+#~ msgstr "Backspace"
+
+#~ msgid "SysReq"
+#~ msgstr "SysReq"
+
+#~ msgid "CapsLock"
+#~ msgstr "CapsLock"
+
+#~ msgid "NumLock"
+#~ msgstr "NumLock"
+
+#~ msgid "ScrollLock"
+#~ msgstr "ScrollLock"
+
+#~ msgid "PageUp"
+#~ msgstr "PageUp"
+
+#~ msgid "PageDown"
+#~ msgstr "PageDown"
+
+#~ msgid "Again"
+#~ msgstr "Снова"
+
+#~ msgid "Props"
+#~ msgstr "Свойства"
+
+#~ msgid "Front"
+#~ msgstr "Фронт"
+
+#~ msgid "Arabic"
+#~ msgstr "Арабская"
+
+#~ msgid "Baltic"
+#~ msgstr "Прибалтика"
+
+#~ msgid "Central European"
+#~ msgstr "Центральная Европа"
+
+#~ msgid "Chinese Simplified"
+#~ msgstr "Китайская (КНР)"
+
+#~ msgid "Chinese Traditional"
+#~ msgstr "Китайская (Тайвань)"
+
+#~ msgid "Cyrillic"
+#~ msgstr "Кириллица"
+
+#~ msgid "Greek"
+#~ msgstr "Греческая"
+
+#~ msgid "Hebrew"
+#~ msgstr "Иврит"
+
+#~ msgid "Japanese"
+#~ msgstr "Японская"
+
+#~ msgid "Korean"
+#~ msgstr "Корейская"
+
+#~ msgid "Thai"
+#~ msgstr "Тайская"
+
+#~ msgid "Turkish"
+#~ msgstr "Турецкая"
+
+#~ msgid "Western European"
+#~ msgstr "Западная Европа"
+
+#~ msgid "Tamil"
+#~ msgstr "Тамильская"
+
+#~ msgid "Unicode"
+#~ msgstr "Юникод"
+
+#~ msgid "Northern Saami"
+#~ msgstr "Северное Саами"
+
+#~ msgid "Vietnamese"
+#~ msgstr "Вьетнамская"
+
+#~ msgid "South-Eastern Europe"
+#~ msgstr "Юго-восточная Европа"
+
+#~ msgid ""
+#~ "_: Descriptive Encoding Name\n"
+#~ "%1 ( %2 )"
+#~ msgstr "%1 (%2)"
+
+#~ msgid "Trash"
+#~ msgstr "Корзина"
+
+#~ msgid ""
+#~ "You reached the end of the list\n"
+#~ "of matching items.\n"
+#~ msgstr ""
+#~ "Достигнут конец списка\n"
+#~ "совпадающих элементов.\n"
+
+#~ msgid ""
+#~ "The completion is ambiguous, more than one\n"
+#~ "match is available.\n"
+#~ msgstr ""
+#~ "Завершение неоднозначно, существует более\n"
+#~ "одного варианта.\n"
+
+#~ msgid "There is no matching item available.\n"
+#~ msgstr "Нет совпадающих элементов.\n"
+
+#~ msgid "Tishrey"
+#~ msgstr "Тишрей"
+
+#~ msgid "Heshvan"
+#~ msgstr "Хешван"
+
+#~ msgid "Kislev"
+#~ msgstr "Кислев"
+
+#~ msgid "Tevet"
+#~ msgstr "Тевет"
+
+#~ msgid "Shvat"
+#~ msgstr "Шват"
+
+#~ msgid "Adar"
+#~ msgstr "Адар"
+
+#~ msgid "Nisan"
+#~ msgstr "Нисан"
+
+#~ msgid "Iyar"
+#~ msgstr "Ияр"
+
+#~ msgid "Sivan"
+#~ msgstr "Сиван"
+
+#~ msgid "Tamuz"
+#~ msgstr "Тамуз"
+
+#~ msgid "Av"
+#~ msgstr "Ав"
+
+#~ msgid "Elul"
+#~ msgstr "Элул"
+
+#~ msgid "Adar I"
+#~ msgstr "Адар I"
+
+#~ msgid "Adar II"
+#~ msgstr "Адар II"
+
+#~ msgid ""
+#~ "No licensing terms for this program have been specified.\n"
+#~ "Please check the documentation or the source for any\n"
+#~ "licensing terms.\n"
+#~ msgstr ""
+#~ "Лицензия в данной программе не указана.\n"
+#~ "Возможно, она указана в документации или в исходных текстах этой "
+#~ "программы.\n"
+
+#~ msgid "This program is distributed under the terms of the %1."
+#~ msgstr "Программа распространяется на условиях %1."
+
+#~ msgid ""
+#~ "_: Monday\n"
+#~ "Mon"
+#~ msgstr "Пн"
+
+#~ msgid ""
+#~ "_: Tuesday\n"
+#~ "Tue"
+#~ msgstr "Вт"
+
+#~ msgid ""
+#~ "_: Wednesday\n"
+#~ "Wed"
+#~ msgstr "Ср"
+
+#~ msgid ""
+#~ "_: Thursday\n"
+#~ "Thu"
+#~ msgstr "Чт"
+
+#~ msgid ""
+#~ "_: Friday\n"
+#~ "Fri"
+#~ msgstr "Пт"
+
+#~ msgid ""
+#~ "_: Saturday\n"
+#~ "Sat"
+#~ msgstr "Сб"
+
+#~ msgid ""
+#~ "_: Sunday\n"
+#~ "Sun"
+#~ msgstr "Вс"
+
+#~ msgid "NEC SOCKS client"
+#~ msgstr "Клиент NEC SOCKS"
+
+#~ msgid "Dante SOCKS client"
+#~ msgstr "Клиент Dante SOCKS"
+
+#~ msgid "Directory to generate files in"
+#~ msgstr "Каталог для генерации файлов"
+
+#~ msgid "Input kcfg XML file"
+#~ msgstr "Входной файл XML компилятора kcfg"
+
+#~ msgid "Code generation options file"
+#~ msgstr "Файл параметров генерации кода"
+
+#~ msgid "KDE .kcfg compiler"
+#~ msgstr "Компилятор .kcfg среды KDE"
+
+#~ msgid "KConfig Compiler"
+#~ msgstr "Компилятор KConfig"
+
+#~ msgid "requested family not supported for this host name"
+#~ msgstr "Для указанного имени сервера требуемое семейство не поддерживается"
+
+#~ msgid "invalid flags"
+#~ msgstr "неверные флаги"
+
+#~ msgid "requested family not supported"
+#~ msgstr "запрошенное семейство не поддерживается"
+
+#~ msgid "requested service not supported for this socket type"
+#~ msgstr "запрошенный сервис не поддерживается этим типом сокета"
+
+#~ msgid "requested socket type not supported"
+#~ msgstr "запрошенный тип сокета не поддерживается"
+
+#~ msgid "unknown error"
+#~ msgstr "неизвестная ошибка"
+
+#~ msgid ""
+#~ "_: 1: the i18n'ed system error code, from errno\n"
+#~ "system error: %1"
+#~ msgstr "системная ошибка: %1"
+
+#~ msgid "request was canceled"
+#~ msgstr "запрос отменён"
+
+#~ msgid ""
+#~ "_: Socket error code NoError\n"
+#~ "no error"
+#~ msgstr "нет ошибки"
+
+#~ msgid ""
+#~ "_: Socket error code LookupFailure\n"
+#~ "name lookup has failed"
+#~ msgstr "ошибка разрешения имени"
+
+#~ msgid ""
+#~ "_: Socket error code AddressInUse\n"
+#~ "address already in use"
+#~ msgstr "адрес уже используется"
+
+#~ msgid ""
+#~ "_: Socket error code AlreadyBound\n"
+#~ "socket is already bound"
+#~ msgstr "сокет уже связан с адресом и портом"
+
+#~ msgid ""
+#~ "_: Socket error code AlreadyCreated\n"
+#~ "socket is already created"
+#~ msgstr "сокет уже создан"
+
+#~ msgid ""
+#~ "_: Socket error code NotBound\n"
+#~ "socket is not bound"
+#~ msgstr "сокет свободен"
+
+#~ msgid ""
+#~ "_: Socket error code NotCreated\n"
+#~ "socket has not been created"
+#~ msgstr "сокет не создан"
+
+#~ msgid ""
+#~ "_: Socket error code WouldBlock\n"
+#~ "operation would block"
+#~ msgstr "операция привела бы к блокировке"
+
+#~ msgid ""
+#~ "_: Socket error code ConnectionRefused\n"
+#~ "connection actively refused"
+#~ msgstr "соединение отвергнуто"
+
+#~ msgid ""
+#~ "_: Socket error code ConnectionTimedOut\n"
+#~ "connection timed out"
+#~ msgstr "время ожидания соединения истекло"
+
+#~ msgid ""
+#~ "_: Socket error code InProgress\n"
+#~ "operation is already in progress"
+#~ msgstr "операция уже выполняется"
+
+#~ msgid ""
+#~ "_: Socket error code NetFailure\n"
+#~ "network failure occurred"
+#~ msgstr "сбой сети"
+
+#~ msgid ""
+#~ "_: Socket error code NotSupported\n"
+#~ "operation is not supported"
+#~ msgstr "операция не поддерживается"
+
+#~ msgid ""
+#~ "_: Socket error code Timeout\n"
+#~ "timed operation timed out"
+#~ msgstr "истекло время ожидания операции"
+
+#~ msgid ""
+#~ "_: Socket error code UnknownError\n"
+#~ "an unknown/unexpected error has happened"
+#~ msgstr "неизвестная или непредвиденная ошибка"
+
+#~ msgid ""
+#~ "_: Socket error code RemotelyDisconnected\n"
+#~ "remote host closed connection"
+#~ msgstr "Удаленный узел закрыл соединение"
+
+#~ msgid ""
+#~ "_: 1: the unknown socket address family number\n"
+#~ "Unknown family %1"
+#~ msgstr "Неизвестное семейство %1"
+
+#~ msgid "Share Hot New Stuff"
+#~ msgstr "Опубликовать"
+
+#~ msgid "Name:"
+#~ msgstr "Имя:"
+
+#~ msgid "Author:"
+#~ msgstr "Автор:"
+
+#~ msgid "Email:"
+#~ msgstr "E-mail:"
+
+#~ msgid "Version:"
+#~ msgstr "Версия:"
+
+#~ msgid "Release:"
+#~ msgstr "Выпуск:"
+
+#~ msgid "License:"
+#~ msgstr "Лицензия:"
+
+#~ msgid "GPL"
+#~ msgstr "GPL"
+
+#~ msgid "LGPL"
+#~ msgstr "LGPL"
+
+#~ msgid "BSD"
+#~ msgstr "BSD"
+
+#~ msgid "Language:"
+#~ msgstr "Язык:"
+
+#~ msgid "Preview URL:"
+#~ msgstr "URL для просмотра:"
+
+#~ msgid "Summary:"
+#~ msgstr "Сводка:"
+
+#~ msgid "Please put in a name."
+#~ msgstr "Введите имя."
+
+#~ msgid "Old upload information found, fill out fields?"
+#~ msgstr "Обнаружены параметры прежнего опубликования. Использовать их?"
+
+#~ msgid "Fill Out"
+#~ msgstr "Да"
+
+#~ msgid "Do Not Fill Out"
+#~ msgstr "Нет"
+
+#~ msgid "The file '%1' already exists. Do you want to overwrite it?"
+#~ msgstr "Файл с именем '%1' уже существует. Заменить его?"
+
+#~ msgid "Overwrite"
+#~ msgstr "Заменить"
+
+#~ msgid "Error parsing providers list."
+#~ msgstr "Ошибка обработки списка поставщиков."
+
+#~ msgid "Get Hot New Stuff"
+#~ msgstr "Получить"
+
+#~ msgid "Welcome"
+#~ msgstr "Приветствие"
+
+#~ msgid "Highest Rated"
+#~ msgstr "Наивысший рейтинг"
+
+#~ msgid "Most Downloads"
+#~ msgstr "Наиболее популярные"
+
+#~ msgid "Latest"
+#~ msgstr "Последние"
+
+#~ msgid "Version"
+#~ msgstr "Версия"
+
+#~ msgid "Rating"
+#~ msgstr "Рейтинг"
+
+#~ msgid "Downloads"
+#~ msgstr "Скачать"
+
+#~ msgid "Release Date"
+#~ msgstr "Дата выпуска"
+
+#~ msgid "Install"
+#~ msgstr "Установить"
+
+#~ msgid "Details"
+#~ msgstr "Сведения"
+
+#~ msgid ""
+#~ "Name: %1\n"
+#~ "Author: %2\n"
+#~ "License: %3\n"
+#~ "Version: %4\n"
+#~ "Release: %5\n"
+#~ "Rating: %6\n"
+#~ "Downloads: %7\n"
+#~ "Release date: %8\n"
+#~ "Summary: %9\n"
+#~ msgstr ""
+#~ "Имя: %1\n"
+#~ "Автор: %2\n"
+#~ "Лицензия: %3\n"
+#~ "Версия: %4\n"
+#~ "Выпуск: %5\n"
+#~ "Рейтинг: %6\n"
+#~ "Загрузки: %7\n"
+#~ "Дата выпуска: %8\n"
+#~ "Сведения: %9\n"
+
+#~ msgid ""
+#~ "Preview: %1\n"
+#~ "Payload: %2\n"
+#~ msgstr ""
+#~ "Ознакомление: %1\n"
+#~ "Коммерческая информация: %2\n"
+
+#~ msgid "Installation successful."
+#~ msgstr "Установка выполнена успешно."
+
+#~ msgid "Installation"
+#~ msgstr "Установка"
+
+#~ msgid "Installation failed."
+#~ msgstr "Установка не выполнена."
+
+#~ msgid "Preview not available."
+#~ msgstr "Образец недоступен."
+
+#~ msgid "Download New %1"
+#~ msgstr "Загрузить обновление %1"
+
+#~ msgid "Successfully installed hot new stuff."
+#~ msgstr "Успешная установка."
+
+#~ msgid "Failed to install hot new stuff."
+#~ msgstr "Ошибка установки."
+
+#~ msgid "Unable to create file to upload."
+#~ msgstr "Не удалось создать файл для загрузки."
+
+#~ msgid "The files to be uploaded have been created at:\n"
+#~ msgstr "Файлы для загрузки успешно созданы в:\n"
+
+#~ msgid "Data file: %1\n"
+#~ msgstr "Файл данных: %1\n"
+
+#~ msgid "Preview image: %1\n"
+#~ msgstr "Миниатюра: %1\n"
+
+#~ msgid "Content information: %1\n"
+#~ msgstr "Содержимое: %1\n"
+
+#~ msgid "Those files can now be uploaded.\n"
+#~ msgstr "Эти файлы сейчас могут быть переданы.\n"
+
+#~ msgid "Beware that any people might have access to them at any time."
+#~ msgstr "Учтите, что любые люди получат доступ к этим файлам в любое время."
+
+#~ msgid "Upload Files"
+#~ msgstr "Передать файлы"
+
+#~ msgid "Please upload the files manually."
+#~ msgstr "Передайте файлы вручную."
+
+#~ msgid "Upload Info"
+#~ msgstr "Информация о передаче"
+
+#~ msgid "&Upload"
+#~ msgstr "&Передать"
+
+#~ msgid "Successfully uploaded new stuff."
+#~ msgstr "Файлы успешно переданы."
+
+#~ msgid "Download New Stuff"
+#~ msgstr "Загрузить новые материалы"
+
+#~ msgid ""
+#~ "There was an error with the downloaded resource tarball file. Possible "
+#~ "causes are damaged archive or invalid directory structure in the archive."
+#~ msgstr ""
+#~ "С загруженным файлом ресурсов произошла ошибка. Возможные причины - "
+#~ "поврежденный архив или неверная структура каталогов в архиве."
+
+#~ msgid "Resource Installation Error"
+#~ msgstr "Ошибка установки ресурса"
+
+#~ msgid "No keys were found."
+#~ msgstr "Ключи не найдены"
+
+#~ msgid "The validation failed for unknown reason."
+#~ msgstr "Сбой проверки целостности по неизвестной причине."
+
+#~ msgid "The MD5SUM check failed, the archive might be broken."
+#~ msgstr "Сбой проверки MD5SUM, архив может быть поврежден."
+
+#~ msgid "The signature is bad, the archive might be broken or altered."
+#~ msgstr "Подпись неверна, архив может быть испорчен или изменен."
+
+#~ msgid "The signature is valid, but untrusted."
+#~ msgstr "Подпись верная, но ненадежная."
+
+#~ msgid "The signature is unknown."
+#~ msgstr "Подпись неизвестна."
+
+#~ msgid ""
+#~ "The resource was signed with key <i>0x%1</i>, belonging to <i>%2 <"
+#~ "%3></i>."
+#~ msgstr ""
+#~ "Ресурс был подписан ключом <i>0x%1</i>, принадлежащим <i>%2 <%3></"
+#~ "i>."
+
+#~ msgid ""
+#~ "<qt>There is a problem with the resource file you have downloaded. The "
+#~ "errors are :<b>%1</b><br>%2<br><br>Installation of the resource is <b>not "
+#~ "recommended</b>.<br><br>Do you want to proceed with the installation?</qt>"
+#~ msgstr ""
+#~ "<qt>С загруженным вами файлом ресурсов имеются следующие проблемы :<b>%1</"
+#~ "b><br>%2<br><br>Установка ресурса <b>не рекомендуется</b>."
+#~ "<br><br>Продолжить установку?</qt>"
+
+#~ msgid "Problematic Resource File"
+#~ msgstr "Проблематичный файл ресурса"
+
+#~ msgid "<qt>%1<br><br>Press OK to install it.</qt>"
+#~ msgstr "<qt>%1<br><br>Нажмите OK, чтобы установить его.</qt>"
+
+#~ msgid "Valid Resource"
+#~ msgstr "Действительный ресурс"
+
+#~ msgid "The signing failed for unknown reason."
+#~ msgstr "Сбой подписывания по неизвестной причине."
+
+#~ msgid ""
+#~ "There are no keys usable for signing or you did not entered the correct "
+#~ "passphrase.\n"
+#~ "Proceed without signing the resource?"
+#~ msgstr ""
+#~ "Нет ключей, пригодных для подписывания, или вы не ввели верную ключевую "
+#~ "фразу.\n"
+#~ "Продолжить без подписывания ресурса?"
+
+#~ msgid ""
+#~ "<qt>Cannot start <i>gpg</i> and retrieve the available keys. Make sure "
+#~ "that <i>gpg</i> is installed, otherwise verification of downloaded "
+#~ "resources will not be possible.</qt>"
+#~ msgstr ""
+#~ "<qt>Не удаётся запустить <i>gpg</i> и получить все доступные ключи. "
+#~ "Убедитесь, что программа <i>gpg</i> установлена, иначе верификация "
+#~ "загруженных ресурсов будет невозможна.</qt>"
+
+#~ msgid ""
+#~ "<qt>Enter passphrase for key <b>0x%1</b>, belonging to<br><i>%2<%3>"
+#~ "</i>:</qt>"
+#~ msgstr ""
+#~ "<qt>Введите ключевую фразу для ключа <b>0x%1</b>, принадлежащего<br><i>"
+#~ "%2<%3></i>:</qt>"
+
+#~ msgid ""
+#~ "<qt>Cannot start <i>gpg</i> and check the validity of the file. Make sure "
+#~ "that <i>gpg</i> is installed, otherwise verification of downloaded "
+#~ "resources will not be possible.</qt>"
+#~ msgstr ""
+#~ "<qt>Не удаётся запустить <i>gpg</i> и проверить целостность файла. "
+#~ "Убедитесь, что программа <i>gpg</i> установлена, иначе верификация "
+#~ "загруженных ресурсов будет невозможна.</qt>"
+
+#~ msgid "Select Signing Key"
+#~ msgstr "Выберите ключ для подписи"
+
+#~ msgid "Key used for signing:"
+#~ msgstr "Ключ, использовавшийся для подписи:"
+
+#~ msgid ""
+#~ "<qt>Cannot start <i>gpg</i> and sign the file. Make sure that <i>gpg</i> "
+#~ "is installed, otherwise signing of the resources will not be possible.</"
+#~ "qt>"
+#~ msgstr ""
+#~ "<qt>Не удаётся запустить <i>gpg</i> и подписать файл. Убедитесь, что "
+#~ "<i>gpg</i> установлена, иначе подписывание ресурсов будет невозможно.</qt>"
+
+#~ msgid "Get hot new stuff:"
+#~ msgstr "Получить новые материалы:"
+
+#~ msgid "Display only media of this type"
+#~ msgstr "Показывать материалы указанного типа"
+
+#~ msgid "Provider list to use"
+#~ msgstr "Список используемых провайдеров"
+
+#~ msgid "Hot New Stuff Providers"
+#~ msgstr "Поставщики материалов"
+
+#~ msgid "Please select one of the providers listed below:"
+#~ msgstr "Выберите поставщика из списка:"
+
+#~ msgid "No provider selected."
+#~ msgstr "Поставщик не выбран."
+
+#~ msgid "Clear Search"
+#~ msgstr "Очистить поиск"
+
+#~ msgid ""
+#~ "Search interactively for shortcut names (e.g. Copy) or combination of "
+#~ "keys (e.g. Ctrl+C) by typing them here."
+#~ msgstr ""
+#~ "Интерактивный поиск имён комбинаций клавиш (например, Копировать) или "
+#~ "самих комбинаций (например, Ctrl+C). Введите их в поле."
+
+#~ msgid ""
+#~ "Here you can see a list of key bindings, i.e. associations between "
+#~ "actions (e.g. 'Copy') shown in the left column and keys or combination of "
+#~ "keys (e.g. Ctrl+V) shown in the right column."
+#~ msgstr ""
+#~ "Здесь показан список <i>комбинаций клавиш</i>, т.е. соответствий между "
+#~ "действиями (например, 'Копировать'), приведёнными в левой колонке, и "
+#~ "клавиш или их сочетаний (например, CTRL-V), приведённых в правой колонке."
+
+#~ msgid "Action"
+#~ msgstr "Действие"
+
+#~ msgid "Shortcut"
+#~ msgstr "Комбинация клавиш"
+
+#~ msgid "Alternate"
+#~ msgstr "Альтернативно"
+
+#~ msgid "Shortcut for Selected Action"
+#~ msgstr "Клавиша для выбранного действия"
+
+#~ msgid ""
+#~ "_: no key\n"
+#~ "&None"
+#~ msgstr "&Нет"
+
+#~ msgid "The selected action will not be associated with any key."
+#~ msgstr "Данное действие не будет связано ни с одной клавишей."
+
+#~ msgid ""
+#~ "_: default key\n"
+#~ "De&fault"
+#~ msgstr "По &умолчанию"
+
+#~ msgid ""
+#~ "This will bind the default key to the selected action. Usually a "
+#~ "reasonable choice."
+#~ msgstr ""
+#~ "Данное действие будет связано с клавишей, установленной для него по "
+#~ "умолчанию. Как правило, это разумный выбор."
+
+#~ msgid "C&ustom"
+#~ msgstr "По выбор&у"
+
+#~ msgid ""
+#~ "If this option is selected you can create a customized key binding for "
+#~ "the selected action using the buttons below."
+#~ msgstr ""
+#~ "Если выбран этот вариант, вы можете назначить клавишу для выделенного "
+#~ "действия, используя кнопки внизу окна."
+
+#~ msgid ""
+#~ "Use this button to choose a new shortcut key. Once you click it, you can "
+#~ "press the key-combination which you would like to be assigned to the "
+#~ "currently selected action."
+#~ msgstr ""
+#~ "Используйте эту кнопку для выбора новой горячей клавиши. Нажав её, "
+#~ "выберите сочетание клавиш для выделенного действия."
+
+#~ msgid "Shortcuts"
+#~ msgstr "Комбинации клавиш"
+
+#~ msgid "Default key:"
+#~ msgstr "Клавиша по умолчанию:"
+
+#~ msgid "None"
+#~ msgstr "Нет"
+
+#~ msgid ""
+#~ "In order to use the '%1' key as a shortcut, it must be combined with the "
+#~ "Win, Alt, Ctrl, and/or Shift keys."
+#~ msgstr ""
+#~ "Клавиша '%1' может работать как акселератор только вместе с клавишами "
+#~ "Win, Alt, Ctrl и/или Shift."
+
+#~ msgid "Invalid Shortcut Key"
+#~ msgstr "Неверная комбинация клавиш"
+
+#~ msgid ""
+#~ "The '%1' key combination has already been allocated to the \"%2\" "
+#~ "action.\n"
+#~ "Please choose a unique key combination."
+#~ msgstr ""
+#~ "Сочетание клавиш %1 уже связано с действием \"%2\".\n"
+#~ "Выберите уникальное сочетание клавиш."
+
+#~ msgid "Conflict with Standard Application Shortcut"
+#~ msgstr "Конфликт со стандартной клавишей приложения"
+
+#~ msgid ""
+#~ "The '%1' key combination has already been allocated to the standard "
+#~ "action \"%2\".\n"
+#~ "Do you want to reassign it from that action to the current one?"
+#~ msgstr ""
+#~ "Комбинация клавиш '%1' уже связана со стандартным действием \"%2\".\n"
+#~ "Связать комбинацию с новым действием?"
+
+#~ msgid "Conflict with Global Shortcut"
+#~ msgstr "Конфликт с глобальной комбинацией"
+
+#~ msgid ""
+#~ "The '%1' key combination has already been allocated to the global action "
+#~ "\"%2\".\n"
+#~ "Do you want to reassign it from that action to the current one?"
+#~ msgstr ""
+#~ "Комбинация клавиш '%1' уже связана с глобальным действием \"%2\".\n"
+#~ "Связать комбинацию с новым действием?"
+
+#~ msgid "Key Conflict"
+#~ msgstr "Конфликт клавиш"
+
+#~ msgid ""
+#~ "The '%1' key combination has already been allocated to the \"%2\" "
+#~ "action.\n"
+#~ "Do you want to reassign it from that action to the current one?"
+#~ msgstr ""
+#~ "Комбинация клавиш %1 уже связана с действием \"%2\".\n"
+#~ "Связать комбинацию с новым действием?"
+
+#~ msgid "Reassign"
+#~ msgstr "Связать с новым"
+
+#~ msgid "Configure Shortcuts"
+#~ msgstr "Настройка комбинаций клавиш"
+
+#~ msgid "Close this tab"
+#~ msgstr "Закрыть эту вкладку"
+
+#~ msgid "Select Region of Image"
+#~ msgstr "Выбор области изображения"
+
+#~ msgid "Please click and drag on the image to select the region of interest:"
+#~ msgstr ""
+#~ "Нажмите кнопку мыши и перемещайте указатель, чтобы выбрать интересующую "
+#~ "область:"
+
+#~ msgid "Switch application language"
+#~ msgstr "Изменить язык приложения"
+
+#~ msgid "Please choose language which should be used for this application"
+#~ msgstr ""
+#~ "Выберите язык интерфейса, который вы хотите использовать в этом приложении"
+
+#~ msgid "Add fallback language"
+#~ msgstr "Язык по умолчанию"
+
+#~ msgid ""
+#~ "Adds one more language which will be used if other translations do not "
+#~ "contain proper translation"
+#~ msgstr ""
+#~ "Установить один или несколько языков, которые будут использоваться, если "
+#~ "нет перевода на основном языке"
+
+#~ msgid ""
+#~ "Language for this application has been changed. The change will take "
+#~ "effect upon next start of application"
+#~ msgstr ""
+#~ "Язык интерфейса приложения изменён. Это изменение вступит в силу при "
+#~ "следующем запуске приложения"
+
+#~ msgid "Application language changed"
+#~ msgstr "Изменён язык интерфейса"
+
+#~ msgid "Primary language:"
+#~ msgstr "Основной язык:"
+
+#~ msgid "Fallback language:"
+#~ msgstr "Язык по умолчанию:"
+
+#~ msgid ""
+#~ "This is main application language which will be used first before any "
+#~ "other languages"
+#~ msgstr "Это основной язык интерфейса приложения"
+
+#~ msgid ""
+#~ "This is language which will be used if any previous languages does not "
+#~ "contain proper translation"
+#~ msgstr ""
+#~ "Это язык, который будет использоваться, если нет перевода на основном "
+#~ "языке"
+
+#~ msgid "Create &root/affix combinations not in dictionary"
+#~ msgstr "Соз&давать сочетания корней/аффиксов не в словаре"
+
+#~ msgid "Consider run-together &words as spelling errors"
+#~ msgstr "С&читать ошибкой написанные вместе слова"
+
+#~ msgid "&Dictionary:"
+#~ msgstr "С&ловарь:"
+
+#~ msgid "&Encoding:"
+#~ msgstr "&Кодировка:"
+
+#~ msgid "International Ispell"
+#~ msgstr "Международный Ispell"
+
+#~ msgid "Aspell"
+#~ msgstr "Aspell"
+
+#~ msgid "Hspell"
+#~ msgstr "Hspell"
+
+#~ msgid "Zemberek"
+#~ msgstr "Zemberek"
+
+#~ msgid "&Client:"
+#~ msgstr "Кл&иент:"
+
+#~ msgid "Spanish"
+#~ msgstr "Испанский"
+
+#~ msgid "Danish"
+#~ msgstr "Датский"
+
+#~ msgid "German"
+#~ msgstr "Немецкий"
+
+#~ msgid "German (new spelling)"
+#~ msgstr "Немецкий (новое произношение)"
+
+#~ msgid "Brazilian Portuguese"
+#~ msgstr "Португальский (Бразилия)"
+
+#~ msgid "Portuguese"
+#~ msgstr "Португальский"
+
+#~ msgid "Esperanto"
+#~ msgstr "Эсперанто"
+
+#~ msgid "Norwegian"
+#~ msgstr "Норвежский"
+
+#~ msgid "Polish"
+#~ msgstr "Польский"
+
+#~ msgid "Russian"
+#~ msgstr "Русский"
+
+#~ msgid "Slovenian"
+#~ msgstr "Словенский"
+
+#~ msgid "Slovak"
+#~ msgstr "Словацкий"
+
+#~ msgid "Czech"
+#~ msgstr "Чешский"
+
+#~ msgid "Swedish"
+#~ msgstr "Шведский"
+
+#~ msgid "Swiss German"
+#~ msgstr "Швейцарский немецкий"
+
+#~ msgid "Ukrainian"
+#~ msgstr "Украинский"
+
+#~ msgid "Lithuanian"
+#~ msgstr "Литовский"
+
+#~ msgid "French"
+#~ msgstr "Французский"
+
+#~ msgid "Belarusian"
+#~ msgstr "Белорусский"
+
+#~ msgid "Hungarian"
+#~ msgstr "Венгерский"
+
+#~ msgid ""
+#~ "_: Unknown ispell dictionary\n"
+#~ "Unknown"
+#~ msgstr "Неизвестный"
+
+#~ msgid "ISpell Default"
+#~ msgstr "ISpell по умолчанию"
+
+#~ msgid ""
+#~ "_: default spelling dictionary\n"
+#~ "Default - %1 [%2]"
+#~ msgstr "По умолчанию - %1 [%2]"
+
+#~ msgid "ASpell Default"
+#~ msgstr "ASpell по умолчанию"
+
+#~ msgid ""
+#~ "_: default spelling dictionary\n"
+#~ "Default - %1"
+#~ msgstr "По умолчанию - %1"
+
+#~ msgid "Choose..."
+#~ msgstr "Выбрать..."
+
+#~ msgid "Click to select a font"
+#~ msgstr "Нажмите, чтобы выбрать шрифт"
+
+#~ msgid "Preview of the selected font"
+#~ msgstr "Образец выбранного шрифта"
+
+#~ msgid ""
+#~ "This is a preview of the selected font. You can change it by clicking the "
+#~ "\"Choose...\" button."
+#~ msgstr ""
+#~ "Это образец выбранного шрифта. Его можно сменить, нажав кнопку "
+#~ "\"Выбрать...\"."
+
+#~ msgid "Preview of the \"%1\" font"
+#~ msgstr "Образец шрифта \"%1\""
+
+#~ msgid ""
+#~ "This is a preview of the \"%1\" font. You can change it by clicking the "
+#~ "\"Choose...\" button."
+#~ msgstr ""
+#~ "Это образец шрифта \"%1\". Вы можете сменить его, нажав кнопку "
+#~ "\"Выбрать...\"."
+
+#~ msgid "??"
+#~ msgstr "??"
+
+#~ msgid ""
+#~ "No information available.\n"
+#~ "The supplied KAboutData object does not exist."
+#~ msgstr ""
+#~ "К сожалению, информация отсутствует.\n"
+#~ "Программа не предоставила объекта KAboutData."
+
+#~ msgid "A&uthor"
+#~ msgstr "А&втор"
+
+#~ msgid "A&uthors"
+#~ msgstr "&Авторы"
+
+#~ msgid ""
+#~ "Please use <a href=\"http://bugs.kde.org\">http://bugs.kde.org</a> to "
+#~ "report bugs.\n"
+#~ msgstr ""
+#~ "Используйте <a href=\"http://bugs.kde.org\">http://bugs.kde.org</a> для "
+#~ "сообщения об ошибках.\n"
+
+#~ msgid "Please report bugs to <a href=\"mailto:%1\">%2</a>.\n"
+#~ msgstr ""
+#~ "Используйте <a href=\"mailto:%1\">%2</a> для сообщения об ошибках.\n"
+
+#~ msgid "&Thanks To"
+#~ msgstr "&Благодарности"
+
+#~ msgid "T&ranslation"
+#~ msgstr "&Перевод"
+
+#~ msgid "&License Agreement"
+#~ msgstr "&Лицензия"
+
+#~ msgid "Here you can choose the font to be used."
+#~ msgstr "Здесь можно выбрать шрифт."
+
+#~ msgid "Requested Font"
+#~ msgstr "Запрошенный шрифт"
+
+#~ msgid "Change font family?"
+#~ msgstr "Изменить гарнитуру шрифта?"
+
+#~ msgid "Enable this checkbox to change the font family settings."
+#~ msgstr "Поставьте галочку, чтобы изменить гарнитуру шрифта."
+
+#~ msgid "Font:"
+#~ msgstr "Шрифт:"
+
+#~ msgid "Font style"
+#~ msgstr "Стиль шрифта"
+
+#~ msgid "Change font style?"
+#~ msgstr "Изменить стиль шрифта?"
+
+#~ msgid "Enable this checkbox to change the font style settings."
+#~ msgstr "Поставьте галочку, чтобы изменить стиль шрифта."
+
+#~ msgid "Font style:"
+#~ msgstr "Стиль шрифта:"
+
+#~ msgid "Size"
+#~ msgstr "Размер"
+
+#~ msgid "Change font size?"
+#~ msgstr "Изменить размер шрифта?"
+
+#~ msgid "Enable this checkbox to change the font size settings."
+#~ msgstr "Включите этот параметр, чтобы изменить размеры шрифтов"
+
+#~ msgid "Size:"
+#~ msgstr "Размер:"
+
+#~ msgid "Here you can choose the font family to be used."
+#~ msgstr "Здесь можно выбрать гарнитуру шрифта."
+
+#~ msgid "Here you can choose the font style to be used."
+#~ msgstr "Здесь можно выбрать стиль шрифта."
+
+#~ msgid "Regular"
+#~ msgstr "Обычный"
+
+#~ msgid "Bold"
+#~ msgstr "Жирный"
+
+#~ msgid "Bold Italic"
+#~ msgstr "Жирный курсив"
+
+#~ msgid "Relative"
+#~ msgstr "Относительный"
+
+#~ msgid "Font size<br><i>fixed</i> or <i>relative</i><br>to environment"
+#~ msgstr ""
+#~ "Размер шрифта<br><i>фиксированный</i> или <i>относительный</i><br>для "
+#~ "окружения"
+
+#~ msgid ""
+#~ "Here you can switch between fixed font size and font size to be "
+#~ "calculated dynamically and adjusted to changing environment (e.g. widget "
+#~ "dimensions, paper size)."
+#~ msgstr ""
+#~ "Здесь можно переключиться между фиксированным размером шрифта и размером, "
+#~ "вычисляемым динамически и зависящим от изменяющегося окружения (размер "
+#~ "элементов окна, бумаги и т.д.)."
+
+#~ msgid "Here you can choose the font size to be used."
+#~ msgstr "Здесь можно выбрать размер шрифта."
+
+#~ msgid "The Quick Brown Fox Jumps Over The Lazy Dog"
+#~ msgstr ""
+#~ "Широкая электрификация южных губерний даст мощный толчок подъёму "
+#~ "сельского хозяйства"
+
+#~ msgid ""
+#~ "This sample text illustrates the current settings. You may edit it to "
+#~ "test special characters."
+#~ msgstr ""
+#~ "Этот текст иллюстрирует текущие параметры. Измените его, чтобы проверить "
+#~ "корректность отображения специальных символов."
+
+#~ msgid "Actual Font"
+#~ msgstr "Доступный шрифт"
+
+#~ msgid "&Available:"
+#~ msgstr "&Доступные:"
+
+#~ msgid "&Selected:"
+#~ msgstr "&Выбранные:"
+
+#~ msgid ""
+#~ "_: Character\n"
+#~ "<qt><font size=\"+4\" face=\"%1\">%2</font><br>Unicode code point: U+"
+#~ "%3<br>(In decimal: %4)<br>(Character: %5)</qt>"
+#~ msgstr ""
+#~ "<qt><font size=\"+4\" face=\"%1\">%2</font><br>Юникод: U+"
+#~ "%3<br>(десятичный: %4)<br>(Символ: %5)</qt>"
+
+#~ msgid "Table:"
+#~ msgstr "Таблица:"
+
+#~ msgid "&Unicode code point:"
+#~ msgstr "Код &Юникода:"
+
+#~ msgid "Question"
+#~ msgstr "Вопрос"
+
+#~ msgid "Do not ask again"
+#~ msgstr "Не задавать больше этот вопрос"
+
+#~ msgid "About %1"
+#~ msgstr "О программе %1"
+
+#~ msgid "Manual"
+#~ msgstr "Ручное"
+
+#~ msgid "Automatic"
+#~ msgstr "Автоматическое"
+
+#~ msgid "Dropdown List"
+#~ msgstr "Выпадающий список"
+
+#~ msgid "Short Automatic"
+#~ msgstr "Полуавтоматическое"
+
+#~ msgid "Dropdown List && Automatic"
+#~ msgstr "Выпадающий список и автоматическое"
+
+#~ msgid ""
+#~ "The <b>K Desktop Environment</b> is written and maintained by the KDE "
+#~ "Team, a world-wide network of software engineers committed to <a href="
+#~ "\"http://www.gnu.org/philosophy/free-sw.html\">Free Software</a> "
+#~ "development.<br><br>No single group, company or organization controls the "
+#~ "KDE source code. Everyone is welcome to contribute to KDE.<br><br>Visit "
+#~ "<A HREF=\"http://www.kde.org/\">http://www.kde.org</A> for more "
+#~ "information on the KDE project. "
+#~ msgstr ""
+#~ "<b>Среда KDE</b> написана и развивается командой KDE, мировым сообществом "
+#~ "программистов, посвящающих себя разработке <a href=\"http://www.gnu.org/"
+#~ "philosophy/free-sw.html\">свободного программного обеспечения</a>."
+#~ "<br><br>Не существует группы или организации, держащей под контролем "
+#~ "исходные тексты KDE. Мы будем рады каждому, кто захочет внести свой вклад "
+#~ "в развитие KDE.<br><br>Для того чтобы больше узнать о проекте KDE, "
+#~ "зайдите на сайт <A HREF=\"http://www.kde.org/\">http://www.kde.org/</A>. "
+
+#~ msgid ""
+#~ "You do not have to be a software developer to be a member of the KDE "
+#~ "team. You can join the national teams that translate program interfaces. "
+#~ "You can provide graphics, themes, sounds, and improved documentation. You "
+#~ "decide!<br><br>Visit <A HREF=\"http://www.kde.org/jobs/\">http://www.kde."
+#~ "org/jobs/</A> for information on some projects in which you can "
+#~ "participate.<br><br>If you need more information or documentation, then a "
+#~ "visit to <A HREF=\"http://developer.kde.org/\">http://developer.kde.org</"
+#~ "A> will provide you with what you need."
+#~ msgstr ""
+#~ "Для того чтобы включиться в разработку KDE, не обязательно быть "
+#~ "программистом. Вы можете помочь в переводе KDE на родной язык, создавать "
+#~ "графику, стили, звуки, улучшать документацию - то есть тем, чем вы сами "
+#~ "хотите заниматься.<br><br>Список проектов, в которых вы могли бы принять "
+#~ "участие, приведён на сайте <A HREF=\"http://www.kde.org/jobs/\">http://"
+#~ "www.kde.org/jobs/</A>. Вполне возможно, какой-то из них вас заинтересует."
+#~ "<br><br>Более подробные сведения и документацию можно найти на сайте <A "
+#~ "HREF=\"http://developer.kde.org/\">http://developer.kde.org/</A>."
+
+#~ msgid ""
+#~ "KDE is available free of charge, but making it is not free.<br><br>Thus, "
+#~ "the KDE team formed the KDE e.V., a non-profit organization legally "
+#~ "founded in Tuebingen, Germany. The KDE e.V. represents the KDE project in "
+#~ "legal and financial matters. See <a href=\"http://www.kde-ev.org/"
+#~ "\">http://www.kde-ev.org</a> for information on the KDE e.V.<br><br>The "
+#~ "KDE team does need financial support. Most of the money is used to "
+#~ "reimburse members and others on expenses they experienced when "
+#~ "contributing to KDE. You are encouraged to support KDE through a "
+#~ "financial donation, using one of the ways described at <a href=\"http://"
+#~ "www.kde.org/support/\">http://www.kde.org/support/</a>.<br><br>Thank you "
+#~ "very much in advance for your support."
+#~ msgstr ""
+#~ "Среда KDE распространяется бесплатно, но её создание требует затрат."
+#~ "<br><br>Поэтому команда KDE основала Ассоциацию KDE, некоммерческую "
+#~ "организацию, которая зарегистрирована в Тюбингене, Германия. Ассоциация "
+#~ "KDE представляет проект KDE в правовом и финансовом аспектах. Посетите <a "
+#~ "href=\"http://www.kde.org/kde-ev/\">http://www.kde.org/kde-ev/<a> для "
+#~ "получения более подробной информации об Ассоциации KDE.<br><br>Команда "
+#~ "KDE нуждается в финансовой поддержке. Большая часть средств используется "
+#~ "для возмещения расходов участников проекта, которые они несут при "
+#~ "разработке KDE. Вы можете поддержать KDE финансовым пожертвованием, "
+#~ "которое может быть внесено одним из способов, описанных на <a href="
+#~ "\"http://www.kde.org/support/\">http://www.kde.org/support/</a>."
+#~ "<br><br>Заранее благодарим за поддержку!"
+
+#~ msgid "K Desktop Environment. Release %1"
+#~ msgstr "Среда KDE. Версия %1"
+
+#~ msgid ""
+#~ "_: About KDE\n"
+#~ "&About"
+#~ msgstr "О среде &KDE"
+
+#~ msgid "&Report Bugs or Wishes"
+#~ msgstr "&Сообщить об ошибках или пожеланиях"
+
+#~ msgid "&Join the KDE Team"
+#~ msgstr "&Вступить в команду KDE"
+
+#~ msgid "&Support KDE"
+#~ msgstr "&Поддержать KDE"
+
+#~ msgid "&Yes"
+#~ msgstr "&Да"
+
+#~ msgid "&No"
+#~ msgstr "&Нет"
+
+#~ msgid "Discard changes"
+#~ msgstr "Сбросить изменения"
+
+#~ msgid ""
+#~ "Pressing this button will discard all recent changes made in this dialog"
+#~ msgstr "Нажатие этой клавиши отменит все изменения в текущем окне"
+
+#~ msgid "Save data"
+#~ msgstr "Сохранить данные"
+
+#~ msgid "&Do Not Save"
+#~ msgstr "&Не сохранять"
+
+#~ msgid "Don't save data"
+#~ msgstr "Не сохранять данные"
+
+#~ msgid "Save &As..."
+#~ msgstr "Сохранить &как..."
+
+#~ msgid "Save file with another name"
+#~ msgstr "Сохранить файл с другим именем"
+
+#~ msgid "Apply changes"
+#~ msgstr "Применить изменения"
+
+#~ msgid ""
+#~ "When clicking <b>Apply</b>, the settings will be handed over to the "
+#~ "program, but the dialog will not be closed.\n"
+#~ "Use this to try different settings."
+#~ msgstr ""
+#~ "При нажатии кнопки <b>Применить<b> параметры будут переданы в программу, "
+#~ "но диалог не будет закрыт.\n"
+#~ "Благодаря этому вы можете попробовать различные варианты настройки."
+
+#~ msgid "Administrator &Mode..."
+#~ msgstr "&Режим администратора..."
+
+#~ msgid "Enter Administrator Mode"
+#~ msgstr "Вход с правами администратора"
+
+#~ msgid ""
+#~ "When clicking <b>Administrator Mode</b> you will be prompted for the "
+#~ "administrator (root) password in order to make changes which require root "
+#~ "privileges."
+#~ msgstr ""
+#~ "При нажатии кнопки <b>Режим администратора</b> будет запрошен пароль "
+#~ "администратора (root), поскольку действия нужно будет выполнять с правами "
+#~ "администратора."
+
+#~ msgid "Clear input"
+#~ msgstr "Очистить ввод"
+
+#~ msgid "Clear the input in the edit field"
+#~ msgstr "Очистить ввод в строке редактирования"
+
+#~ msgid ""
+#~ "_: show help\n"
+#~ "&Help"
+#~ msgstr "&Справка"
+
+#~ msgid "Show help"
+#~ msgstr "Показать справку"
+
+#~ msgid "Close the current window or document"
+#~ msgstr "Закрыть текущее окно или документ"
+
+#~ msgid "Reset all items to their default values"
+#~ msgstr "Восстановить значения по умолчанию"
+
+#~ msgid ""
+#~ "_: go back\n"
+#~ "&Back"
+#~ msgstr "&Назад"
+
+#~ msgid "Go back one step"
+#~ msgstr "Вернуться на шаг назад"
+
+#~ msgid ""
+#~ "_: go forward\n"
+#~ "&Forward"
+#~ msgstr "&Вперёд"
+
+#~ msgid "Go forward one step"
+#~ msgstr "Перейти на шаг вперёд"
+
+#~ msgid "Opens the print dialog to print the current document"
+#~ msgstr "Открывает диалог печати для печати текущего документа"
+
+#~ msgid "C&ontinue"
+#~ msgstr "Пр&одолжить"
+
+#~ msgid "Continue operation"
+#~ msgstr "Продолжить действие"
+
+#~ msgid "Delete item(s)"
+#~ msgstr "Удалить элементы"
+
+#~ msgid "Open file"
+#~ msgstr "Открыть файл"
+
+#~ msgid "Quit application"
+#~ msgstr "Выйти из приложения"
+
+#~ msgid "&Reset"
+#~ msgstr "Сб&рос"
+
+#~ msgid "Reset configuration"
+#~ msgstr "Сбросить конфигурацию"
+
+#~ msgid ""
+#~ "_: Verb\n"
+#~ "&Insert"
+#~ msgstr "&Вставить"
+
+#~ msgid "Confi&gure..."
+#~ msgstr "&Настроить..."
+
+#~ msgid "&Find"
+#~ msgstr "&Поиск"
+
+#~ msgid "Test"
+#~ msgstr "Проверить"
+
+#~ msgid "&Overwrite"
+#~ msgstr "&Заменить"
+
+#~ msgid "Empty Page"
+#~ msgstr "Пустая вкладка"
+
+#~ msgid "As-you-type spell checking enabled."
+#~ msgstr "Проверка орфографии на лету включена."
+
+#~ msgid "As-you-type spell checking disabled."
+#~ msgstr "Проверка орфографии на лету выключена."
+
+#~ msgid "Incremental Spellcheck"
+#~ msgstr "Проверка орфографии на лету"
+
+#~ msgid "Too many misspelled words. As-you-type spell checking disabled."
+#~ msgstr ""
+#~ "Слишком много ошибочных слов. Проверка орфографии на лету выключена."
+
+#~ msgid "No text!"
+#~ msgstr "Нет текста!"
+
+#~ msgid "Editing disabled"
+#~ msgstr "Редактирование выключено"
+
+#~ msgid "Editing enabled"
+#~ msgstr "Редактирование включено"
+
+#~ msgid "Show Toolbar"
+#~ msgstr "Показать панель инструментов"
+
+#~ msgid "Hide Toolbar"
+#~ msgstr "Скрыть панель инструментов"
+
+#~ msgid "Toolbars"
+#~ msgstr "Панели инструментов"
+
+#~ msgid "Week %1"
+#~ msgstr "Неделя %1"
+
+#~ msgid "Next year"
+#~ msgstr "Следующий год"
+
+#~ msgid "Previous year"
+#~ msgstr "Предыдущий год"
+
+#~ msgid "Next month"
+#~ msgstr "Следующий месяц"
+
+#~ msgid "Previous month"
+#~ msgstr "Предыдущий месяц"
+
+#~ msgid "Select a week"
+#~ msgstr "Выберите неделю"
+
+#~ msgid "Select a month"
+#~ msgstr "Выберите месяц"
+
+#~ msgid "Select a year"
+#~ msgstr "Выберите год"
+
+#~ msgid "Select the current day"
+#~ msgstr "Выбрать текущий день"
+
+#~ msgid ""
+#~ "<b>Not Defined</b><br>There is no \"What's This?\" help assigned to this "
+#~ "widget. If you want to help us to describe the widget, you are welcome "
+#~ "to <a href=\"submit-whatsthis\">send us your own \"What's This?\" help</"
+#~ "a> for it."
+#~ msgstr ""
+#~ "<b>Нет данных</b><br>Справка для этого элемента отсутствует. Вы можете "
+#~ "помочь в написании этой справки и <a href=\"submit-whatsthis\">отправить "
+#~ "нам текст справки \"Что это?\"</a> для данного элемента."
+
+#~ msgid "Configure Shortcut"
+#~ msgstr "Настройка комбинаций клавиш"
+
+#~ msgid "Advanced"
+#~ msgstr "Дополнительно"
+
+#~ msgid "--- line separator ---"
+#~ msgstr "--- разделитель строк ---"
+
+#~ msgid "--- separator ---"
+#~ msgstr "--- разделитель ---"
+
+#~ msgid "Configure Toolbars"
+#~ msgstr "Настроить панели инструментов"
+
+#~ msgid ""
+#~ "Do you really want to reset all toolbars of this application to their "
+#~ "default? The changes will be applied immediately."
+#~ msgstr ""
+#~ "Восстановить панели инструментов по умолчанию? Изменения вступят в силу "
+#~ "немедленно."
+
+#~ msgid "Reset Toolbars"
+#~ msgstr "Восстановить панели инструментов"
+
+#~ msgid "Reset"
+#~ msgstr "Восстановить"
+
+#~ msgid "&Toolbar:"
+#~ msgstr "&Панель инструментов:"
+
+#~ msgid "A&vailable actions:"
+#~ msgstr "&Доступные действия:"
+
+#~ msgid "Curr&ent actions:"
+#~ msgstr "&Текущие действия:"
+
+#~ msgid "Change &Icon..."
+#~ msgstr "Изменить &значок..."
+
+#~ msgid ""
+#~ "This element will be replaced with all the elements of an embedded "
+#~ "component."
+#~ msgstr ""
+#~ "Данный элемент будет полностью замещён элементами встроенного компонента."
+
+#~ msgid "<Merge>"
+#~ msgstr "<Точка вставки>"
+
+#~ msgid "<Merge %1>"
+#~ msgstr "<Точка вставки %1>"
+
+#~ msgid ""
+#~ "This is a dynamic list of actions. You can move it, but if you remove it "
+#~ "you won't be able to re-add it."
+#~ msgstr ""
+#~ "Этот элемент соответствует изменяемому в процессе работы набору "
+#~ "инструментов. Его можно перемещать, однако если его удалить, то заново "
+#~ "восстановить его будет невозможно."
+
+#~ msgid "ActionList: %1"
+#~ msgstr "Набор инструментов: %1"
+
+#~ msgid ""
+#~ "_: palette name\n"
+#~ "* Recent Colors *"
+#~ msgstr "* Последние цвета *"
+
+#~ msgid ""
+#~ "_: palette name\n"
+#~ "* Custom Colors *"
+#~ msgstr "* Собственные цвета *"
+
+#~ msgid ""
+#~ "_: palette name\n"
+#~ "Forty Colors"
+#~ msgstr "Сорок цветов"
+
+#~ msgid ""
+#~ "_: palette name\n"
+#~ "Rainbow Colors"
+#~ msgstr "Радужные цвета"
+
+#~ msgid ""
+#~ "_: palette name\n"
+#~ "Royal Colors"
+#~ msgstr "Цвета ройял"
+
+#~ msgid ""
+#~ "_: palette name\n"
+#~ "Web Colors"
+#~ msgstr "Цвета Web"
+
+#~ msgid "Named Colors"
+#~ msgstr "Именованные цвета"
+
+#~ msgid ""
+#~ "Unable to read X11 RGB color strings. The following file location(s) were "
+#~ "examined:\n"
+#~ msgstr ""
+#~ "Не удаётся прочитать имена цветов X11 ни из одного из следующих мест:\n"
+
+#~ msgid "Select Color"
+#~ msgstr "Выберите цвет"
+
+#~ msgid "H:"
+#~ msgstr "H:"
+
+#~ msgid "S:"
+#~ msgstr "S:"
+
+#~ msgid "V:"
+#~ msgstr "V:"
+
+#~ msgid "R:"
+#~ msgstr "R:"
+
+#~ msgid "G:"
+#~ msgstr "G:"
+
+#~ msgid "B:"
+#~ msgstr "B:"
+
+#~ msgid "&Add to Custom Colors"
+#~ msgstr "&Добавить в собственные цвета"
+
+#~ msgid "HTML:"
+#~ msgstr "HTML:"
+
+#~ msgid "Default color"
+#~ msgstr "Цвет по умолчанию"
+
+#~ msgid "-default-"
+#~ msgstr "-по умолчанию-"
+
+#~ msgid "-unnamed-"
+#~ msgstr "-безымянный-"
+
+#~ msgid ""
+#~ "_: beginning (of line)\n"
+#~ "&Home"
+#~ msgstr "В &начало строки"
+
+#~ msgid "Show Menubar<p>Shows the menubar again after it has been hidden"
+#~ msgstr "Показать меню<p>Показать меню снова после того, как оно было скрыто"
+
+#~ msgid "Hide &Menubar"
+#~ msgstr "Скрыть &меню"
+
+#~ msgid ""
+#~ "Hide Menubar<p>Hide the menubar. You can usually get it back using the "
+#~ "right mouse button inside the window itself."
+#~ msgstr ""
+#~ "Скрыть меню<p>Скрыть панель меню. Обычно его можно вернуть, нажав правую "
+#~ "кнопку внутри окна."
+
+#~ msgid "Show St&atusbar"
+#~ msgstr "Показывать строку &состояния"
+
+#~ msgid ""
+#~ "Show Statusbar<p>Shows the statusbar, which is the bar at the bottom of "
+#~ "the window used for status information."
+#~ msgstr ""
+#~ "Показывать строку состояния<p>Строка состояния - это полоса в нижней "
+#~ "части окна, в которой выводится информация и состоянии приложения."
+
+#~ msgid "Hide St&atusbar"
+#~ msgstr "Скрыть строку &состояния"
+
+#~ msgid ""
+#~ "Hide Statusbar<p>Hides the statusbar, which is the bar at the bottom of "
+#~ "the window used for status information."
+#~ msgstr ""
+#~ "Скрыть строку состояния<p>Строка состояния - это полоса в нижней части "
+#~ "окна, в которой выводится информация и состоянии приложения."
+
+#~ msgid "&Password:"
+#~ msgstr "&Пароль:"
+
+#~ msgid "&Keep password"
+#~ msgstr "Сохранить паро&ль"
+
+#~ msgid "&Verify:"
+#~ msgstr "&Проверка:"
+
+#~ msgid "Password strength meter:"
+#~ msgstr "Датчик надёжности пароля:"
+
+#~ msgid ""
+#~ "The password strength meter gives an indication of the security of the "
+#~ "password you have entered. To improve the strength of the password, "
+#~ "try:\n"
+#~ " - using a longer password;\n"
+#~ " - using a mixture of upper- and lower-case letters;\n"
+#~ " - using numbers or symbols, such as #, as well as letters."
+#~ msgstr ""
+#~ "Датчик показывает защищённость или надёжность введённого пароля. Пароль "
+#~ "будет более надёжным, если:\n"
+#~ " - он имеет достаточную длину;\n"
+#~ " - в него входят как прописные, так и строчные буквы;\n"
+#~ " - в него входят помимо букв числа и специальные символы, такие как #."
+
+#~ msgid "Passwords do not match"
+#~ msgstr "Пароли не совпадают"
+
+#~ msgid "You entered two different passwords. Please try again."
+#~ msgstr "Введённые пароли не совпадают. Попробуйте ещё раз."
+
+#~ msgid ""
+#~ "The password you have entered has a low strength. To improve the strength "
+#~ "of the password, try:\n"
+#~ " - using a longer password;\n"
+#~ " - using a mixture of upper- and lower-case letters;\n"
+#~ " - using numbers or symbols as well as letters.\n"
+#~ "\n"
+#~ "Would you like to use this password anyway?"
+#~ msgstr ""
+#~ "Введён слабый пароль. Пароль будет более надёжным, если:\n"
+#~ " - он имеет достаточную длину;\n"
+#~ " - в него входят как прописные, так и строчные буквы;\n"
+#~ " - в него входят помимо букв числа и специальные символы.\n"
+#~ "\n"
+#~ "Использовать введённый пароль?"
+
+#~ msgid "Low Password Strength"
+#~ msgstr "Слабый пароль"
+
+#~ msgid "Password is empty"
+#~ msgstr "Пустой пароль"
+
+#~ msgid ""
+#~ "_n: Password must be at least 1 character long\n"
+#~ "Password must be at least %n characters long"
+#~ msgstr ""
+#~ "Пароль должен быть не короче %n символа\n"
+#~ "Пароль должен быть не короче %n символов\n"
+#~ "Пароль должен быть не короче %n символов"
+
+#~ msgid "Passwords match"
+#~ msgstr "Пароли совпадают"
+
+#~ msgid "Check Spelling"
+#~ msgstr "Проверить орфографию"
+
+#~ msgid "&Finished"
+#~ msgstr "&Готово"
+
+#~ msgid "Clear &History"
+#~ msgstr "Очистить &хронологию"
+
+#~ msgid "No further item in the history."
+#~ msgstr "Нет более элементов в списке."
+
+#~ msgid "&Browse..."
+#~ msgstr "&Обзор..."
+
+#~ msgid "&Try"
+#~ msgstr "&Попробовать"
+
+#~ msgid ""
+#~ "If you press the <b>OK</b> button, all changes\n"
+#~ "you made will be used to proceed."
+#~ msgstr ""
+#~ "При нажатии кнопки <b>OK<b> будут \n"
+#~ "применены все внесённые изменения."
+
+#~ msgid "Accept settings"
+#~ msgstr "Применить"
+
+#~ msgid ""
+#~ "When clicking <b>Apply</b>, the settings will be\n"
+#~ "handed over to the program, but the dialog\n"
+#~ "will not be closed. Use this to try different settings. "
+#~ msgstr ""
+#~ "При нажатии кнопки <b>Применить<b> параметры будут\n"
+#~ "переданы в программу, но диалог не будет закрыт.\n"
+#~ "Благодаря этому вы можете попробовать различные варианты настройки."
+
+#~ msgid "Apply settings"
+#~ msgstr "Сохранить параметры"
+
+#~ msgid "&Details"
+#~ msgstr "&Подробности"
+
+#~ msgid "Get help..."
+#~ msgstr "Справка..."
+
+#~ msgid "&Add"
+#~ msgstr "Доб&авить"
+
+#~ msgid "Move &Up"
+#~ msgstr "Переместить вв&ерх"
+
+#~ msgid "Move &Down"
+#~ msgstr "Переместить &вниз"
+
+#~ msgid "Submit Bug Report"
+#~ msgstr "Отправить отчёт об ошибке"
+
+#~ msgid ""
+#~ "Your email address. If incorrect, use the Configure Email button to "
+#~ "change it"
+#~ msgstr ""
+#~ "Ваш электронный адрес. Если он неверен, нажмите кнопку \"Настройка "
+#~ "электронной почты\" и измените его."
+
+#~ msgid "From:"
+#~ msgstr "Отправитель: "
+
+#~ msgid "Configure Email..."
+#~ msgstr "Параметры электронной почты..."
+
+#~ msgid "The email address this bug report is sent to."
+#~ msgstr "Почтовый адрес для отправления сообщения об ошибке."
+
+#~ msgid "To:"
+#~ msgstr "Кому:"
+
+#~ msgid "&Send"
+#~ msgstr "&Отправить"
+
+#~ msgid "Send bug report."
+#~ msgstr "Отправить сообщение об ошибке."
+
+#~ msgid "Send this bug report to %1."
+#~ msgstr "Отправить это сообщение об ошибке на %1."
+
+#~ msgid ""
+#~ "The application for which you wish to submit a bug report - if incorrect, "
+#~ "please use the Report Bug menu item of the correct application"
+#~ msgstr ""
+#~ "Приложение, содержащее описываемую ошибку. Если здесь указано не то "
+#~ "приложение, используйте пункт меню \"Отправить сообщение об ошибке\" "
+#~ "нужного приложения"
+
+#~ msgid "Application: "
+#~ msgstr "Приложение: "
+
+#~ msgid ""
+#~ "The version of this application - please make sure that no newer version "
+#~ "is available before sending a bug report"
+#~ msgstr ""
+#~ "Версия программы. Прежде чем отправлять сообщение об ошибке, проверьте, "
+#~ "не вышла ли более свежая версия."
+
+#~ msgid "no version set (programmer error!)"
+#~ msgstr "нет данных о версии (ошибка программиста!)"
+
+#~ msgid "OS:"
+#~ msgstr "ОС:"
+
+#~ msgid "Compiler:"
+#~ msgstr "Компилятор:"
+
+#~ msgid "Se&verity"
+#~ msgstr "Степень &важности"
+
+#~ msgid "Critical"
+#~ msgstr "Критическая ошибка"
+
+#~ msgid "Grave"
+#~ msgstr "Опасная ошибка"
+
+#~ msgid ""
+#~ "_: normal severity\n"
+#~ "Normal"
+#~ msgstr "Обычная ошибка"
+
+#~ msgid "Wishlist"
+#~ msgstr "Пожелание"
+
+#~ msgid "Translation"
+#~ msgstr "Ошибка в переводе"
+
+#~ msgid "S&ubject: "
+#~ msgstr "&Тема: "
+
+#~ msgid ""
+#~ "Enter the text (in English if possible) that you wish to submit for the "
+#~ "bug report.\n"
+#~ "If you press \"Send\", a mail message will be sent to the maintainer of "
+#~ "this program.\n"
+#~ msgstr ""
+#~ "Введите текст (желательно по-английски), который описывает ошибку.\n"
+#~ "Если вы нажмёте \"Отправить\", сообщение будет отправлено к "
+#~ "ответственному за разработку этой программы.\n"
+
+#~ msgid ""
+#~ "To submit a bug report, click on the button below.\n"
+#~ "This will open a web browser window on http://bugs.kde.org where you will "
+#~ "find a form to fill in.\n"
+#~ "The information displayed above will be transferred to that server."
+#~ msgstr ""
+#~ "Для того чтобы отправить сообщение об ошибке, щёлкните на ссылке.\n"
+#~ "Откроется окно http://bugs.kde.org, где можно будет заполнить форму.\n"
+#~ "Информация будет отправлена на сервер учёта ошибок."
+
+#~ msgid "&Launch Bug Report Wizard"
+#~ msgstr "&Запустить мастер сообщения об ошибке"
+
+#~ msgid ""
+#~ "_: unknown program name\n"
+#~ "unknown"
+#~ msgstr "неизв."
+
+#~ msgid ""
+#~ "You must specify both a subject and a description before the report can "
+#~ "be sent."
+#~ msgstr "Перед отправкой отчёта необходимо указать тему и описание ошибки."
+
+#~ msgid ""
+#~ "<p>You chose the severity <b>Critical</b>. Please note that this severity "
+#~ "is intended only for bugs that</p><ul><li>break unrelated software on the "
+#~ "system (or the whole system)</li><li>cause serious data loss</"
+#~ "li><li>introduce a security hole on the system where the affected package "
+#~ "is installed</li></ul>\n"
+#~ "<p>Does the bug you are reporting cause any of the above damage? If it "
+#~ "does not, please select a lower severity. Thank you!</p>"
+#~ msgstr ""
+#~ "<p>Выбран уровень ошибки <b>Критическая</b>. Этот уровень подразумевает, "
+#~ "что ошибка</p><ul><li>может вызвать сбой в работе других программ или "
+#~ "системы в целом</li><li>привести к порче и утрате данных</li><li>нарушить "
+#~ "безопасность системы, если установлен данный пакет</li></ul>\n"
+#~ "<p>Является ли ошибка, о которой вы хотите сообщить, настолько серьёзной? "
+#~ "Если нет, выберите другой, менее высокий уровень ошибки.</p>"
+
+#~ msgid ""
+#~ "<p>You chose the severity <b>Grave</b>. Please note that this severity is "
+#~ "intended only for bugs that</p><ul><li>make the package in question "
+#~ "unusable or mostly so</li><li>cause data loss</li><li>introduce a "
+#~ "security hole allowing access to the accounts of users who use the "
+#~ "affected package</li></ul>\n"
+#~ "<p>Does the bug you are reporting cause any of the above damage? If it "
+#~ "does not, please select a lower severity. Thank you!</p>"
+#~ msgstr ""
+#~ "<p>Вы выбрали уровень ошибки <b>Опасная</b>. Этот уровень подразумевает, "
+#~ "что ошибка</p><ul><li>может вызвать неисправимый сбой в работе данного "
+#~ "пакета</li><li>привести к утрате данных</li><li>нарушить безопасность "
+#~ "системы и открыть доступ к файлам пользователей, установивших данный "
+#~ "пакет</li></ul>\n"
+#~ "<p>Является ли ошибка, о которой вы хотите сообщить, настолько серьёзной? "
+#~ "Если нет, выберите другой, менее высокий уровень ошибки.</p>"
+
+#~ msgid ""
+#~ "Unable to send the bug report.\n"
+#~ "Please submit a bug report manually...\n"
+#~ "See http://bugs.kde.org/ for instructions."
+#~ msgstr ""
+#~ "Не удалось отправить сообщение об ошибке.\n"
+#~ "Попробуйте отправить его вручную.\n"
+#~ "На сайте http://bugs.kde.org/ сказано\n"
+#~ ", как это сделать."
+
+#~ msgid "Bug report sent, thank you for your input."
+#~ msgstr "Сообщение об ошибке отправлено, спасибо."
+
+#~ msgid ""
+#~ "Close and discard\n"
+#~ "edited message?"
+#~ msgstr ""
+#~ "Закрыть и отменить\n"
+#~ "введённое сообщение?"
+
+#~ msgid "Close Message"
+#~ msgstr "Закрыть сообщение"
+
+#~ msgid "Custom..."
+#~ msgstr "Пользовательский..."
+
+#~ msgid "<qt>Are you sure you want to quit <b>%1</b>?</qt>"
+#~ msgstr "<qt>Вы действительно хотите выйти из <b>%1</b>'?</qt>"
+
+#~ msgid "Confirm Quit From System Tray"
+#~ msgstr "Подтвердите выход из области уведомления"
+
+#~ msgid "Image Operations"
+#~ msgstr "Операции с изображением"
+
+#~ msgid "&Rotate Clockwise"
+#~ msgstr "&Повернуть по часовой стрелке"
+
+#~ msgid "Rotate &Counterclockwise"
+#~ msgstr "П&овернуть против часовой стрелки"
+
+#~ msgid ""
+#~ "_: Freeze the window geometry\n"
+#~ "Freeze"
+#~ msgstr "Зафиксировать"
+
+#~ msgid ""
+#~ "_: Dock this window\n"
+#~ "Dock"
+#~ msgstr "Встроить"
+
+#~ msgid "Detach"
+#~ msgstr "Отделить"
+
+#~ msgid "&Back"
+#~ msgstr "&Назад"
+
+#~ msgid ""
+#~ "_: Opposite to Back\n"
+#~ "&Next"
+#~ msgstr "&Вперед"
+
+#~ msgid "%1 &Handbook"
+#~ msgstr "&Руководство пользователя %1"
+
+#~ msgid "What's &This"
+#~ msgstr "Что &это"
+
+#~ msgid "&Report Bug..."
+#~ msgstr "Сооб&щить об ошибке..."
+
+#~ msgid "Switch application &language..."
+#~ msgstr "Изменить &язык приложения..."
+
+#~ msgid "&About %1"
+#~ msgstr "&О программе %1"
+
+#~ msgid "About &KDE"
+#~ msgstr "О &KDE"
+
+#~ msgid "Exit F&ull Screen Mode"
+#~ msgstr "&Выйти из полноэкранного режима"
+
+#~ msgid "F&ull Screen Mode"
+#~ msgstr "&Полноэкранный режим"
+
+#~ msgid "Search Columns"
+#~ msgstr "Столбцы для поиска"
+
+#~ msgid "All Visible Columns"
+#~ msgstr "Все показанные столбцы"
+
+#~ msgid ""
+#~ "_: Column number %1\n"
+#~ "Column No. %1"
+#~ msgstr "Столбец № %1"
+
+#~ msgid "S&earch:"
+#~ msgstr "&Поиск:"
+
+#~ msgid "Tip of the Day"
+#~ msgstr "Совет дня"
+
+#~ msgid "Did you know...?\n"
+#~ msgstr "Знаете ли вы...?\n"
+
+#~ msgid "&Show tips on startup"
+#~ msgstr "&Показывать советы при запуске"
+
+#~ msgid "Toolbar Menu"
+#~ msgstr "Меню панели инструментов"
+
+#~ msgid ""
+#~ "_: toolbar position string\n"
+#~ "Top"
+#~ msgstr "Вверху"
+
+#~ msgid ""
+#~ "_: toolbar position string\n"
+#~ "Left"
+#~ msgstr "Слева"
+
+#~ msgid ""
+#~ "_: toolbar position string\n"
+#~ "Right"
+#~ msgstr "Справа"
+
+#~ msgid ""
+#~ "_: toolbar position string\n"
+#~ "Bottom"
+#~ msgstr "Внизу"
+
+#~ msgid ""
+#~ "_: toolbar position string\n"
+#~ "Floating"
+#~ msgstr "Плавающая"
+
+#~ msgid ""
+#~ "_: min toolbar\n"
+#~ "Flat"
+#~ msgstr "Свернуть"
+
+#~ msgid "Icons Only"
+#~ msgstr "Только значки"
+
+#~ msgid "Text Only"
+#~ msgstr "Только подписи"
+
+#~ msgid "Text Alongside Icons"
+#~ msgstr "Подписи сбоку от значков"
+
+#~ msgid "Text Under Icons"
+#~ msgstr "Подписи под значками"
+
+#~ msgid "Small (%1x%2)"
+#~ msgstr "Малые (%1x%2)"
+
+#~ msgid "Medium (%1x%2)"
+#~ msgstr "Средние (%1x%2)"
+
+#~ msgid "Large (%1x%2)"
+#~ msgstr "Большие (%1x%2)"
+
+#~ msgid "Huge (%1x%2)"
+#~ msgstr "Очень большие (%1x%2)"
+
+#~ msgid "Text Position"
+#~ msgstr "Положение текста"
+
+#~ msgid "Icon Size"
+#~ msgstr "Размер значков"
+
+#~ msgid "Task"
+#~ msgstr "Задача"
+
+#~ msgid "%1 %2 (Using KDE %3)"
+#~ msgstr "%1 %2 (в составе KDE %3)"
+
+#~ msgid "%1 %2, %3"
+#~ msgstr "%1 %2, %3"
+
+#~ msgid "Other Contributors:"
+#~ msgstr "Другие участники:"
+
+#~ msgid "(No logo available)"
+#~ msgstr "(Логотип отсутствует)"
+
+#~ msgid "Image missing"
+#~ msgstr "Изображение отсутствует"
+
+#~ msgid "Area"
+#~ msgstr "Регион"
+
+#~ msgid "Comment"
+#~ msgstr "Комментарий"
+
+#~ msgid ""
+#~ "End of document reached.\n"
+#~ "Continue from the beginning?"
+#~ msgstr ""
+#~ "Достигнут конец документа.\n"
+#~ "Продолжить с начала?"
+
+#~ msgid ""
+#~ "Beginning of document reached.\n"
+#~ "Continue from the end?"
+#~ msgstr ""
+#~ "Достигнуто начало документа.\n"
+#~ "Продолжить с конца?"
+
+#~ msgid "Find:"
+#~ msgstr "Поиск:"
+
+#~ msgid "Case &sensitive"
+#~ msgstr "С &учётом регистра"
+
+#~ msgid "Find &backwards"
+#~ msgstr "Ис&кать назад"
+
+#~ msgid "Replace &All"
+#~ msgstr "Заменить &все"
+
+#~ msgid "Replace with:"
+#~ msgstr "Заменить на:"
+
+#~ msgid "Go to line:"
+#~ msgstr "Перейти к строке:"
+
+#~ msgid "Unclutter Windows"
+#~ msgstr "Показать все окна"
+
+#~ msgid "Cascade Windows"
+#~ msgstr "Расположить окна каскадом"
+
+#~ msgid "On All Desktops"
+#~ msgstr "На все рабочие столы"
+
+#~ msgid "No Windows"
+#~ msgstr "Нет окон"
+
+#~ msgid "Check Spelling..."
+#~ msgstr "Проверить орфографию..."
+
+#~ msgid "Auto Spell Check"
+#~ msgstr "Автоматическая проверка орфографии"
+
+#~ msgid "Allow Tabulations"
+#~ msgstr "Разрешить табуляцию"
+
+#~ msgid "Spell Checking"
+#~ msgstr "Проверка орфографии"
+
+#~ msgid "You have to restart the dialog for changes to take effect"
+#~ msgstr "Чтобы изменения вступили в силу, необходимо перезапустить диалог"
+
+#~ msgid "Spell Checker"
+#~ msgstr "Проверка орфографии"
+
+#~ msgid "&Undo: %1"
+#~ msgstr "&Отменить: %1"
+
+#~ msgid "&Redo: %1"
+#~ msgstr "&Повторить: %1"
+
+#~ msgid "Undo: %1"
+#~ msgstr "Отменить: %1"
+
+#~ msgid "Redo: %1"
+#~ msgstr "Повторить: %1"
+
+#~ msgid "%1 (%2 - %3x%4 Pixels)"
+#~ msgstr "%1 (%2 - %3x%4 пиксел)"
+
+#~ msgid "%1 - %2x%3 Pixels"
+#~ msgstr "%1 - %2x%3 пиксел"
+
+#~ msgid "%1 (%2x%3 Pixels)"
+#~ msgstr "%1 (%2x%3 пиксел)"
+
+#~ msgid "Image - %1x%2 Pixels"
+#~ msgstr "Изображение - %1x%2 пикселов"
+
+#~ msgid "Done."
+#~ msgstr "Готово."
+
+#~ msgid "&Copy Text"
+#~ msgstr "&Копировать текст"
+
+#~ msgid "Search for '%1' with %2"
+#~ msgstr "Поиск '%1' в %2"
+
+#~ msgid "Search for '%1' with"
+#~ msgstr "Поиск '%1' в"
+
+#~ msgid "Open '%1'"
+#~ msgstr "Открыть '%1'"
+
+#~ msgid "Stop Animations"
+#~ msgstr "Остановить анимацию"
+
+#~ msgid "Copy Email Address"
+#~ msgstr "Скопировать электронный адрес"
+
+#~ msgid "&Save Link As..."
+#~ msgstr "Сохранить сс&ылку как..."
+
+#~ msgid "Copy &Link Address"
+#~ msgstr "С&копировать ссылку"
+
+#~ msgid "Open in New &Window"
+#~ msgstr "Открыть в новом &окне"
+
+#~ msgid "Open in &This Window"
+#~ msgstr "Открыть в текущем &окне"
+
+#~ msgid "Open in &New Tab"
+#~ msgstr "Открыть в новой в&кладке"
+
+#~ msgid "Reload Frame"
+#~ msgstr "Обновить фрейм"
+
+#~ msgid "Block IFrame..."
+#~ msgstr "Заблокировать IFrame..."
+
+#~ msgid "View Frame Source"
+#~ msgstr "Просмотреть исходный текст фрейма"
+
+#~ msgid "View Frame Information"
+#~ msgstr "Сведения о фрейме"
+
+#~ msgid "Print Frame..."
+#~ msgstr "Печать фрейма..."
+
+#~ msgid "Save &Frame As..."
+#~ msgstr "Сохранить &фрейм как..."
+
+#~ msgid "Save Image As..."
+#~ msgstr "Сохранить изображение как..."
+
+#~ msgid "Send Image..."
+#~ msgstr "Отправить изображение..."
+
+#~ msgid "Copy Image"
+#~ msgstr "Скопировать изображение"
+
+#~ msgid "Copy Image Location"
+#~ msgstr "Скопировать ссылку на изображение"
+
+#~ msgid "View Image (%1)"
+#~ msgstr "Просмотр изображения (%1)"
+
+#~ msgid "Block Image..."
+#~ msgstr "Заблокировать изображение..."
+
+#~ msgid "Block Images From %1"
+#~ msgstr "Заблокировать изображения от %1"
+
+#~ msgid "Save Link As"
+#~ msgstr "Сохранить конечный документ как"
+
+#~ msgid "Save Image As"
+#~ msgstr "Сохранить изображение как"
+
+#~ msgid "Add URL to Filter"
+#~ msgstr "Добавить URL в фильтр"
+
+#~ msgid "Enter the URL:"
+#~ msgstr "Введите адрес:"
+
+#~ msgid ""
+#~ "A file named \"%1\" already exists. Are you sure you want to overwrite it?"
+#~ msgstr "Файл с именем \"%1\" уже существует. Заменить его?"
+
+#~ msgid "Overwrite File?"
+#~ msgstr "Заменить файл?"
+
+#~ msgid "The Download Manager (%1) could not be found in your $PATH "
+#~ msgstr "Не удаётся найти программу менеджера загрузки (%1) в пути $PATH."
+
+#~ msgid ""
+#~ "Try to reinstall it \n"
+#~ "\n"
+#~ "The integration with Konqueror will be disabled!"
+#~ msgstr ""
+#~ "Попробуйте переустановить её.\n"
+#~ "\n"
+#~ "Интеграция с Konqueror будет выключена!"
+
+#~ msgid "Default Font Size (100%)"
+#~ msgstr "Размер шрифта по умолчанию (100%)"
+
+#~ msgid "%1%"
+#~ msgstr "%1%"
+
+#~ msgid ""
+#~ "<qt><p><strong>'Print images'</strong></p><p>If this checkbox is enabled, "
+#~ "images contained in the HTML page will be printed. Printing may take "
+#~ "longer and use more ink or toner.</p><p>If this checkbox is disabled, "
+#~ "only the text of the HTML page will be printed, without the included "
+#~ "images. Printing will be faster and use less ink or toner.</p> </qt>"
+#~ msgstr ""
+#~ "<qt><p><strong>'Печать изображений'</strong></p><p>Если этот флажок "
+#~ "включен, изображения на веб-странице будут распечатаны вместе с текстом."
+#~ "Однако печататься страница с ними будет больше и будет использовано "
+#~ "больше чернил или тонера.</p><p>Если флажок выключен, будет распечатан "
+#~ "только текст веб-страницы. В этом случае печать закончиться быстрее и вы "
+#~ "потратите меньше чернил или тонера.</p> </qt>"
+
+#~ msgid ""
+#~ "<qt><p><strong>'Print header'</strong></p><p>If this checkbox is enabled, "
+#~ "the printout of the HTML document will contain a header line at the top "
+#~ "of each page. This header contains the current date, the location URL of "
+#~ "the printed page and the page number.</p><p>If this checkbox is disabled, "
+#~ "the printout of the HTML document will not contain such a header line.</"
+#~ "p> </qt>"
+#~ msgstr ""
+#~ "<qt><p><strong>'Печатать заголовок'</strong></p><p>Если этот параметр "
+#~ "включен, на каждой странице распечатки документа в формате HTML будет "
+#~ "заголовок, содержащий текущую дату, адрес (URL) этой страницы и номер "
+#~ "страницы.</p></qt>"
+
+#~ msgid ""
+#~ "<qt><p><strong>'Printerfriendly mode'</strong></p><p>If this checkbox is "
+#~ "enabled, the printout of the HTML document will be black and white only, "
+#~ "and all colored background will be converted into white. Printout will be "
+#~ "faster and use less ink or toner.</p><p>If this checkbox is disabled, the "
+#~ "printout of the HTML document will happen in the original color settings "
+#~ "as you see in your application. This may result in areas of full-page "
+#~ "color (or grayscale, if you use a black+white printer). Printout will "
+#~ "possibly happen slower and will certainly use much more toner or ink.</p> "
+#~ "</qt>"
+#~ msgstr ""
+#~ "<qt><p><strong>'Дружественный для принтера режим'</strong></p><p>Если "
+#~ "этот параметр включен, распечатка документа в формате HTML будет только "
+#~ "черно-белой, любой цветной фон будет преобразован в белый. Печать будет "
+#~ "быстре и будет использоваться меньше чернил или тонера.</p><p>Если этот "
+#~ "параметр выключен, распечатка документа в формате HTML будет иметь такие "
+#~ "же цвета, как вы видите в приложении. Результатом может быть полностью "
+#~ "цветная страница (или с градациями серого, если принтер черно-белый). "
+#~ "Печать будет идти медленнее и использовать намного больше тонера или "
+#~ "чернил.</p> </qt>"
+
+#~ msgid "HTML Settings"
+#~ msgstr "Настройка HTML"
+
+#~ msgid "Printer friendly mode (black text, no background)"
+#~ msgstr "Режим для принтера (чёрный текст, без фона)"
+
+#~ msgid "Print images"
+#~ msgstr "Печатать изображения"
+
+#~ msgid "Print header"
+#~ msgstr "Печатать заголовок"
+
+#~ msgid "View Do&cument Source"
+#~ msgstr "Просмотреть исходный текст до&кумента"
+
+#~ msgid "View Document Information"
+#~ msgstr "Просмотреть сведения о документе"
+
+#~ msgid "Save &Background Image As..."
+#~ msgstr "Сохранить фоновое &изображение как..."
+
+#~ msgid "Security..."
+#~ msgstr "Безопасность..."
+
+#~ msgid ""
+#~ "Security Settings<p>Shows the certificate of the displayed page. Only "
+#~ "pages that have been transmitted using a secure, encrypted connection "
+#~ "have a certificate.<p> Hint: If the image shows a closed lock, the page "
+#~ "has been transmitted over a secure connection."
+#~ msgstr ""
+#~ "Параметры безопасности <p>Показывает параметры безопасности. Только "
+#~ "страницы, которые были переданы по безопасному, зашифрованному "
+#~ "соединению, имеют сертификат. <p>Подсказка: если изображён закрытый "
+#~ "замок, страница была передана через безопасное соединение."
+
+#~ msgid "Print Rendering Tree to STDOUT"
+#~ msgstr "Вывести дерево прорисовки на STDOUT"
+
+#~ msgid "Print DOM Tree to STDOUT"
+#~ msgstr "Вывести дерево DOM на STDOUT"
+
+#~ msgid "Stop Animated Images"
+#~ msgstr "Остановить анимацию рисунков"
+
+#~ msgid "Set &Encoding"
+#~ msgstr "&Кодировка..."
+
+#~ msgid "Semi-Automatic"
+#~ msgstr "Полуавтоматическое"
+
+#~ msgid "Automatic Detection"
+#~ msgstr "Автоматическое определение"
+
+#~ msgid ""
+#~ "_: short for Manual Detection\n"
+#~ "Manual"
+#~ msgstr "Вручную"
+
+#~ msgid "Use S&tylesheet"
+#~ msgstr "Использовать таблицу &стилей"
+
+#~ msgid "Enlarge Font"
+#~ msgstr "Увеличить шрифт"
+
+#~ msgid ""
+#~ "Enlarge Font<p>Make the font in this window bigger. Click and hold down "
+#~ "the mouse button for a menu with all available font sizes."
+#~ msgstr ""
+#~ "Увеличить шрифт<p>Увеличить шрифт в этом окне. Нажмите и удерживайте "
+#~ "кнопку мыши для отображения меню с доступными размерами шрифта."
+
+#~ msgid "Shrink Font"
+#~ msgstr "Уменьшить шрифт"
+
+#~ msgid ""
+#~ "Shrink Font<p>Make the font in this window smaller. Click and hold down "
+#~ "the mouse button for a menu with all available font sizes."
+#~ msgstr ""
+#~ "Уменьшить шрифт<p>Уменьшить шрифт в этом окне. Нажмите и удерживайте "
+#~ "кнопку мыши для отображения меню с доступными размерами шрифта."
+
+#~ msgid ""
+#~ "Find text<p>Shows a dialog that allows you to find text on the displayed "
+#~ "page."
+#~ msgstr "Найти текст<p>Диалог поиска текста в текущей странице."
+
+#~ msgid ""
+#~ "Find next<p>Find the next occurrence of the text that you have found "
+#~ "using the <b>Find Text</b> function"
+#~ msgstr ""
+#~ "Найти далее<p>Поиск следующего вхождения текста, указанного в поле "
+#~ "<b>Найти текст</b>"
+
+#~ msgid ""
+#~ "Find previous<p>Find the previous occurrence of the text that you have "
+#~ "found using the <b>Find Text</b> function"
+#~ msgstr ""
+#~ "Найти предыдущее<p>Поиск предыдущего вхождения текста, указанного в поле "
+#~ "<b>Найти текст</b>"
+
+#~ msgid "Find Text as You Type"
+#~ msgstr "Поиск текста по мере набора"
+
+#~ msgid "Find Links as You Type"
+#~ msgstr "Поиск ссылок по мере набора"
+
+#~ msgid ""
+#~ "Print Frame<p>Some pages have several frames. To print only a single "
+#~ "frame, click on it and then use this function."
+#~ msgstr ""
+#~ "Печать фрейма <p> Некоторые страницы могут содержать несколько фреймов. "
+#~ "Чтобы напечатать только один фрейм, нажмите на нем и используйте эту "
+#~ "функцию."
+
+#~ msgid "Toggle Caret Mode"
+#~ msgstr "Переключи&ть режим вставки/замены"
+
+#~ msgid "The fake user-agent '%1' is in use."
+#~ msgstr "Используется подложный идентификатор браузера '%1'."
+
+#~ msgid "This web page contains coding errors."
+#~ msgstr "Эта веб-страница содержит ошибки кодирования."
+
+#~ msgid "&Hide Errors"
+#~ msgstr "&Скрыть ошибки"
+
+#~ msgid "&Disable Error Reporting"
+#~ msgstr "&Запретить сообщения об ошибках"
+
+#~ msgid "<b>Error</b>: %1: %2"
+#~ msgstr "<b>Ошибка</b>: %1: %2"
+
+#~ msgid "<b>Error</b>: node %1: %2"
+#~ msgstr "<b>Ошибка</b>: узел %1: %2"
+
+#~ msgid "Display Images on Page"
+#~ msgstr "Показать изображения на странице"
+
+#~ msgid "Session is secured with %1 bit %2."
+#~ msgstr "Сеанс защищён %2 %1 бит."
+
+#~ msgid "Session is not secured."
+#~ msgstr "Сеанс не защищён."
+
+#~ msgid "Error while loading %1"
+#~ msgstr "Ошибка загрузки '%1'"
+
+#~ msgid "An error occurred while loading <B>%1</B>:"
+#~ msgstr "Ошибка при загрузке <B>%1</B>:"
+
+#~ msgid "Error: "
+#~ msgstr "Ошибка:"
+
+#~ msgid "The requested operation could not be completed"
+#~ msgstr "Запрошенная операция не может быть завершена"
+
+#~ msgid "Technical Reason: "
+#~ msgstr "Техническая причина: "
+
+#~ msgid "Details of the Request:"
+#~ msgstr "Подробности запроса:"
+
+#~ msgid "URL: %1"
+#~ msgstr "URL: %1"
+
+#~ msgid "Date and Time: %1"
+#~ msgstr "Дата и время: %1"
+
+#~ msgid "Additional Information: %1"
+#~ msgstr "Дополнительная информация: %1"
+
+#~ msgid "Possible Causes:"
+#~ msgstr "Возможные последствия:"
+
+#~ msgid "Possible Solutions:"
+#~ msgstr "Возможные решения:"
+
+#~ msgid "Page loaded."
+#~ msgstr "Страница загружена."
+
+#~ msgid ""
+#~ "_n: %n Image of %1 loaded.\n"
+#~ "%n Images of %1 loaded."
+#~ msgstr ""
+#~ "Загружено изображений: %n из %1\n"
+#~ "Загружено изображений: %n из %1\n"
+#~ "Загружено изображений: %n из %1"
+
+#~ msgid " (In new window)"
+#~ msgstr " (В новом окне)"
+
+#~ msgid "Symbolic Link"
+#~ msgstr "Символическая ссылка"
+
+#~ msgid "%1 (Link)"
+#~ msgstr "%1 (Ссылка)"
+
+#~ msgid "%2 (%1 bytes)"
+#~ msgstr "%2 (%1 байт)"
+
+#~ msgid "%2 (%1 K)"
+#~ msgstr "%2 (%1 К)"
+
+#~ msgid " (In other frame)"
+#~ msgstr " (В другом фрейме)"
+
+#~ msgid "Email to: "
+#~ msgstr "Написать письмо: "
+
+#~ msgid " - Subject: "
+#~ msgstr " - Тема: "
+
+#~ msgid " - CC: "
+#~ msgstr " - Копия: "
+
+#~ msgid " - BCC: "
+#~ msgstr " - BCC: "
+
+#~ msgid ""
+#~ "<qt>This untrusted page links to<BR><B>%1</B>.<BR>Do you want to follow "
+#~ "the link?"
+#~ msgstr ""
+#~ "<qt>Данная непроверенная страница содержит ссылку <BR><B>%1</B>."
+#~ "<BR>Перейти по ссылке?"
+
+#~ msgid "Follow"
+#~ msgstr "Перейти"
+
+#~ msgid "Frame Information"
+#~ msgstr "Сведения о фрейме"
+
+#~ msgid " <a href=\"%1\">[Properties]</a>"
+#~ msgstr " <a href=\"%1\">[Свойства]</a>"
+
+#~ msgid "Save Background Image As"
+#~ msgstr "Сохранить фоновое изображение как"
+
+#~ msgid "Save Frame As"
+#~ msgstr "Сохранить фрейм как"
+
+#~ msgid "&Find in Frame..."
+#~ msgstr "&Поиск во фрейме..."
+
+#~ msgid ""
+#~ "Warning: This is a secure form but it is attempting to send your data "
+#~ "back unencrypted.\n"
+#~ "A third party may be able to intercept and view this information.\n"
+#~ "Are you sure you wish to continue?"
+#~ msgstr ""
+#~ "Внимание: это защищённая форма, но она пытается вернуть ваши данные назад "
+#~ "в незашифрованном виде.\n"
+#~ "Третья сторона может перехватить и просмотреть эту информацию.\n"
+#~ "Продолжить?"
+
+#~ msgid "Network Transmission"
+#~ msgstr "Передача по сети"
+
+#~ msgid "&Send Unencrypted"
+#~ msgstr "&Отправить незашифрованным"
+
+#~ msgid ""
+#~ "Warning: Your data is about to be transmitted across the network "
+#~ "unencrypted.\n"
+#~ "Are you sure you wish to continue?"
+#~ msgstr ""
+#~ "Внимание: Ваши данные будут передаваться по сети в незащищённом виде.\n"
+#~ "Продолжить?"
+
+#~ msgid ""
+#~ "This site is attempting to submit form data via email.\n"
+#~ "Do you want to continue?"
+#~ msgstr ""
+#~ "Попытка передачи данных формы на сайт по электронной почте.\n"
+#~ "Действительно хотите продолжить?"
+
+#~ msgid "&Send Email"
+#~ msgstr "&Отправить e-mail"
+
+#~ msgid ""
+#~ "<qt>The form will be submitted to <BR><B>%1</B><BR>on your local "
+#~ "filesystem.<BR>Do you want to submit the form?"
+#~ msgstr ""
+#~ "<qt>Форма будет передана файлу <BR><B>%1</B><BR>локальной файловой "
+#~ "системы.<BR>Отправить форму?"
+
+#~ msgid "Submit"
+#~ msgstr "Отправить"
+
+#~ msgid ""
+#~ "This site attempted to attach a file from your computer in the form "
+#~ "submission. The attachment was removed for your protection."
+#~ msgstr ""
+#~ "Попытка присоединения локального файла к данным формы для отправки на "
+#~ "сайт. Ради вашей безопасности приложенный файл был удалён."
+
+#~ msgid "KDE"
+#~ msgstr "KDE"
+
+#~ msgid "(%1/s)"
+#~ msgstr "(%1/с)"
+
+#~ msgid "Security Warning"
+#~ msgstr "Предупреждение системы безопасности"
+
+#~ msgid "<qt>Access by untrusted page to<BR><B>%1</B><BR> denied."
+#~ msgstr "<qt>Доступ с ненадежной страницы к <BR><B>%1</B><BR> запрещен."
+
+#~ msgid "Security Alert"
+#~ msgstr "Извещение системы безопасности"
+
+#~ msgid "The wallet '%1' is open and being used for form data and passwords."
+#~ msgstr "Бумажник '%1' открыт и используется для ввода данных и паролей."
+
+#~ msgid "&Close Wallet"
+#~ msgstr "&Закрыть бумажник"
+
+#~ msgid "JavaScript &Debugger"
+#~ msgstr "Отла&дчик JavaScript"
+
+#~ msgid "This page was prevented from opening a new window via JavaScript."
+#~ msgstr "Сайт пытается открыть новое окно с использованием Javascript."
+
+#~ msgid "Popup Window Blocked"
+#~ msgstr "Заблокировано всплывающее окно"
+
+#~ msgid ""
+#~ "This page has attempted to open a popup window but was blocked.\n"
+#~ "You can click on this icon in the status bar to control this behavior\n"
+#~ "or to open the popup."
+#~ msgstr ""
+#~ "Заблокировано всплывающее окно, которое пыталась открыть страница.\n"
+#~ "Этой функцией можно управлять, щёлкая на строке состояния,\n"
+#~ "чтобы разрешить или запретить всплывающее окно."
+
+#~ msgid ""
+#~ "_n: &Show Blocked Popup Window\n"
+#~ "Show %n Blocked Popup Windows"
+#~ msgstr ""
+#~ "Показать %n всплывающее окно\n"
+#~ "Показать %n всплывающих окна\n"
+#~ "Показать %n всплывающих окон"
+
+#~ msgid "Show Blocked Window Passive Popup &Notification"
+#~ msgstr "&Уведомлять о заблокированных всплывающих окнах"
+
+#~ msgid "&Configure JavaScript New Window Policies..."
+#~ msgstr "&Настроить правила для новых окон JavaScript..."
+
+#~ msgid "Find stopped."
+#~ msgstr "Поиск остановлен."
+
+#~ msgid "Starting -- find links as you type"
+#~ msgstr "Поиск ссылок по мере набора..."
+
+#~ msgid "Starting -- find text as you type"
+#~ msgstr "Поиск текста по мере набора..."
+
+#~ msgid "Link found: \"%1\"."
+#~ msgstr "Найдена ссылка: \"%1\"."
+
+#~ msgid "Link not found: \"%1\"."
+#~ msgstr "Ссылка не найдена: \"%1\"."
+
+#~ msgid "Text found: \"%1\"."
+#~ msgstr "Найден текст: \"%1\"."
+
+#~ msgid "Text not found: \"%1\"."
+#~ msgstr "Текст не найден: \"%1\"."
+
+#~ msgid "Access Keys activated"
+#~ msgstr "Включено использование ключей доступа"
+
+#~ msgid "Print %1"
+#~ msgstr "Печать %1"
+
+#~ msgid "KHTML"
+#~ msgstr "KHTML"
+
+#~ msgid "Embeddable HTML component"
+#~ msgstr "Встраиваемый компонент для отображения HTML"
+
+#~ msgid "the document is not in the correct file format"
+#~ msgstr "документ содержит данные некорректного формата"
+
+#~ msgid "fatal parsing error: %1 in line %2, column %3"
+#~ msgstr "критическая ошибка обработки: %1 в строке %2, позиция %3"
+
+#~ msgid "XML parsing error"
+#~ msgstr "ошибка при разборе XML"
+
+#~ msgid "Basic Page Style"
+#~ msgstr "Основной стиль страницы"
+
+#~ msgid "JavaScript Error"
+#~ msgstr "Ошибка JavaScript"
+
+#~ msgid "&Do not show this message again"
+#~ msgstr "&Не выводить больше это сообщение"
+
+#~ msgid "JavaScript Debugger"
+#~ msgstr "Отладчик JavaScript"
+
+#~ msgid "Call stack"
+#~ msgstr "Стек вызова"
+
+#~ msgid "JavaScript console"
+#~ msgstr "Консоль JavaScript"
+
+#~ msgid ""
+#~ "_: Next breakpoint\n"
+#~ "&Next"
+#~ msgstr "&След."
+
+#~ msgid "&Step"
+#~ msgstr "&Шаг"
+
+#~ msgid "&Continue"
+#~ msgstr "Пр&одолжить"
+
+#~ msgid "&Break at Next Statement"
+#~ msgstr "П&рерывание на следующем операторе"
+
+#~ msgid ""
+#~ "_: Next breakpoint\n"
+#~ "Next"
+#~ msgstr "След."
+
+#~ msgid "Step"
+#~ msgstr "Шаг"
+
+#~ msgid "Parse error at %1 line %2"
+#~ msgstr "Ошибка разбора %1 строка %2"
+
+#~ msgid ""
+#~ "An error occurred while attempting to run a script on this page.\n"
+#~ "\n"
+#~ "%1"
+#~ msgstr ""
+#~ "Произошла ошибка при попытке выполнить скрипт на этой странице.\n"
+#~ "\n"
+#~ "%1"
+
+#~ msgid ""
+#~ "An error occurred while attempting to run a script on this page.\n"
+#~ "\n"
+#~ "%1 line %2:\n"
+#~ "%3"
+#~ msgstr ""
+#~ "Произошла ошибка при попытке выполнить скрипт на этой странице.\n"
+#~ "\n"
+#~ "%1 строка %2:\n"
+#~ "%3"
+
+#~ msgid "Confirmation: JavaScript Popup"
+#~ msgstr "Подтверждение: Всплывающее окно Javascript"
+
+#~ msgid ""
+#~ "This site is requesting to open up a new browser window via JavaScript.\n"
+#~ "Do you want to allow this?"
+#~ msgstr ""
+#~ "Этот сайт пытается открыть новое окно с использованием Javascript.\n"
+#~ "Разрешить открыть окно?"
+
+#~ msgid ""
+#~ "<qt>This site is requesting to open<p>%1</p>in a new browser window via "
+#~ "JavaScript.<br />Do you want to allow this?</qt>"
+#~ msgstr ""
+#~ "<qt>Этот сайт пытается открыть<p>%1</p>в новом окне браузера с помощью "
+#~ "JavaScript.<br />Разрешить?</qt>"
+
+#~ msgid "Allow"
+#~ msgstr "Разрешить"
+
+#~ msgid "Do Not Allow"
+#~ msgstr "Запретить"
+
+#~ msgid "Close window?"
+#~ msgstr "Закрыть окно?"
+
+#~ msgid "Confirmation Required"
+#~ msgstr "Требуется подтверждение"
+
+#~ msgid ""
+#~ "Do you want a bookmark pointing to the location \"%1\" to be added to "
+#~ "your collection?"
+#~ msgstr "Добавить закладку на адрес \"%1\" в вашу коллекцию?"
+
+#~ msgid ""
+#~ "Do you want a bookmark pointing to the location \"%1\" titled \"%2\" to "
+#~ "be added to your collection?"
+#~ msgstr ""
+#~ "Добавить закладку на адрес \"%1\" с заголовком \"%2\" в вашу коллекцию?"
+
+#~ msgid "JavaScript Attempted Bookmark Insert"
+#~ msgstr "JavaScript пытается добавить закладку"
+
+#~ msgid "Disallow"
+#~ msgstr "Запретить"
+
+#~ msgid ""
+#~ "A script on this page is causing KHTML to freeze. If it continues to run, "
+#~ "other applications may become less responsive.\n"
+#~ "Do you want to abort the script?"
+#~ msgstr ""
+#~ "Скрипт на этой странице привёл к перегрузке KHTML. Если он продолжит "
+#~ "работать, другие приложения будут отзываться медленнее.\n"
+#~ "Прервать работу скрипта?"
+
+#~ msgid "JavaScript"
+#~ msgstr "JavaScript"
+
+#~ msgid "&Abort"
+#~ msgstr "&Прервать"
+
+#~ msgid ""
+#~ "This site is submitting a form which will open up a new browser window "
+#~ "via JavaScript.\n"
+#~ "Do you want to allow the form to be submitted?"
+#~ msgstr ""
+#~ "Этот сайт пытается отправить форму, что приведёт к открытию нового окна "
+#~ "браузера (через JavaScript).\n"
+#~ "Разрешить это?"
+
+#~ msgid ""
+#~ "<qt>This site is submitting a form which will open <p>%1</p> in a new "
+#~ "browser window via JavaScript.<br />Do you want to allow the form to be "
+#~ "submitted?</qt>"
+#~ msgstr ""
+#~ "<qt>Этот сайт пытается отправить форму, что приведёт к открытию <p>%1</p> "
+#~ "в новом окне браузера (через JavaScript).<br />Разрешить это?</qt>"
+
+#~ msgid "This is a searchable index. Enter search keywords: "
+#~ msgstr "Это индекс с возможностью поиска. Введите ключевые слова: "
+
+#~ msgid ""
+#~ "The following files will not be uploaded because they could not be "
+#~ "found.\n"
+#~ "Do you want to continue?"
+#~ msgstr ""
+#~ "Указанные файлы не могут быть загружены, поскольку они не найдены.\n"
+#~ "Продолжить?"
+
+#~ msgid "Submit Confirmation"
+#~ msgstr "Подтверждение отправления"
+
+#~ msgid "&Submit Anyway"
+#~ msgstr "&Отправить"
+
+#~ msgid ""
+#~ "You're about to transfer the following files from your local computer to "
+#~ "the Internet.\n"
+#~ "Do you really want to continue?"
+#~ msgstr ""
+#~ "Вы собираетесь передать следующие файлы со своего компьютера в Интернет.\n"
+#~ "Продолжить?"
+
+#~ msgid "Send Confirmation"
+#~ msgstr "Отправить подтверждение"
+
+#~ msgid "&Send Files"
+#~ msgstr "&Отправить файлы"
+
+#~ msgid "Save Login Information"
+#~ msgstr "Сохранить данные регистрации"
+
+#~ msgid "Store"
+#~ msgstr "Сохранить"
+
+#~ msgid "Ne&ver for This Site"
+#~ msgstr "&Никогда для этого сайта"
+
+#~ msgid "Do Not Store"
+#~ msgstr "Не сохранять"
+
+#~ msgid ""
+#~ "Konqueror has the ability to store the password in an encrypted wallet. "
+#~ "When the wallet is unlocked, it can then automatically restore the login "
+#~ "information next time you submit this form. Do you want to store the "
+#~ "information now?"
+#~ msgstr ""
+#~ "Konqueror может сохранять пароль в зашифрованном бумажнике. Когда "
+#~ "бумажник разблокирован, он может автоматически восстановить "
+#~ "регистрационную информацию при следующей отправке формы. Сохранить "
+#~ "информацию сейчас?"
+
+#~ msgid ""
+#~ "Konqueror has the ability to store the password in an encrypted wallet. "
+#~ "When the wallet is unlocked, it can then automatically restore the login "
+#~ "information next time you visit %1. Do you want to store the information "
+#~ "now?"
+#~ msgstr ""
+#~ "Konqueror может сохранять пароль в зашифрованном бумажнике. Когда "
+#~ "бумажник разблокирован, он может автоматически восстановить "
+#~ "регистрационную информацию при следующем посещении %1. Сохранить "
+#~ "информацию сейчас?"
+
+#~ msgid "Applet Parameters"
+#~ msgstr "Параметры аплета"
+
+#~ msgid "Parameter"
+#~ msgstr "Параметр"
+
+#~ msgid "Class"
+#~ msgstr "Класс"
+
+#~ msgid "Base URL"
+#~ msgstr "Базовый URL"
+
+#~ msgid "Archives"
+#~ msgstr "Архивы"
+
+#~ msgid "KDE Java Applet Plugin"
+#~ msgstr "Модуль аплета Java среды KDE"
+
+#~ msgid "Initializing Applet \"%1\"..."
+#~ msgstr "Запускается аплет \"%1\"..."
+
+#~ msgid "Starting Applet \"%1\"..."
+#~ msgstr "Запускается аплет \"%1\"..."
+
+#~ msgid "Applet \"%1\" started"
+#~ msgstr "Аплет \"%1\" запущен"
+
+#~ msgid "Applet \"%1\" stopped"
+#~ msgstr "Аплет \"%1\" остановлен"
+
+#~ msgid "Loading Applet"
+#~ msgstr "Загрузка аплета"
+
+#~ msgid "Error: java executable not found"
+#~ msgstr "Ошибка: не найдена программа java"
+
+#~ msgid "Signed by (validation: "
+#~ msgstr "Подписано (подлинность: "
+
+#~ msgid "Certificate (validation: "
+#~ msgstr "Сертификат (подлинность: "
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
+
+#~ msgid "NoCARoot"
+#~ msgstr "NoCARoot"
+
+#~ msgid "InvalidPurpose"
+#~ msgstr "InvalidPurpose"
+
+#~ msgid "PathLengthExceeded"
+#~ msgstr "PathLengthExceeded"
+
+#~ msgid "InvalidCA"
+#~ msgstr "InvalidCA"
+
+#~ msgid "Expired"
+#~ msgstr "срок действия истёк"
+
+#~ msgid "SelfSigned"
+#~ msgstr "самоподписанный"
+
+#~ msgid "ErrorReadingRoot"
+#~ msgstr "ErrorReadingRoot"
+
+#~ msgid "Revoked"
+#~ msgstr "отозван"
+
+#~ msgid "Untrusted"
+#~ msgstr "нет доверия"
+
+#~ msgid "SignatureFailed"
+#~ msgstr "ошибка подписи"
+
+#~ msgid "Rejected"
+#~ msgstr "отклонён"
+
+#~ msgid "PrivateKeyFailed"
+#~ msgstr "ошибка частного ключа"
+
+#~ msgid "InvalidHost"
+#~ msgstr "ошибка в имени сервера"
+
+#~ msgid "Unknown"
+#~ msgstr "неизвестна"
+
+#~ msgid "Do you grant Java applet with certificate(s):"
+#~ msgstr "Запустить аплеты Java с сертификатами:"
+
+#~ msgid "the following permission"
+#~ msgstr "следующие права"
+
+#~ msgid "&Reject All"
+#~ msgstr "&Отклонить все"
+
+#~ msgid "&Grant All"
+#~ msgstr "&Принять все"
+
+#~ msgid "No handler found for %1!"
+#~ msgstr "Не найден обработчик для %1!"
+
+#~ msgid "KMultiPart"
+#~ msgstr "KMultiPart"
+
+#~ msgid "Embeddable component for multipart/mixed"
+#~ msgstr "Встраиваемый компонент для multipart/mixed"
+
+#~ msgid ""
+#~ "No plugin found for '%1'.\n"
+#~ "Do you want to download one from %2?"
+#~ msgstr ""
+#~ "Не обнаружено дополнение для '%1'.\n"
+#~ "Загрузить его с адреса %2?"
+
+#~ msgid "Missing Plugin"
+#~ msgstr "Отсутствует модуль"
+
+#~ msgid "Download"
+#~ msgstr "Загрузить"
+
+#~ msgid "Do Not Download"
+#~ msgstr "Не загружать"
+
+#~ msgid ""
+#~ "Unable to start new process.\n"
+#~ "The system may have reached the maximum number of open files possible or "
+#~ "the maximum number of open files that you are allowed to use has been "
+#~ "reached."
+#~ msgstr ""
+#~ "Невозможно запустить процесс.\n"
+#~ "Возможно, превышен предел количества открытых файлов в системе или для "
+#~ "пользователя."
+
+#~ msgid ""
+#~ "Unable to create new process.\n"
+#~ "The system may have reached the maximum number of processes possible or "
+#~ "the maximum number of processes that you are allowed to use has been "
+#~ "reached."
+#~ msgstr ""
+#~ "Невозможно создать процесс.\n"
+#~ "Возможно, превышен предел количества открытых файлов в системе или для "
+#~ "пользователя."
+
+#~ msgid "Could not find '%1' executable."
+#~ msgstr "Не удалось найти программу '%1'."
+
+#~ msgid ""
+#~ "Could not open library '%1'.\n"
+#~ "%2"
+#~ msgstr ""
+#~ "Не удалось открыть библиотеку '%1'.\n"
+#~ "%2"
+
+#~ msgid ""
+#~ "Could not find 'kdemain' in '%1'.\n"
+#~ "%2"
+#~ msgstr ""
+#~ "Не удалось найти 'kdemain' в '%1'.\n"
+#~ "%2"
+
+#~ msgid ""
+#~ "klauncher: This program is not supposed to be started manually.\n"
+#~ "klauncher: It is started automatically by kdeinit.\n"
+#~ msgstr ""
+#~ "klauncher: Эта программа не должна запускаться вручную.\n"
+#~ "klauncher: Она запускается автоматически из kdeinit.\n"
+
+#~ msgid "KDEInit could not launch '%1'."
+#~ msgstr "KDEInit не может запустить '%1'."
+
+#~ msgid "Could not find service '%1'."
+#~ msgstr "Не удаётся найти службу '%1'."
+
+#~ msgid "Service '%1' is malformatted."
+#~ msgstr "Служба '%1' имеет неверный формат."
+
+#~ msgid "Launching %1"
+#~ msgstr "Запускается %1"
+
+#~ msgid "Unknown protocol '%1'.\n"
+#~ msgstr "Неизвестный протокол '%1'.\n"
+
+#~ msgid "Error loading '%1'.\n"
+#~ msgstr "Ошибка загрузки '%1':\n"
+
+#~ msgid "Keep output results from scripts"
+#~ msgstr "Сохранять коды выхода из скриптов"
+
+#~ msgid "Check whether config file itself requires updating"
+#~ msgstr "Проверять, требует ли обновления сам файл конфигурации"
+
+#~ msgid "File to read update instructions from"
+#~ msgstr "Читать инструкции по обновлению из файла"
+
+#~ msgid "Only local files are supported."
+#~ msgstr "Поддерживаются только локальные файлы."
+
+#~ msgid "KConf Update"
+#~ msgstr "KConf Update"
+
+#~ msgid "KDE Tool for updating user configuration files"
+#~ msgstr "Утилита KDE для обновления файлов настроек пользователей"
+
+#~ msgid "KSpell2 Configuration"
+#~ msgstr "Настройка KSpell2"
+
+#~ msgid "Builds Qt widget plugins from an ini style description file."
+#~ msgstr "Строит модули виджетов Qt из файла описания стилей."
+
+#~ msgid "Output file"
+#~ msgstr "Файл вывода"
+
+#~ msgid "Name of the plugin class to generate"
+#~ msgstr "Имя создаваемого класса модулей"
+
+#~ msgid "Default widget group name to display in designer"
+#~ msgstr "Имя группы виджетов по умолчанию для отображения в дизайнере"
+
+#~ msgid "Embed pixmaps from a source directory"
+#~ msgstr "Внедрить рисунки из каталога исходного кода"
+
+#~ msgid "makekdewidgets"
+#~ msgstr "makekdewidgets"
+
+#~ msgid "Web style plugin"
+#~ msgstr "Модуль стиля Web"
+
+#~ msgid "KDE LegacyStyle plugin"
+#~ msgstr "Модуль устаревших тем KDE"
+
+#~ msgid "KDE Tool to build a cache list of all pixmap themes installed"
+#~ msgstr "Средство KDE для кэширования списка всех установленных тем pixmap."
+
+#~ msgid "KInstalltheme"
+#~ msgstr "KInstalltheme"
+
+#~ msgid ""
+#~ "A command-line application that can be used to run KUnitTest modules."
+#~ msgstr "Утилита командной строки для запуска модулей KUnitTest."
+
+#~ msgid "Only run modules whose filenames match the regexp."
+#~ msgstr "Запустить только модули, совпадающие с регулярным выражением."
+
+#~ msgid ""
+#~ "Only run tests modules which are found in the folder. Use the query "
+#~ "option to select modules."
+#~ msgstr ""
+#~ "Запустить модули тестов из папки. Измените параметры запроса для выбора "
+#~ "модулей."
+
+#~ msgid ""
+#~ "Disables debug capturing. You typically use this option when you use the "
+#~ "GUI."
+#~ msgstr ""
+#~ "Отключить отладку захвата. Обычно применяется при использовании "
+#~ "графического интерфейса."
+
+#~ msgid "KUnitTest ModRunner"
+#~ msgstr "KUnitTest ModRunner"
+
+#~ msgid "<qt>Do you want to search the Internet for <b>%1</b>?"
+#~ msgstr "<qt>Выполнить поиск <b>%1</b> в Интернете?"
+
+#~ msgid "Internet Search"
+#~ msgstr "Поиск в Интернет"
+
+#~ msgid ""
+#~ "The document \"%1\" has been modified.\n"
+#~ "Do you want to save your changes or discard them?"
+#~ msgstr ""
+#~ "Документ \"%1\" был изменён.\n"
+#~ "Сохранить изменения или отклонить их?"
+
+#~ msgid "Close Document"
+#~ msgstr "Закрыть документ"
+
+#~ msgid "Do you really want to execute '%1'? "
+#~ msgstr "Вы действительно хотите выполнить '%1'?"
+
+#~ msgid "Execute File?"
+#~ msgstr "Выполнить файл?"
+
+#~ msgid "Execute"
+#~ msgstr "Выполнить"
+
+#~ msgid ""
+#~ "Open '%2'?\n"
+#~ "Type: %1"
+#~ msgstr ""
+#~ "Открыть '%2'?\n"
+#~ "Тип: %1"
+
+#~ msgid ""
+#~ "Open '%3'?\n"
+#~ "Name: %2\n"
+#~ "Type: %1"
+#~ msgstr ""
+#~ "Открыть '%3'?\n"
+#~ "Имя: %2\n"
+#~ "Тип: %1"
+
+#~ msgid "&Open with '%1'"
+#~ msgstr "&Открыть в '%1'"
+
+#~ msgid "&Open With..."
+#~ msgstr "&Открыть с помощью..."
+
+#~ msgid "&Open"
+#~ msgstr "&Открыть"
+
+#~ msgid "Find Text"
+#~ msgstr "Найти текст"
+
+#~ msgid "Replace Text"
+#~ msgstr "Заменить текст"
+
+#~ msgid "&Text to find:"
+#~ msgstr "Искать &текст:"
+
+#~ msgid "Regular e&xpression"
+#~ msgstr "&Регулярное выражение"
+
+#~ msgid "Replace With"
+#~ msgstr "Заменить на"
+
+#~ msgid "Replace&ment text:"
+#~ msgstr "Текст для за&мены:"
+
+#~ msgid "Use p&laceholders"
+#~ msgstr "&Использовать заполнители"
+
+#~ msgid "Insert Place&holder"
+#~ msgstr "Вставить &заполнитель"
+
+#~ msgid "C&ase sensitive"
+#~ msgstr "С &учётом регистра"
+
+#~ msgid "&Whole words only"
+#~ msgstr "&Только полные слова"
+
+#~ msgid "From c&ursor"
+#~ msgstr "От к&урсора"
+
+#~ msgid "&Selected text"
+#~ msgstr "&Выделенный текст"
+
+#~ msgid "&Prompt on replace"
+#~ msgstr "&Спрашивать при замене"
+
+#~ msgid "Start replace"
+#~ msgstr "Начать замену"
+
+#~ msgid ""
+#~ "<qt>If you press the <b>Replace</b> button, the text you entered above is "
+#~ "searched for within the document and any occurrence is replaced with the "
+#~ "replacement text.</qt>"
+#~ msgstr ""
+#~ "<qt>Если вы нажмёте копку <b>Заменить</b>, будет произведён поиск "
+#~ "введённого вами выражения, а затем замена каждого из найденных совпадений "
+#~ "на текст замены </qt>"
+
+#~ msgid "Start searching"
+#~ msgstr "Начать поиск"
+
+#~ msgid ""
+#~ "<qt>If you press the <b>Find</b> button, the text you entered above is "
+#~ "searched for within the document.</qt>"
+#~ msgstr ""
+#~ "<qt>Если вы нажмёте кнопку <b>Найти</b>, будет выполнен поиск введённого "
+#~ "вами текста по всему документу.</qt>"
+
+#~ msgid ""
+#~ "Enter a pattern to search for, or select a previous pattern from the list."
+#~ msgstr ""
+#~ "Введите шаблон для поиска, или выберите предыдущий шаблон из списка."
+
+#~ msgid "If enabled, search for a regular expression."
+#~ msgstr "Если включено, искать регулярное выражение."
+
+#~ msgid "Click here to edit your regular expression using a graphical editor."
+#~ msgstr ""
+#~ "Нажмите, чтобы изменить ваше регулярное выражение при помощи графического "
+#~ "редактора."
+
+#~ msgid "Enter a replacement string, or select a previous one from the list."
+#~ msgstr "Введите строку для замены, или выберите предыдущую из списка."
+
+#~ msgid ""
+#~ "<qt>If enabled, any occurrence of <code><b>\\N</b></code>, where "
+#~ "<code><b>N</b></code> is a integer number, will be replaced with the "
+#~ "corresponding capture (\"parenthesized substring\") from the pattern."
+#~ "<p>To include (a literal <code><b>\\N</b></code> in your replacement, put "
+#~ "an extra backslash in front of it, like <code><b>\\\\N</b></code>.</qt>"
+#~ msgstr ""
+#~ "<qt>Если включено, любое вхождение кода <code><b>\\N</b></code>, где "
+#~ "<code><b>N</b></code> - целое число, будет заменено соответствующим "
+#~ "захватом (\"строкой в круглых скобках\") из шаблона.<p>Чтобы включить "
+#~ "<code><b>\\N</b></code> в замену в символьном виде, поместите перед ним "
+#~ "дополнительный символ backslash, например <code><b>\\\\N</b></code>.</qt>"
+
+#~ msgid "Click for a menu of available captures."
+#~ msgstr "Нажмите для вызова меню доступных захватов."
+
+#~ msgid "Require word boundaries in both ends of a match to succeed."
+#~ msgstr "Соответствие должно с обеих сторон заканчиваться словами."
+
+#~ msgid ""
+#~ "Start searching at the current cursor location rather than at the top."
+#~ msgstr "Начать поиск от позиции курсора, а не с начала документа."
+
+#~ msgid "Only search within the current selection."
+#~ msgstr "Искать только в выделенном фрагменте."
+
+#~ msgid ""
+#~ "Perform a case sensitive search: entering the pattern 'Joe' will not "
+#~ "match 'joe' or 'JOE', only 'Joe'."
+#~ msgstr ""
+#~ "Искать с учётом регистра. В этом случае при поиске строки 'Joe' не будут "
+#~ "найдены слова 'joe' или 'JOE', только 'Joe'."
+
+#~ msgid "Search backwards."
+#~ msgstr "Искать назад."
+
+#~ msgid "Ask before replacing each match found."
+#~ msgstr "Спрашивать при каждой замене."
+
+#~ msgid "Any Character"
+#~ msgstr "Любой символ"
+
+#~ msgid "Start of Line"
+#~ msgstr "Начало строки"
+
+#~ msgid "Set of Characters"
+#~ msgstr "Набор символов"
+
+#~ msgid "Repeats, Zero or More Times"
+#~ msgstr "Повторы, ноль или более раз"
+
+#~ msgid "Repeats, One or More Times"
+#~ msgstr "Повторы, один или более раз"
+
+#~ msgid "Optional"
+#~ msgstr "Дополнительно"
+
+#~ msgid "Escape"
+#~ msgstr "Escape"
+
+#~ msgid "TAB"
+#~ msgstr "Табуляция"
+
+#~ msgid "Newline"
+#~ msgstr "Перевод строки"
+
+#~ msgid "Carriage Return"
+#~ msgstr "Возврат каретки"
+
+#~ msgid "White Space"
+#~ msgstr "Пустое пространство"
+
+#~ msgid "Digit"
+#~ msgstr "Цифра"
+
+#~ msgid "Complete Match"
+#~ msgstr "Полное соответствие"
+
+#~ msgid "Captured Text (%1)"
+#~ msgstr "Захваченный текст (%1)"
+
+#~ msgid "You must enter some text to search for."
+#~ msgstr "Необходимо ввести текст для поиска."
+
+#~ msgid "Invalid regular expression."
+#~ msgstr "Неверное регулярное выражение"
+
+#~ msgid ""
+#~ "<qt>There was an error when loading the module '%1'.<br><br>The desktop "
+#~ "file (%2) as well as the library (%3) was found but yet the module could "
+#~ "not be loaded properly. Most likely the factory declaration was wrong, or "
+#~ "the create_* function was missing.</qt>"
+#~ msgstr ""
+#~ "<qt>При загрузке модуля '%1' произошла ошибка.<br><br>Файл .desktop (%2), "
+#~ "так же как и библиотека (%3) были найдены, но модуль все равно не может "
+#~ "быть загружен. Наиболее вероятная причина - неверный параметр factory "
+#~ "declaration, или отсутствие функции create_*.</qt>"
+
+#~ msgid "The specified library %1 could not be found."
+#~ msgstr "Библиотека %1 не найдена."
+
+#~ msgid "The module %1 could not be found."
+#~ msgstr "Модуль %1 не найден."
+
+#~ msgid ""
+#~ "<qt><p>The diagnostics is:<br>The desktop file %1 could not be found.</qt>"
+#~ msgstr "<qt><p>Диагностика:<br>Не удаётся найти десктоп-файл %1.</qt>"
+
+#~ msgid "The module %1 could not be loaded."
+#~ msgstr "Не удалось загрузить модуль %1."
+
+#~ msgid "The module %1 is not a valid configuration module."
+#~ msgstr "Модуль %1 не является правильным модулем настройки KDE."
+
+#~ msgid ""
+#~ "<qt><p>The diagnostics is:<br>The desktop file %1 does not specify a "
+#~ "library.</qt>"
+#~ msgstr ""
+#~ "<qt><p>Диагностика:<br>файл .desktop %1 не определяет библиотеку.</qt>"
+
+#~ msgid "There was an error loading the module."
+#~ msgstr "При загрузке модуля произошла ошибка."
+
+#~ msgid ""
+#~ "<qt><p>The diagnostics is:<br>%1<p>Possible reasons:</p><ul><li>An error "
+#~ "occurred during your last KDE upgrade leaving an orphaned control "
+#~ "module<li>You have old third party modules lying around.</ul><p>Check "
+#~ "these points carefully and try to remove the module mentioned in the "
+#~ "error message. If this fails, consider contacting your distributor or "
+#~ "packager.</p></qt>"
+#~ msgstr ""
+#~ "<qt><p>Диагностика:<br>%1<p>Возможные причины:</p><ul><li>Ошибка при "
+#~ "последнем обновлении KDE, в результате которой остался модуль управления "
+#~ "от предыдущей версии<li>У вас установлены сторонние модули управления.</"
+#~ "ul><p>Внимательно проверьте эти пункты и удалите перечисленные в них "
+#~ "модули. Если ошибка повторяется - обратитесь к сборщику пакетов.</p></qt>"
+
+#~ msgid "&All"
+#~ msgstr "&Все"
+
+#~ msgid "&Skip"
+#~ msgstr "Пропу&стить"
+
+#~ msgid "Replace '%1' with '%2'?"
+#~ msgstr "Заменить '%1' на '%2'?"
+
+#~ msgid "No text was replaced."
+#~ msgstr "Замена текста не была произведена."
+
+#~ msgid ""
+#~ "_n: 1 replacement done.\n"
+#~ "%n replacements done."
+#~ msgstr ""
+#~ "Сделана %n замена.\n"
+#~ "Сделаны %n замены.\n"
+#~ "Сделано %n замен."
+
+#~ msgid "Beginning of document reached."
+#~ msgstr "Достигнуто начало документа."
+
+#~ msgid "End of document reached."
+#~ msgstr "Достигнут конец документа."
+
+#~ msgid "Do you want to restart search at the beginning?"
+#~ msgstr "Продолжить поиск с начала?"
+
+#~ msgid "Restart"
+#~ msgstr "Перезапустить"
+
+#~ msgid ""
+#~ "<qt><table><tr><td><b>Description:</b></td><td>%1</td></"
+#~ "tr><tr><td><b>Author:</b></td><td>%2</td></tr><tr><td><b>Version:</b></"
+#~ "td><td>%3</td></tr><tr><td><b>License:</b></td><td>%4</td></tr></table></"
+#~ "qt>"
+#~ msgstr ""
+#~ "<qt><table><tr><td><b>Описание:</b></td><td>%1</td></tr><tr><td><b>Автор:"
+#~ "</b></td><td>%2</td></tr><tr><td><b>Версия:</b></td><td>%3</td></"
+#~ "tr><tr><td><b>Лицензия:</b></td><td>%4</td></tr></table></qt>"
+
+#~ msgid "(This plugin is not configurable)"
+#~ msgstr "(этот модуль не предоставляет возможность настройки)"
+
+#~ msgid ""
+#~ "Your replacement string is referencing a capture greater than '\\%1', "
+#~ msgstr "Строка замены ссылается на захват, больший чем '\\%1', "
+
+#~ msgid ""
+#~ "_n: but your pattern only defines 1 capture.\n"
+#~ "but your pattern only defines %n captures."
+#~ msgstr ""
+#~ "но ваш шаблон определяет только %n захват\n"
+#~ "но ваш шаблон определяет только %n захвата\n"
+#~ "но ваш шаблон определяет только %n захват."
+
+#~ msgid "but your pattern defines no captures."
+#~ msgstr "но ваш шаблон не определяет захватов."
+
+#~ msgid ""
+#~ "\n"
+#~ "Please correct."
+#~ msgstr ""
+#~ "\n"
+#~ "Исправьте, пожалуйста"
+
+#~ msgid "<qt>Find next occurrence of '<b>%1</b>'?</qt>"
+#~ msgstr "<qt>Найти следующее вхождение '<b>%1</b>'?</qt>"
+
+#~ msgid ""
+#~ "_n: 1 match found.\n"
+#~ "%n matches found."
+#~ msgstr ""
+#~ "Найдено %n совпадение.\n"
+#~ "Найдено %n совпадения.\n"
+#~ "Найдено %n совпадений."
+
+#~ msgid "<qt>No matches found for '<b>%1</b>'.</qt>"
+#~ msgstr "<qt>Не найдено совпадений для '<b>%1</b>'.</qt>"
+
+#~ msgid "No matches found for '<b>%1</b>'."
+#~ msgstr "Нет совпадений для '<b>%1</b>'."
+
+#~ msgid "Continue from the end?"
+#~ msgstr "Продолжить с конца?"
+
+#~ msgid "Continue from the beginning?"
+#~ msgstr "Продолжить с начала?"
+
+#~ msgid ""
+#~ "<b>Changes in this section requires root access.</b><br />Click the "
+#~ "\"Administrator Mode\" button to allow modifications."
+#~ msgstr ""
+#~ "<b>Вносить изменения в этот модуль может только администратор.</b><br /"
+#~ ">Для этого нажмите кнопку \"Режим администратора\"."
+
+#~ msgid ""
+#~ "This section requires special permissions, probably for system-wide "
+#~ "changes; therefore, it is required that you provide the root password to "
+#~ "be able to change the module's properties. If you do not provide the "
+#~ "password, the module will be disabled."
+#~ msgstr ""
+#~ "Этот раздел требует специальных прав доступа, возможно, для общесистемных "
+#~ "изменений. Поэтому необходимо ввести пароль администратора (root) для "
+#~ "изменения свойств этого модуля. Если вы не введете пароль администратора, "
+#~ "этот модуль будет заблокирован."
+
+#~ msgid ""
+#~ "_: Argument is application name\n"
+#~ "This configuration section is already opened in %1"
+#~ msgstr "Этот модуль настройки уже открыт в %1"
+
+#~ msgid "<big>Loading...</big>"
+#~ msgstr "<big>Загрузка...</big>"
+
+#~ msgid "Select Components"
+#~ msgstr "Выберите компоненты"
+
+#~ msgid "Select Components..."
+#~ msgstr "Выберите компоненты..."
+
+#~ msgid "resource"
+#~ msgstr "ресурс"
+
+#~ msgid "There is no resource available!"
+#~ msgstr "Нет доступных ресурсов!"
+
+#~ msgid "kcmkresources"
+#~ msgstr "kcmkresources"
+
+#~ msgid "KDE Resources configuration module"
+#~ msgstr "Модуль настройки ресурсов KDE"
+
+#~ msgid "Resource Configuration"
+#~ msgstr "Настройка ресурса"
+
+#~ msgid "General Settings"
+#~ msgstr "Общие параметры"
+
+#~ msgid "Read-only"
+#~ msgstr "Только для чтения"
+
+#~ msgid "%1 Resource Settings"
+#~ msgstr "Параметры ресурса %1"
+
+#~ msgid "Please enter a resource name."
+#~ msgstr "Введите имя ресурса."
+
+#~ msgid "Type"
+#~ msgstr "Тип"
+
+#~ msgid "Standard"
+#~ msgstr "Стандартный"
+
+#~ msgid "&Use as Standard"
+#~ msgstr "&Использовать как стандартный"
+
+#~ msgid "There is no standard resource! Please select one."
+#~ msgstr "Не выбран стандартный ресурс! Выберите стандартный ресурс."
+
+#~ msgid "Please select type of the new resource:"
+#~ msgstr "Выберите тип нового ресурса:"
+
+#~ msgid "Unable to create resource of type '%1'."
+#~ msgstr "Не удалось создать ресурс типа '%1'."
+
+#~ msgid ""
+#~ "You cannot remove your standard resource! Please select a new standard "
+#~ "resource first."
+#~ msgstr ""
+#~ "Нельзя удалить стандартный ресурс! Сначала выберите новый стандартный "
+#~ "ресурс."
+
+#~ msgid "You cannot use a read-only resource as standard!"
+#~ msgstr ""
+#~ "Нельзя использовать доступный только для чтения ресурс как стандартный!"
+
+#~ msgid "You cannot use an inactive resource as standard!"
+#~ msgstr "Нельзя использовать неактивный ресурс как стандартный!"
+
+#~ msgid ""
+#~ "You cannot deactivate the standard resource. Choose another standard "
+#~ "resource first."
+#~ msgstr ""
+#~ "Нельзя удалить этот стандартный ресурс. Сначала выберите новый "
+#~ "стандартный ресурс."
+
+#~ msgid ""
+#~ "There is no valid standard resource! Please select one which is neither "
+#~ "read-only nor inactive."
+#~ msgstr ""
+#~ "Не выбран действительный стандартный ресурс! Выберите ресурс, который не "
+#~ "является неактивным и доступен для записи."
+
+#~ msgid "Headline"
+#~ msgstr "Заголовок"
+
+#~ msgid "Position"
+#~ msgstr "Должность"
+
+#~ msgid "Sub-Department"
+#~ msgstr "Отделение"
+
+#~ msgid ""
+#~ "_: As in addresses\n"
+#~ "State"
+#~ msgstr "Область/Штат"
+
+#~ msgid "Rank"
+#~ msgstr "Звание"
+
+#~ msgid "Name Prefix"
+#~ msgstr "Титул к имени"
+
+#~ msgid "First Name"
+#~ msgstr "Имя"
+
+#~ msgid "Last Name"
+#~ msgstr "Фамилия"
+
+#~ msgid "Talk Addresses"
+#~ msgstr "Адреса для чата"
+
+#~ msgid "Keywords"
+#~ msgstr "Ключевые слова"
+
+#~ msgid "URLs"
+#~ msgstr "URL"
+
+#~ msgid "User Field 1"
+#~ msgstr "Пользовательские 1"
+
+#~ msgid "User Field 2"
+#~ msgstr "Пользовательские 2"
+
+#~ msgid "User Field 3"
+#~ msgstr "Пользовательские 3"
+
+#~ msgid "User Field 4"
+#~ msgstr "Пользовательские 4"
+
+#~ msgid "Categories"
+#~ msgstr "Категории"
+
+#~ msgid "Out of Memory"
+#~ msgstr "Недостаточно памяти"
+
+#~ msgid ""
+#~ "Your local kab configuration file \"%1\" could not be created. kab will "
+#~ "probably not work correctly without it.\n"
+#~ "Make sure you have not removed write permission from your local KDE "
+#~ "directory (usually ~/.kde)."
+#~ msgstr ""
+#~ "Не удалось создать локальный файл конфигурации для kab \"%1\". Скорее "
+#~ "всего, kab не будет правильно работать без него.\n"
+#~ "Проверьте, есть ли у вас права на запись в ваш локальный каталог KDE "
+#~ "(обычно это - ~/.kde)."
+
+#~ msgid ""
+#~ "Your standard kab database file \"%1\" could not be created. kab will "
+#~ "probably not work correctly without it.\n"
+#~ "Make sure you have not removed write permission from your local KDE "
+#~ "directory (usually ~/.kde)."
+#~ msgstr ""
+#~ "Не удалось создать стандартный файл базы данных \"%1\" для kab. Скорее "
+#~ "всего, kab не будет правильно работать без него.\n"
+#~ "Проверьте, есть ли у вас права на запись в ваш локальный каталог KDE "
+#~ "(обычно это - ~/.kde)."
+
+#~ msgid ""
+#~ "kab has created your standard addressbook in\n"
+#~ "\"%1\""
+#~ msgstr ""
+#~ "Создана адресная книг kab в\n"
+#~ "\"%1\""
+
+#~ msgid "Cannot create backup file (permission denied)."
+#~ msgstr "Не удалось создать резервную копию файла (доступ запрещён)."
+
+#~ msgid "File Error"
+#~ msgstr "Ошибка файла"
+
+#~ msgid "Cannot open backup file for writing (permission denied)."
+#~ msgstr ""
+#~ "Не удаётся открыть резервную копию файла для записи (доступ запрещён)."
+
+#~ msgid ""
+#~ "Critical error:\n"
+#~ "Permissions changed in local directory!"
+#~ msgstr ""
+#~ "Критическая ошибка:\n"
+#~ "Изменились права доступа к локальному каталогу!"
+
+#~ msgid "File reloaded."
+#~ msgstr "Файл прочитан заново."
+
+#~ msgid ""
+#~ "The currently loaded file \"%1\" cannot be reloaded. kab may close or "
+#~ "save it.\n"
+#~ "Save it if you accidentally deleted your data file.\n"
+#~ "Close it if you intended to do so.\n"
+#~ "Your file will be closed by default."
+#~ msgstr ""
+#~ "Загруженный файл \"%1\" не может быть обновлён. kab может закрыть или "
+#~ "сохранить его.\n"
+#~ "Сохраните, если он был случайно удалён.\n"
+#~ "Закройте, если вы собирались это сделать.\n"
+#~ "По умолчанию файл будет закрыт."
+
+#~ msgid "(Safety copy on file error)"
+#~ msgstr "(Резервная копия на случай ошибок)"
+
+#~ msgid "Cannot save the file; will close it now."
+#~ msgstr "Не удаётся сохранить файл. Он будет закрыт."
+
+#~ msgid "File opened."
+#~ msgstr "Файл открыт."
+
+#~ msgid "Could not load the file."
+#~ msgstr "Не удаётся загрузить файл."
+
+#~ msgid "No such file."
+#~ msgstr "Такого файла не существует."
+
+#~ msgid "The file \"%1\" cannot be found. Create a new one?"
+#~ msgstr "Не удаётся найти файл \"%1\". Создать новый?"
+
+#~ msgid "No Such File"
+#~ msgstr "Файл не найден"
+
+#~ msgid "Create"
+#~ msgstr "Создать"
+
+#~ msgid "New file."
+#~ msgstr "Новый файл."
+
+#~ msgid "Canceled."
+#~ msgstr "Отменено."
+
+#~ msgid "(Internal error in kab)"
+#~ msgstr "(Внутренняя ошибка kab)"
+
+#~ msgid "(empty entry)"
+#~ msgstr "(пустая запись)"
+
+#~ msgid "Cannot reload configuration file!"
+#~ msgstr "Не удаётся повторно прочитать файл конфигурации."
+
+#~ msgid "Configuration file reloaded."
+#~ msgstr "Файл конфигурации считан заново."
+
+#~ msgid "File saved."
+#~ msgstr "Файл сохранен."
+
+#~ msgid "Permission denied."
+#~ msgstr "Доступ запрещён."
+
+#~ msgid "File closed."
+#~ msgstr "Файл закрыт."
+
+#~ msgid ""
+#~ "The file you wanted to change could not be locked.\n"
+#~ "It is probably in use by another application or read-only."
+#~ msgstr ""
+#~ "Не удаётся заблокировать файл. Он либо используется \n"
+#~ "другим приложением, либо доступен только для чтения."
+
+#~ msgid ""
+#~ "Cannot find kab's template file.\n"
+#~ "You cannot create new files."
+#~ msgstr ""
+#~ "Не удаётся найти файл шаблона kab.\n"
+#~ "Вы не сможете создавать новых файлы."
+
+#~ msgid ""
+#~ "Cannot read kab's template file.\n"
+#~ "You cannot create new files."
+#~ msgstr ""
+#~ "Не удаётся прочитать файл шаблона kab.\n"
+#~ "Вы не сможете создавать новые файлы."
+
+#~ msgid "Format Error"
+#~ msgstr "Ошибка формата"
+
+#~ msgid ""
+#~ "Cannot create the file\n"
+#~ "\""
+#~ msgstr ""
+#~ "Не удаётся создать файл\n"
+#~ "\""
+
+#~ msgid ""
+#~ "Cannot find kab's configuration template file.\n"
+#~ "kab cannot be configured."
+#~ msgstr ""
+#~ "Не удаётся найти файл шаблона конфигурации kab.\n"
+#~ "Настроить kab невозможно."
+
+#~ msgid ""
+#~ "Cannot read kab's configuration template file.\n"
+#~ "kab cannot be configured."
+#~ msgstr ""
+#~ "Не удаётся прочитать файл шаблона конфигурации kab.\n"
+#~ "Настроить kab невозможно."
+
+#~ msgid "Could not create the new configuration file."
+#~ msgstr "Не удаётся создать новый файл конфигурации"
+
+#~ msgid ""
+#~ "Cannot load kab's local configuration file.\n"
+#~ "There may be a formatting error.\n"
+#~ "kab cannot be configured."
+#~ msgstr ""
+#~ "Ошибка загрузки локального файла конфигурации kab;\n"
+#~ "возможно, ошибка формата.\n"
+#~ "Настроить kab невозможно."
+
+#~ msgid ""
+#~ "Cannot find kab's local configuration file.\n"
+#~ "kab cannot be configured."
+#~ msgstr ""
+#~ "Не удаётся найти локальный файл конфигурации kab;\n"
+#~ "Настроить kab невозможно."
+
+#~ msgid "fixed"
+#~ msgstr "стационарный"
+
+#~ msgid "mobile"
+#~ msgstr "сотовый"
+
+#~ msgid "fax"
+#~ msgstr "факс"
+
+#~ msgid "modem"
+#~ msgstr "модем"
+
+#~ msgid "general"
+#~ msgstr "обычный"
+
+#~ msgid "Business"
+#~ msgstr "Работа"
+
+#~ msgid "Dates"
+#~ msgstr "Даты"
+
+#~ msgid "Your new entry could not be added."
+#~ msgstr "Не удалось добавить новый элемент."
+
+#~ msgid "URL to open"
+#~ msgstr "Открыть URL"
+
+#~ msgid "KIOTest"
+#~ msgstr "KIOTest"
+
+#~ msgid "0.1"
+#~ msgstr "0.1"
+
+#~ msgid "KConvertTest"
+#~ msgstr "KConvertTest"
+
+#~ msgid "Display error message (default)"
+#~ msgstr "Показывать сообщения об ошибках (по умолчанию)"
+
+#~ msgid "Display warning message"
+#~ msgstr "Показывать предупреждения"
+
+#~ msgid "Display informational message"
+#~ msgstr "Показывать информационные сообщения"
+
+#~ msgid "Message string to be displayed"
+#~ msgstr "Строка сообщения"
+
+#~ msgid "artsmessage"
+#~ msgstr "Сообщение aRts"
+
+#~ msgid "Utility to display aRts error messages"
+#~ msgstr "Утилита для вывода сообщений aRts об ошибках"
+
+#~ msgid "Informational"
+#~ msgstr "Информационное"
+
+#~ msgid "Certificates"
+#~ msgstr "Сертификаты"
+
+#~ msgid "Signers"
+#~ msgstr "Подписанты"
+
+#~ msgid "Client"
+#~ msgstr "Клиент"
+
+#~ msgid "Import &All"
+#~ msgstr "Импортировать &все"
+
+#~ msgid "KDE Secure Certificate Import"
+#~ msgstr "Импорт защищённого сертификата KDE"
+
+#~ msgid "Chain:"
+#~ msgstr "Цепочка:"
+
+#~ msgid "Subject:"
+#~ msgstr "Тема:"
+
+#~ msgid "Issued by:"
+#~ msgstr "Выпущен:"
+
+#~ msgid "File:"
+#~ msgstr "Файл:"
+
+#~ msgid "File format:"
+#~ msgstr "Формат файла:"
+
+#~ msgid "State:"
+#~ msgstr "Состояние:"
+
+#~ msgid "Valid from:"
+#~ msgstr "Годен с:"
+
+#~ msgid "Valid until:"
+#~ msgstr "Годен до:"
+
+#~ msgid "Serial number:"
+#~ msgstr "Серийный номер:"
+
+#~ msgid "MD5 digest:"
+#~ msgstr "Отпечаток MD5:"
+
+#~ msgid "Signature:"
+#~ msgstr "Подпись:"
+
+#~ msgid "Signature"
+#~ msgstr "Подпись"
+
+#~ msgid "Public key:"
+#~ msgstr "Открытый ключ:"
+
+#~ msgid "Public Key"
+#~ msgstr "Открытый ключ"
+
+#~ msgid "&Crypto Manager..."
+#~ msgstr "Администратор &сертификатов..."
+
+#~ msgid "&Import"
+#~ msgstr "&Импорт"
+
+#~ msgid "&Save..."
+#~ msgstr "&Сохранить..."
+
+#~ msgid "&Done"
+#~ msgstr "&Готово"
+
+#~ msgid "Save failed."
+#~ msgstr "Сохранение не выполнено."
+
+#~ msgid "Certificate Import"
+#~ msgstr "Импорт сертификата"
+
+#~ msgid "You do not seem to have compiled KDE with SSL support."
+#~ msgstr "Скорее всего, KDE собрана без поддержки SSL."
+
+#~ msgid "Certificate file is empty."
+#~ msgstr "Файл сертификата пуст."
+
+#~ msgid "Certificate Password"
+#~ msgstr "Пароль сертификата"
+
+#~ msgid "The certificate file could not be loaded. Try a different password?"
+#~ msgstr "Файл сертификата не может быть загружен. Попробовать другой пароль?"
+
+#~ msgid "Try Different"
+#~ msgstr "Указать другой"
+
+#~ msgid "This file cannot be opened."
+#~ msgstr "Этот файл не может быть открыт."
+
+#~ msgid "I do not know how to handle this type of file."
+#~ msgstr "Неизвестно, как обработать этот тип файла."
+
+#~ msgid "0 - Site Certificate"
+#~ msgstr "0 - Сертификат сайта"
+
+#~ msgid ""
+#~ "A certificate with that name already exists. Are you sure that you wish "
+#~ "to replace it?"
+#~ msgstr "Сертификат с таким именем уже существует. Заменить его?"
+
+#~ msgid ""
+#~ "Certificate has been successfully imported into KDE.\n"
+#~ "You can manage your certificate settings from the KDE Control Center."
+#~ msgstr ""
+#~ "Сертификат был успешно импортирован.\n"
+#~ "Сертификатами можно управлять в Центре управления KDE."
+
+#~ msgid ""
+#~ "Certificates have been successfully imported into KDE.\n"
+#~ "You can manage your certificate settings from the KDE Control Center."
+#~ msgstr ""
+#~ "Сертификаты были успешно импортированы.\n"
+#~ "Сертификатами можно управлять в Центре управления KDE."
+
+#~ msgid "KDE Certificate Part"
+#~ msgstr "Модуль сертификатов KDE"
+
+#~ msgid "Accept"
+#~ msgstr "Принять"
+
+#~ msgid "Reject"
+#~ msgstr "Отклонить"
+
+#~ msgid "Filter error"
+#~ msgstr "Ошибка фильтра"
+
+#~ msgid "Already open."
+#~ msgstr "Файл уже открыт."
+
+#~ msgid "Error opening file."
+#~ msgstr "Ошибка открытия файла."
+
+#~ msgid "Not a wallet file."
+#~ msgstr "Это не файл бумажника."
+
+#~ msgid "Unsupported file format revision."
+#~ msgstr "Неподдерживаемая версия формата файла."
+
+#~ msgid "Unknown encryption scheme."
+#~ msgstr "Неизвестная схема шифрования."
+
+#~ msgid "Corrupt file?"
+#~ msgstr "Повреждённый файл?"
+
+#~ msgid "Error validating wallet integrity. Possibly corrupted."
+#~ msgstr ""
+#~ "Ошибка проверки целостности бумажника. Вероятно, бумажник повреждён."
+
+#~ msgid "Read error - possibly incorrect password."
+#~ msgstr "Ошибка чтения - неверный пароль."
+
+#~ msgid "&New"
+#~ msgstr "Созд&ать"
+
+#~ msgid "Re&vert"
+#~ msgstr "&Восстановить"
+
+#~ msgid "Print Previe&w..."
+#~ msgstr "Пред&варительный просмотр..."
+
+#~ msgid "&Mail..."
+#~ msgstr "Отправить по &почте..."
+
+#~ msgid "Re&do"
+#~ msgstr "&Повторить"
+
+#~ msgid "Select &All"
+#~ msgstr "Вы&делить все"
+
+#~ msgid "Dese&lect"
+#~ msgstr "Отме&нить выделение"
+
+#~ msgid "Find Pre&vious"
+#~ msgstr "Найти пред&ыдущее"
+
+#~ msgid "&Actual Size"
+#~ msgstr "&Фактический размер"
+
+#~ msgid "&Fit to Page"
+#~ msgstr "&Вместить страницу целиком"
+
+#~ msgid "Fit to Page &Width"
+#~ msgstr "По &ширине страницы"
+
+#~ msgid "Fit to Page &Height"
+#~ msgstr "По &высоте страницы"
+
+#~ msgid "Zoom &In"
+#~ msgstr "У&величить"
+
+#~ msgid "Zoom &Out"
+#~ msgstr "У&меньшить"
+
+#~ msgid "&Zoom..."
+#~ msgstr "&Масштаб..."
+
+#~ msgid "&Redisplay"
+#~ msgstr "Обно&вить изображение"
+
+#~ msgid "&Up"
+#~ msgstr "Ввер&х"
+
+#~ msgid "&Previous Page"
+#~ msgstr "&Предыдущая страница"
+
+#~ msgid "&Next Page"
+#~ msgstr "&Следующая страница"
+
+#~ msgid "&Go To..."
+#~ msgstr "&Перейти..."
+
+#~ msgid "&Go to Page..."
+#~ msgstr "Перейти на ст&раницу..."
+
+#~ msgid "&Go to Line..."
+#~ msgstr "&Перейти на строку..."
+
+#~ msgid "&First Page"
+#~ msgstr "Перв&ая страница"
+
+#~ msgid "&Last Page"
+#~ msgstr "Последня&я страница"
+
+#~ msgid "&Edit Bookmarks"
+#~ msgstr "&Изменить закладки"
+
+#~ msgid "&Configure %1..."
+#~ msgstr "&Настроить %1..."
+
+#~ msgid "Configure Tool&bars..."
+#~ msgstr "Панели &инструментов..."
+
+#~ msgid "Configure &Notifications..."
+#~ msgstr "&Уведомления..."
+
+#~ msgid "What's &This?"
+#~ msgstr "Что &это?"
+
+#~ msgid "Tip of the &Day"
+#~ msgstr "Совет &дня"
+
+#~ msgid "A little program to output installation paths"
+#~ msgstr "Программа вывода путей установки"
+
+#~ msgid "expand ${prefix} and ${exec_prefix} in output"
+#~ msgstr "развернуть ${prefix} и ${exec_prefix} в выводе"
+
+#~ msgid "Compiled in prefix for KDE libraries"
+#~ msgstr "Встроенный prefix для библиотек KDE"
+
+#~ msgid "Compiled in exec_prefix for KDE libraries"
+#~ msgstr "Встроенный exec_prefix для библиотек KDE"
+
+#~ msgid "Compiled in library path suffix"
+#~ msgstr "Встроенный путь к библиотекам"
+
+#~ msgid "Prefix in $HOME used to write files"
+#~ msgstr "Каталог в $HOME для записи файлов"
+
+#~ msgid "Compiled in version string for KDE libraries"
+#~ msgstr "Встроенная строка - версия библиотек KDE"
+
+#~ msgid "Available KDE resource types"
+#~ msgstr "Доступные типы ресурсов KDE"
+
+#~ msgid "Search path for resource type"
+#~ msgstr "Путь поиска типов ресурсов"
+
+#~ msgid "User path: desktop|autostart|trash|document"
+#~ msgstr "Пользовательский путь: desktop|autostart|trash|document"
+
+#~ msgid "Prefix to install resource files to"
+#~ msgstr "Каталог установки файлов ресурсов"
+
+#~ msgid "Applications menu (.desktop files)"
+#~ msgstr "Меню приложений (файлы .desktop)"
+
+#~ msgid "CGIs to run from kdehelp"
+#~ msgstr "CGI, вызываемые из kdehelp"
+
+#~ msgid "Configuration files"
+#~ msgstr "Файлы конфигурации"
+
+#~ msgid "Where applications store data"
+#~ msgstr "Хранилище данных приложений"
+
+#~ msgid "Executables in $prefix/bin"
+#~ msgstr "Исполняемые файлы из $prefix/bin"
+
+#~ msgid "HTML documentation"
+#~ msgstr "Документация HTML"
+
+#~ msgid "Icons"
+#~ msgstr "Значки"
+
+#~ msgid "Configuration description files"
+#~ msgstr "Файлы описания конфигурации"
+
+#~ msgid "Libraries"
+#~ msgstr "Библиотеки"
+
+#~ msgid "Includes/Headers"
+#~ msgstr "Заголовки"
+
+#~ msgid "Translation files for KLocale"
+#~ msgstr "Файлы перевода для KLocale"
+
+#~ msgid "Mime types"
+#~ msgstr "Типы MIME"
+
+#~ msgid "Loadable modules"
+#~ msgstr "Загружаемые модули"
+
+#~ msgid "Qt plugins"
+#~ msgstr "Модули Qt"
+
+#~ msgid "Services"
+#~ msgstr "Службы"
+
+#~ msgid "Service types"
+#~ msgstr "Типы служб"
+
+#~ msgid "Application sounds"
+#~ msgstr "Звуковые файлы приложений"
+
+#~ msgid "Templates"
+#~ msgstr "Шаблоны"
+
+#~ msgid "Wallpapers"
+#~ msgstr "Обои"
+
+#~ msgid "XDG Application menu (.desktop files)"
+#~ msgstr "Меню приложений XDG (файлы .desktop)"
+
+#~ msgid "XDG Menu descriptions (.directory files)"
+#~ msgstr "Описание меню XDG (файлы .directory)"
+
+#~ msgid "XDG Menu layout (.menu files)"
+#~ msgstr "Порядок меню XDG (файлы .menu)"
+
+#~ msgid "Temporary files (specific for both current host and current user)"
+#~ msgstr ""
+#~ "Временные файлы (для конкретного компьютера и текущего пользователя)"
+
+#~ msgid "UNIX Sockets (specific for both current host and current user)"
+#~ msgstr "Сокеты UNIX (для конкретного компьютера и текущего пользователя)"
+
+#~ msgid "%1 - unknown type\n"
+#~ msgstr "%1 - неизвестный тип\n"
+
+#~ msgid "%1 - unknown type of userpath\n"
+#~ msgstr "%1 - неизвестный тип или путь\n"
+
+#~ msgid "Undo"
+#~ msgstr "Отменить действие"
+
+#~ msgid "Redo"
+#~ msgstr "Повторить"
+
+#~ msgid "Cut"
+#~ msgstr "Вырезать"
+
+#~ msgid "Paste"
+#~ msgstr "Вставить"
+
+#~ msgid "Paste special..."
+#~ msgstr "Специальная вставка..."
+
+#~ msgid "Clear"
+#~ msgstr "Очистить"
+
+#~ msgid "Help"
+#~ msgstr "Справка"
+
+#~ msgid "What's This?"
+#~ msgstr "Что это?"
+
+#~ msgid "&Font"
+#~ msgstr "&Шрифт"
+
+#~ msgid "Font st&yle"
+#~ msgstr "&Стиль шрифта"
+
+#~ msgid "&Size"
+#~ msgstr "&Размер"
+
+#~ msgid "Effects"
+#~ msgstr "Эффекты"
+
+#~ msgid "Stri&keout"
+#~ msgstr "П&еречёркивание"
+
+#~ msgid "&Underline"
+#~ msgstr "Под&чёркивание"
+
+#~ msgid "Sample"
+#~ msgstr "Образец"
+
+#~ msgid "Scr&ipt"
+#~ msgstr "Рукоп&исный"
+
+#~ msgid "OK"
+#~ msgstr "ОК"
+
+#~ msgid "Apply"
+#~ msgstr "Применить"
+
+#~ msgid "Cancel"
+#~ msgstr "Отмена"
+
+#~ msgid "Close"
+#~ msgstr "Закрыть"
+
+#~ msgid "Select Font"
+#~ msgstr "Выбор шрифта"
+
+#~ msgid ""
+#~ "_: QMessageBox\n"
+#~ "OK"
+#~ msgstr "ОК"
+
+#~ msgid ""
+#~ "_: QMessageBox\n"
+#~ "Cancel"
+#~ msgstr "Отмена"
+
+#~ msgid ""
+#~ "_: QMessageBox\n"
+#~ "&Yes"
+#~ msgstr "&Да"
+
+#~ msgid ""
+#~ "_: QMessageBox\n"
+#~ "&No"
+#~ msgstr "&Нет"
+
+#~ msgid ""
+#~ "_: QMessageBox\n"
+#~ "&Abort"
+#~ msgstr "&Прервать"
+
+#~ msgid ""
+#~ "_: QMessageBox\n"
+#~ "&Retry"
+#~ msgstr "Повто&рить"
+
+#~ msgid ""
+#~ "_: QMessageBox\n"
+#~ "&Ignore"
+#~ msgstr "&Игнорировать"
+
+#~ msgid ""
+#~ "_: QMessageBox\n"
+#~ "Yes to &All"
+#~ msgstr "&Да для всех"
+
+#~ msgid ""
+#~ "_: QMessageBox\n"
+#~ "N&o to All"
+#~ msgstr "&Нет для всех"
+
+#~ msgid ""
+#~ "<h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ "
+#~ "toolkit for multiplatform GUI & application development.</p><p>Qt "
+#~ "provides single-source portability across MS Windows, Mac "
+#~ "OS X, Linux, and all major commercial Unix variants.<br>Qt is also "
+#~ "available for embedded devices.</p><p>Qt is a Trolltech product. See "
+#~ "<tt>http://www.trolltech.com/qt/</tt> for more information.</p>"
+#~ msgstr ""
+#~ "<h3>О библиотеке Qt</h3><p>Эта программа использует Qt %1</p>.<p>Qt - это "
+#~ "инструментарий для кросс-платформенной разработки приложений с "
+#~ "графическим интерфейсом на C++.</p><p>Qt обеспечивает совместимость на "
+#~ "уровне исходных текстов между MS Windows, Mac OS X, Linux и "
+#~ "многими коммерческими версиями Unix.<br>Qt также доступна для "
+#~ "встраиваемых устройств.</p> <p>Qt - это продукт фирмы TrollTech. Более "
+#~ "подробно об этом см. <tt>http://www.trolltech.com/qt/</tt>.</p>"
+
+#~ msgid "About Qt"
+#~ msgstr "О Qt"
+
+#~ msgid "Defaults"
+#~ msgstr "По умолчанию"
+
+#~ msgid "&Cancel"
+#~ msgstr "О&тмена"
+
+#~ msgid "< &Back"
+#~ msgstr "< &Назад"
+
+#~ msgid "&Next >"
+#~ msgstr "&Далее >"
+
+#~ msgid "&Finish"
+#~ msgstr "&Готово"
+
+#~ msgid "&Help"
+#~ msgstr "&Справка"
+
+#~ msgid "%1, %2 not defined"
+#~ msgstr "%1, %2 не определены"
+
+#~ msgid "Ambiguous \"%1\" not handled"
+#~ msgstr "Неоднозначный \"%1\" не обрабатывается"
+
+#~ msgid ""
+#~ "_: QT_LAYOUT_DIRECTION\n"
+#~ "Translate this string to the string 'LTR' in left-to-right languages or "
+#~ "to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get "
+#~ "proper widget layout."
+#~ msgstr "LTR"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Latin"
+#~ msgstr "Латинский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Greek"
+#~ msgstr "Греческий"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Cyrillic"
+#~ msgstr "Кириллица"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Armenian"
+#~ msgstr "Армянский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Georgian"
+#~ msgstr "Грузинский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Runic"
+#~ msgstr "Рунический"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Ogham"
+#~ msgstr "Огамический"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "SpacingModifiers"
+#~ msgstr "SpacingModifiers"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "CombiningMarks"
+#~ msgstr "CombiningMarks"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Hebrew"
+#~ msgstr "Иврит"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Arabic"
+#~ msgstr "Арабский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Syriac"
+#~ msgstr "Сириак"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Thaana"
+#~ msgstr "Thaana"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Devanagari"
+#~ msgstr "Деванагари"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Bengali"
+#~ msgstr "Бенгальский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Gurmukhi"
+#~ msgstr "Гурмукхи"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Gujarati"
+#~ msgstr "Гуджарати"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Oriya"
+#~ msgstr "Ория"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Tamil"
+#~ msgstr "Тамильский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Telugu"
+#~ msgstr "Телугу"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Kannada"
+#~ msgstr "Каннада"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Malayalam"
+#~ msgstr "Малайский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Sinhala"
+#~ msgstr "Синхала"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Thai"
+#~ msgstr "Тайский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Lao"
+#~ msgstr "Лао"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Tibetan"
+#~ msgstr "Тибетский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Myanmar"
+#~ msgstr "Мьянма"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Khmer"
+#~ msgstr "Кхмерский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Han"
+#~ msgstr "Хан"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Hiragana"
+#~ msgstr "Хирагана"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Katakana"
+#~ msgstr "Катакана"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Hangul"
+#~ msgstr "Хангыль"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Bopomofo"
+#~ msgstr "Бопомофо"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Yi"
+#~ msgstr "И"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Ethiopic"
+#~ msgstr "Эфиопский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Cherokee"
+#~ msgstr "Чероки"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Canadian Aboriginal"
+#~ msgstr "Язык аборигенов Канады"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Mongolian"
+#~ msgstr "Монгольский"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Currency Symbols"
+#~ msgstr "Символы валюты"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Letterlike Symbols"
+#~ msgstr "Буквоподобные символы"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Number Forms"
+#~ msgstr "Числовые формы"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Mathematical Operators"
+#~ msgstr "Математические операторы"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Technical Symbols"
+#~ msgstr "Технические символы"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Geometric Symbols"
+#~ msgstr "Геометрические символы"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Miscellaneous Symbols"
+#~ msgstr "Прочие символы"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Enclosed and Square"
+#~ msgstr "Заполняющие знаки"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Braille"
+#~ msgstr "Брайль"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Unicode"
+#~ msgstr "Юникод"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Tagalog"
+#~ msgstr "Тагалог"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Hanunoo"
+#~ msgstr "Хануну"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Buhid"
+#~ msgstr "Бухид"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Tagbanwa"
+#~ msgstr "Тагбанва"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Katakana Half-Width Forms"
+#~ msgstr "Катакана (формы половинной ширины)"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Han (Japanese)"
+#~ msgstr "Хан (Японский)"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Han (Simplified Chinese)"
+#~ msgstr "Хан (Упрощенный китайский)"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Han (Traditional Chinese)"
+#~ msgstr "Хан (Традиционный китайский)"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Han (Korean)"
+#~ msgstr "Хан (Корейский)"
+
+#~ msgid ""
+#~ "_: QFont\n"
+#~ "Unknown Script"
+#~ msgstr "Неизвестный скрипт"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Space"
+#~ msgstr "Space"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Esc"
+#~ msgstr "Esc"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Tab"
+#~ msgstr "Tab"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Backtab"
+#~ msgstr "Backtab"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Backspace"
+#~ msgstr "Backspace"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Return"
+#~ msgstr "Return"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Enter"
+#~ msgstr "Enter"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Ins"
+#~ msgstr "Ins"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Del"
+#~ msgstr "Del"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Pause"
+#~ msgstr "Pause"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Print"
+#~ msgstr "Print"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "SysReq"
+#~ msgstr "SysReq"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Home"
+#~ msgstr "Home"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "End"
+#~ msgstr "End"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Left"
+#~ msgstr "Влево"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Up"
+#~ msgstr "Вверх"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Right"
+#~ msgstr "Вправо"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Down"
+#~ msgstr "Вниз"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "PgUp"
+#~ msgstr "PgUp"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "PgDown"
+#~ msgstr "PgDown"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "CapsLock"
+#~ msgstr "CapsLock"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "NumLock"
+#~ msgstr "NumLock"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "ScrollLock"
+#~ msgstr "ScrollLock"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Menu"
+#~ msgstr "Меню"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Help"
+#~ msgstr "Справка"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Back"
+#~ msgstr "Назад"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Forward"
+#~ msgstr "Вперёд"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Stop"
+#~ msgstr "Стоп"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Refresh"
+#~ msgstr "Обновить"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Volume Down"
+#~ msgstr "Уменьшить громкость"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Volume Mute"
+#~ msgstr "Отключить звук"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Volume Up"
+#~ msgstr "Увеличить громкость"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Bass Boost"
+#~ msgstr "Включить усиление НЧ"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Bass Up"
+#~ msgstr "Увеличить тембр НЧ"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Bass Down"
+#~ msgstr "Уменьшить тембр НЧ"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Treble Up"
+#~ msgstr "Увеличить тембр ВЧ"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Treble Down"
+#~ msgstr "Уменьшить тембр ВЧ"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Media Play"
+#~ msgstr "Воспроизведение"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Media Stop"
+#~ msgstr "Останов"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Media Previous"
+#~ msgstr "Пред. дорожка"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Media Next"
+#~ msgstr "След. дорожка"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Media Record"
+#~ msgstr "Запись"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Favorites"
+#~ msgstr "Предпочтения"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Search"
+#~ msgstr "Поиск"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Standby"
+#~ msgstr "Ждущий режим"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Open URL"
+#~ msgstr "Открыть URL"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch Mail"
+#~ msgstr "Запустить почтовый клиент"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch Media"
+#~ msgstr "Запустить мультимедийный проигрыватель"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (0)"
+#~ msgstr "Запустить (0)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (1)"
+#~ msgstr "Запустить (1)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (2)"
+#~ msgstr "Запустить (2)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (3)"
+#~ msgstr "Запустить (3)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (4)"
+#~ msgstr "Запустить (4)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (5)"
+#~ msgstr "Запустить (5)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (6)"
+#~ msgstr "Запустить (6)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (7)"
+#~ msgstr "Запустить (7)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (8)"
+#~ msgstr "Запустить (8)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (9)"
+#~ msgstr "Запустить (9)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (A)"
+#~ msgstr "Запустить (A)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (B)"
+#~ msgstr "Запустить (B)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (C)"
+#~ msgstr "Запустить (C)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (D)"
+#~ msgstr "Запустить (D)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (E)"
+#~ msgstr "Запустить (E)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Launch (F)"
+#~ msgstr "Запустить (F)"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Print Screen"
+#~ msgstr "Print Screen"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Page Up"
+#~ msgstr "Page Up"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Page Down"
+#~ msgstr "Page Down"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Caps Lock"
+#~ msgstr "Caps Lock"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Num Lock"
+#~ msgstr "Num Lock"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Number Lock"
+#~ msgstr "Num Lock"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Scroll Lock"
+#~ msgstr "Scroll Lock"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Insert"
+#~ msgstr "Ins"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Delete"
+#~ msgstr "Del"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "Escape"
+#~ msgstr "Esc"
+
+#~ msgid ""
+#~ "_: QAccel\n"
+#~ "System Request"
+#~ msgstr "Системный запрос"
+
+#~ msgid "Ctrl"
+#~ msgstr "Ctrl"
+
+#~ msgid "Shift"
+#~ msgstr "Shift"
+
+#~ msgid "Alt"
+#~ msgstr "Alt"
+
+#~ msgid "Meta"
+#~ msgstr "Meta"
+
+#~ msgid "+"
+#~ msgstr "+"
+
+#~ msgid "F%1"
+#~ msgstr "F%1"
+
+#~ msgid "Operation stopped by the user"
+#~ msgstr "Действие прекращено пользователем"
+
+#~ msgid "True"
+#~ msgstr "Истинно"
+
+#~ msgid "False"
+#~ msgstr "Ложно"
+
+#~ msgid "Insert"
+#~ msgstr "Вставить"
+
+#~ msgid "Update"
+#~ msgstr "Обновить"
+
+#~ msgid "Delete"
+#~ msgstr "Удалить"
+
+#~ msgid ""
+#~ "_: QFile\n"
+#~ "Unknown error"
+#~ msgstr "Неизвестная ошибка"
+
+#~ msgid ""
+#~ "_: QFile\n"
+#~ "Could not read from the file"
+#~ msgstr "Не удаётся прочитать файл"
+
+#~ msgid ""
+#~ "_: QFile\n"
+#~ "Could not write to the file"
+#~ msgstr "Не удаётся записать файл"
+
+#~ msgid "&Undo"
+#~ msgstr "О&тменить действие"
+
+#~ msgid "&Redo"
+#~ msgstr "&Повторить отменённое действие"
+
+#~ msgid "Cu&t"
+#~ msgstr "Вы&резать"
+
+#~ msgid "&Copy"
+#~ msgstr "&Копировать"
+
+#~ msgid "&Paste"
+#~ msgstr "&Вставить"
+
+#~ msgid "Line up"
+#~ msgstr "На строку вверх"
+
+#~ msgid "Customize..."
+#~ msgstr "Дополнительно..."
+
+#~ msgid "System Menu"
+#~ msgstr "Системное меню"
+
+#~ msgid "Shade"
+#~ msgstr "Свернуть в заголовок"
+
+#~ msgid "Unshade"
+#~ msgstr "Развернуть из заголовка"
+
+#~ msgid "Normalize"
+#~ msgstr "Нормализовать"
+
+#~ msgid "Minimize"
+#~ msgstr "Свернуть"
+
+#~ msgid "Maximize"
+#~ msgstr "Развернуть"
+
+#~ msgid "More..."
+#~ msgstr "Дополнительно..."
+
+#~ msgid "What's this?"
+#~ msgstr "Что это?"
+
+#~ msgid "Yes to All"
+#~ msgstr "Да для всех"
+
+#~ msgid "OK to All"
+#~ msgstr "OK для всех"
+
+#~ msgid "No to All"
+#~ msgstr "Нет для всех"
+
+#~ msgid "Cancel All"
+#~ msgstr "Отменить все"
+
+#~ msgid " to All"
+#~ msgstr " всем"
+
+#~ msgid "Yes"
+#~ msgstr "Да"
+
+#~ msgid "Ignore"
+#~ msgstr "Игнорировать"
+
+#~ msgid "Retry"
+#~ msgstr "Повторить"
+
+#~ msgid "Abort"
+#~ msgstr "Прервать"
+
+#~ msgid "&Restore"
+#~ msgstr "Восст&ановить"
+
+#~ msgid "&Move"
+#~ msgstr "&Переместить"
+
+#~ msgid "Mi&nimize"
+#~ msgstr "Свер&нуть"
+
+#~ msgid "Ma&ximize"
+#~ msgstr "Ра&звернуть"
+
+#~ msgid "&Close"
+#~ msgstr "&Закрыть"
+
+#~ msgid "Stay on &Top"
+#~ msgstr "Всегда &наверху"
+
+#~ msgid "Sh&ade"
+#~ msgstr "&В заголовок"
+
+#~ msgid "%1 - [%2]"
+#~ msgstr "%1 - [%2]"
+
+#~ msgid "Restore Down"
+#~ msgstr "Вернуть обратно"
+
+#~ msgid "&Unshade"
+#~ msgstr "&Развернуть из заголовка"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "no error occurred"
+#~ msgstr "ошибок не обнаружено"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "error triggered by consumer"
+#~ msgstr "ошибка, вызванная пользователем"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "unexpected end of file"
+#~ msgstr "неожиданный конец файла"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "more than one document type definition"
+#~ msgstr "более одного файла определения типа документа"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "error occurred while parsing element"
+#~ msgstr "ошибка при анализе элемента"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "tag mismatch"
+#~ msgstr "несоответствие тегов"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "error occurred while parsing content"
+#~ msgstr "ошибка при лексическом анализе содержания"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "unexpected character"
+#~ msgstr "недопустимый символ"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "invalid name for processing instruction"
+#~ msgstr "недопустимое имя инструкции обработки"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "version expected while reading the XML declaration"
+#~ msgstr "в прологе XML требуется указывать версию"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "wrong value for standalone declaration"
+#~ msgstr "недопустимое значение для декларации standalone"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "encoding declaration or standalone declaration expected while reading the "
+#~ "XML declaration"
+#~ msgstr ""
+#~ "в прологе XML требуется указывать декларацию кодировки или standalone"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "standalone declaration expected while reading the XML declaration"
+#~ msgstr "в прологе XML требуется указывать декларацию standalone"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "error occurred while parsing document type definition"
+#~ msgstr "ошибка при лексическом анализе файла определения типа документа"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "letter is expected"
+#~ msgstr "требуется буквенное значение"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "error occurred while parsing comment"
+#~ msgstr "ошибка при лексическом анализе комментария"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "error occurred while parsing reference"
+#~ msgstr "ошибка при лексическом анализе ссылки"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "internal general entity reference not allowed in DTD"
+#~ msgstr ""
+#~ "В DTD не разрешаются ссылки на внутренние обобщённые сущности (internal "
+#~ "general entity)"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "external parsed general entity reference not allowed in attribute value"
+#~ msgstr ""
+#~ "В значениях атрибутов не разрешаются ссылки на внешние анализируемые "
+#~ "обобщённые сущности (external parsed general entity)"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "external parsed general entity reference not allowed in DTD"
+#~ msgstr ""
+#~ "В DTD не разрешаются ссылки на внешние анализируемые обобщённые сущности "
+#~ "(external parsed general entity)"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "unparsed entity reference in wrong context"
+#~ msgstr "ссылка на не-анализируемую сущность в ошибочном контексте"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "recursive entities"
+#~ msgstr "рекурсивные сущности"
+
+#~ msgid ""
+#~ "_: QXml\n"
+#~ "error in the text declaration of an external entity"
+#~ msgstr "ошибка в текстовой декларации внешней сущности"
--- /dev/null
+# Translation of kio_ldap to Northern Sami
+#
+# Børre Gaup <boerre@skolelinux.no>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2005-10-28 15:47+0200\n"
+"Last-Translator: Børre Gaup <boerre@skolelinux.no>\n"
+"Language-Team: Northern Sami <l10n-no@lister.huftis.org>\n"
+"Language: se\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Lasi dieđud: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP-bálvá muitala dán meattáhusa birra: %1 %2\n"
+"LDAP-čujuhus lei: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP-geavaheaddjenamma"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "báiki:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Gustohis "
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr ""
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr ""
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr ""
--- /dev/null
+# Translation of libkldap5 to Northern Sami
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2007-09-11 22:44+0200\n"
+"Last-Translator: Northern Sami translation team <i18n-sme@lister.ping.uio."
+"no>\n"
+"Language-Team: Northern Sami <l10n-no@lister.huftis.org>\n"
+"Language: se\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr ""
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] ""
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
--- /dev/null
+# translation of kio_ldap.po to Slovak
+# Stanislav Visnovsky <visnovsky@kde.org>, 2004.
+# Richard Fric <Richard.Fric@kdemail.net>, 2006, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2012-04-18 10:58+0100\n"
+"Last-Translator: Roman Paholík <wizzardsk@gmail.com>\n"
+"Language-Team: Slovak <kde-sk@linux.sk>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.1\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Dodatočné informácie: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Server LDAP vrátil túto chybu: %1 %2\n"
+"LDAP URL bolo: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Prihlásenie LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "server:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Neplatná informácie prihlásenia."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP pripojenie zrušené."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Parser Ldif zlyhal."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Neplatný Ldif súbor v riadku %1."
--- /dev/null
+# translation of libkldap5.po to Slovak
+# Roman Paholík <wizzardsk@gmail.com>, 2014, 2017, 2022.
+# Matej Mrenica <matejm98mthw@gmail.com>, 2019.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap5\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2022-04-18 17:37+0200\n"
+"Last-Translator: Roman Paholik <wizzardsk@gmail.com>\n"
+"Language-Team: Slovak <kde-sk@linux.sk>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 21.12.3\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "LDAP nie je podporované ..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Vyskytla sa chyba počas inicializácie spojenia."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Nie je možné nastaviť verziu protokolu na %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Nie je možné nastaviť časový limit na %1 sekundu."
+msgstr[1] "Nie je možné nastaviť časový limit na %1 sekundy."
+msgstr[2] "Nie je možné nastaviť časový limit na %1 sekúnd."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Súbor certifikátu CA sa nepodarilo nastaviť."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Neplatný TLS vyžaduje režim certifikátov."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+"Nepodarilo sa nastaviť protokol TLS, ktorý vyžaduje režim certifikátov."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Nepodarilo sa inicializovať nový kontext TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Nie je dostupná podpora TLS v klientských knižniciach LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Nie je možné nastaviť veľkostný limit."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Nie je možné nastaviť časový limit."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Nie je možné inicializovať SASL klienta."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Podpora LDAP nie je zakompilovaná. Prosím prekompilujte libkldap s OpenLDAP "
+"(alebo kompatibilnými) klientskými knižnicami, alebo to ohláste baličom "
+"vašej distribúcie."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Nemôžem pristupovať na server. Prosím, prekonfigurujte ho."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Pridať hostiteľa"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr "LDAP heslo je uložené ako čistý text, chcete ho uložiť v KWallete?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Uložiť čistý text hesla v KWallete"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Upraviť hostiteľa"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Chcete odstrániť nastavenie pre hostiteľa \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Odstrániť hostiteľa"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Skontrolovať všetky servery, ktoré sa majú použiť:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "Pridať hostiteľa..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "Upraviť hostiteľa..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Odstrániť hostiteľa"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Užívateľ:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Realm:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Heslo:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Hostiteľ:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP verzia:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Predvolené"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Veľkostný limit:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Predvolené"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Časový limit:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Nestránkované"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Veľkosť stránky:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Query Server"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Nie"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Zabezpečenie:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonymný"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Jednoduchý"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Overenie:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL mechanismus:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Skontrolovať server"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP dopyt"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Neznáma chyba pripojenia %1"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP verzia:"
+
+#~ msgid "Attribute"
+#~ msgstr "Atribút"
+
+#~ msgid "Value"
+#~ msgstr "Hodnota"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Význačný názov"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Podpora SASL nie je dostupná. Prosím prekompilujte libkldap s Cyrus-SASL "
+#~ "(alebo kompatibilnými) klientskými knižnicami, alebo to ohláste baličom "
+#~ "vašej distribúcie."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Chyba operácie LDAP"
--- /dev/null
+# translation of kio_ldap.po to Slovenian
+# Translation of kio_ldap.po to Slovenian
+# Gregor Rakar <gregor.rakar@kiss.si>, 2004, 2005.
+# Andrej Vernekar <andrej.vernekar@moj.net>, 2007.
+# Andrej Mernik <andrejm@ubuntu.si>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2014-08-29 12:46+0200\n"
+"Last-Translator: Andrej Mernik <andrejm@ubuntu.si>\n"
+"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.5\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Dodatni podatki: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Strežnik LDAP je vrnil napako: %1 %2\n"
+"URL za LDAP je bil: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Prijava LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "mesto:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Neveljavni pooblastitveni podatki."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Povezava LDAP je preklicana."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Razčlenjevalnik Ldif ni uspel."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Neveljavna datoteka Ldif v vrstici %1."
--- /dev/null
+# translation of libkldap.po to Slovenian
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Andrej Vernekar <andrej.vernekar@moj.net>, 2007, 2008.
+# Jure Repinc <jlp@holodeck1.com>, 2012.
+# Andrej Mernik <andrejm@ubuntu.si>, 2014, 2018.
+# Matjaž Jeran <matjaz.jeran@amis.net>, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-08-02 11:23+0200\n"
+"Last-Translator: Matjaž Jeran <matjaz.jeran@amis.net>\n"
+"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Translator: Andrej Mernik <andrejm@ubuntu.si>\n"
+"X-Generator: Poedit 3.0\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Ni podpore za LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Med začetnim nastavljanjem povezave je prišlo do napake."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Različice protokola ni mogoče nastaviti na %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Časovne omejitve ni mogoče nastaviti na %1 sekundo."
+msgstr[1] "Časovne omejitve ni mogoče nastaviti na %1 sekundi."
+msgstr[2] "Časovne omejitve ni mogoče nastaviti na %1 sekunde."
+msgstr[3] "Časovne omejitve ni mogoče nastaviti na %1 sekund."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Ni bilo mogoče nastaviti datoteko potrdil CA."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Neveljaven TLS zahteva način delovanja s potrdilom."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Ni bilo mogoče nastaviti TSL, ki zahteva delovanje s potrdilom."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Ni bilo mogoče postaviti začetnega konteksta TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "V knjižnicah odjemalca LDAP ni podpore za TLS."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Ni mogoče nastaviti omejitve velikosti."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Ni mogoče nastaviti časovne omejitve."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Začetna nastavitev odjemalca SASL ni uspela."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Podpora za LDAP ni na voljo. Pritožite se izdelovalcem paketov za vašo "
+"distribucijo ali znova prevedite izvorno kodo libkldap s knjižnicami "
+"odjemalca OpenLDAP (ali združljivimi)."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Do strežnika ni mogoče dostopati. Preverite nastavitve."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Dodaj gostitelja"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"Geslo LDAP je shranjeno kot odprto besedilo, ali ga želite shraniti v "
+"kwallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Shrani odprto besedilo gesla v listnico"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Uredi gostitelja"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Ali želite odstraniti nastavitev za gostitelja \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Odstrani gostitelja"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Preverite vse strežnike, ki bi jih bilo treba uporabiti:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "Dodaj gostitelja..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "uredi gostitelja..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Odstrani gostitelja"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Uporabnik:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Razločevalno ime Bind:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Področje:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Geslo:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Gostitelj:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Vrata:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Različica LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Privzeta"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Omejitev velikosti:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Privzeta"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Časovna omejitev:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Brez strani"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Velikost strani:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Poizvedovalni strežnik"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "Razločevalno ime:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Brez"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Varnost:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonimno"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Preprosto"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Preverjanje pristnosti:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mehanizem SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Preveri strežnik"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Poizvedba LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Neznana napaka med povezovanjem s %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "Strežniki LDAP"
+
+#~ msgid "Attribute"
+#~ msgstr "Atribut"
+
+#~ msgid "Value"
+#~ msgstr "Vrednost"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Razločevalno ime"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Podpora za SASL ni na voljo. Pritožite se izdelovalcem paketov za vašo "
+#~ "distribucijo ali znova prevedite izvorno kodo libkldap s knjižnicami "
+#~ "odjemalca Cyrus-SASL (ali združljivimi)."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Napaka opravil LDAP"
--- /dev/null
+# Albanian translation for kdepimlibs
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the kdepimlibs package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kdepimlibs\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2010-05-30 13:28+0000\n"
+"Last-Translator: Launchpad Translations Administrators <rosetta@launchpad."
+"net>\n"
+"Language-Team: Albanian <sq@li.org>\n"
+"Language: sq\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Launchpad-Export-Date: 2011-04-21 23:53+0000\n"
+"X-Generator: Launchpad (build 12883)\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Nuk ka mbështetje LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Hosti:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Përdoruesi:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Lidhja:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Fjalëkalimi:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Hosti:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Porti:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Versioni LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "I Parazgjedhur"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Kufiri i Përmasës:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "I Parazgjedhur"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Kufiri Kohor:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Pa faqosje"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Madhësia e faqes:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Query Server"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filtri:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Jo"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "Siguria"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonim"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "I thjeshtë"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "Identifikimi"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Mekanizmi SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP Query"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "Versioni LDAP:"
+
+#~ msgid "Attribute"
+#~ msgstr "Veçoritë"
+
+#~ msgid "Value"
+#~ msgstr "Vlera"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Emër i Dalluar"
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Gabim në veprimet e LDAP"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Serbian "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ЛДАП</title>
+<articleinfo>
+<authorgroup>
+<author
+><personname
+><firstname
+>Лори</firstname
+> <surname
+>Вотс</surname
+></personname
+> &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+><firstname
+>Драган</firstname
+><surname
+>Пантелић</surname
+><affiliation
+><address
+><email
+>falcon-10@gmx.de</email
+></address
+></affiliation
+><contrib
+>превод</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+>ЛДАП је лагани протокол за приступ именицима. Обезбеђује приступ Икс500 именицима и самосталним ЛДАП серверима.</para>
+
+<para
+>У/И захват ЛДАП‑а можете користити овако:</para>
+
+<para
+><userinput
+>ldap://domacin:port/ou=People,o=where,c=de??sub</userinput
+> за упит подстабла</para>
+
+<para
+>или <userinput
+>ldap://domacin:port/cn=MM,ou=People,o=where,c=de??base</userinput
+> за потпуну грану.</para>
+
+</article>
--- /dev/null
+# Translation of kio_ldap.po to Serbian.
+# Chusslove Illich <caslav.ilic@gmx.net>, 2004, 2005, 2007.
+# Dalibor Djuric <dalibor.djuric@mozilla-srbija.org>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2019-08-06 03:04+0200\n"
+"PO-Revision-Date: 2009-12-14 00:24+0100\n"
+"Last-Translator: Dalibor Djuric <dalibor.djuric@mozilla-srbija.org>\n"
+"Language-Team: Serbian <kde-i18n-sr@kde.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+"X-Environment: kde\n"
+
+#: kio_ldap.cpp:95
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Додатни подаци: "
+
+#: kio_ldap.cpp:177
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"ЛДАП сервер јавља грешку: %1 %2\n"
+"УРЛ ЛДАП‑а: %3"
+
+#: kio_ldap.cpp:324
+#, kde-format
+msgid "LDAP Login"
+msgstr "ЛДАП пријава"
+
+#: kio_ldap.cpp:327
+#, kde-format
+msgid "site:"
+msgstr "сајт:"
+
+# >! authorization -> authentication
+#: kio_ldap.cpp:359
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Неисправни подаци за аутентификацију."
+
+#: kio_ldap.cpp:366
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "ЛДАП веза отказана."
+
+#: kio_ldap.cpp:626 kio_ldap.cpp:698
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Неуспело рашчлањивање ЛДИФ‑а."
+
+#: kio_ldap.cpp:712
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Неисправан ЛДИФ у реду %1."
--- /dev/null
+# Translation of libkldap5.po into Serbian.
+# Chusslove Illich <caslav.ilic@gmx.net>, 2007, 2009, 2010, 2014, 2017.
+# Dalibor Djuric <dalibor.djuric@mozilla-srbija.org>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap5\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2020-06-13 02:15+0200\n"
+"PO-Revision-Date: 2017-10-06 17:14+0200\n"
+"Last-Translator: Chusslove Illich <caslav.ilic@gmx.net>\n"
+"Language-Team: Serbian <kde-i18n-sr@kde.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+"X-Environment: kde\n"
+
+#: core/ldapconnection.cpp:140
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Нема подршке за ЛДАП..."
+
+#: core/ldapconnection.cpp:255
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Грешка у фази припремања везе."
+
+#: core/ldapconnection.cpp:262
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Не могу да поставим верзију протокола на %1."
+
+#: core/ldapconnection.cpp:273
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Не могу да поставим прековреме на %1 секунду."
+msgstr[1] "Не могу да поставим прековреме на %1 секунде."
+msgstr[2] "Не могу да поставим прековреме на %1 секунди."
+msgstr[3] "Не могу да поставим прековреме на %1 секунду."
+
+#: core/ldapconnection.cpp:287
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:312
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:317
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:326
+#, fuzzy, kde-format
+#| msgid "Cannot initialize the SASL client."
+msgid "Could not initialize new TLS context."
+msgstr "Не могу да припремим САСЛ клијент."
+
+#: core/ldapconnection.cpp:343
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Нема подршке за ТЛС у клијентским библиотекама ЛДАП клијента."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Не могу да поставим ограничење величине."
+
+#: core/ldapconnection.cpp:363
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Не могу да поставим ограничење времена."
+
+#: core/ldapconnection.cpp:372
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Не могу да припремим САСЛ клијент."
+
+#: core/ldapconnection.cpp:449
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Подршка за ЛДАП није уграђена. Изградите поново „libkldap“ са клијентским "
+"библиотекама ОпенЛДАП‑а (или сагласним), или се пожалите пакетарима своје "
+"дистрибуције."
+
+#: core/ldapsearch.cpp:240
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Не могу да приступим серверу. Подесите га поново."
+
+#: widgets/addhostdialog.cpp:77
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Домаћин:"
+
+#: widgets/ldapclientsearchconfig.cpp:121
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfig.cpp:122
+#, kde-format
+msgid "Store clear text password in KWallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:144
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:160
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:160
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:296
+#, fuzzy, kde-format
+#| msgid "LDAP version:"
+msgid "LDAP Servers"
+msgstr "Верзија ЛДАП‑а:"
+
+#: widgets/ldapconfigurewidget.cpp:303
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:337
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:340
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:344
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "User:"
+msgstr "Корисник:"
+
+#: widgets/ldapconfigwidget.cpp:122
+#, kde-format
+msgid "Bind DN:"
+msgstr "ДН свезе:"
+
+#: widgets/ldapconfigwidget.cpp:132
+#, kde-format
+msgid "Realm:"
+msgstr "Царство:"
+
+#: widgets/ldapconfigwidget.cpp:142
+#, kde-format
+msgid "Password:"
+msgstr "Лозинка:"
+
+#: widgets/ldapconfigwidget.cpp:152
+#, kde-format
+msgid "Host:"
+msgstr "Домаћин:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "Port:"
+msgstr "Порт:"
+
+#: widgets/ldapconfigwidget.cpp:176
+#, kde-format
+msgid "LDAP version:"
+msgstr "Верзија ЛДАП‑а:"
+
+#: widgets/ldapconfigwidget.cpp:191
+#, kde-format
+msgid "Size limit:"
+msgstr "Ограничење величине:"
+
+# >> @item:inlistbox ...
+#: widgets/ldapconfigwidget.cpp:197
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "подразумевано"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgid "Time limit:"
+msgstr "Ограничење времена:"
+
+#: widgets/ldapconfigwidget.cpp:210
+#, kde-format
+msgid " sec"
+msgstr " сек."
+
+# >> @item:inlistbox ...
+#: widgets/ldapconfigwidget.cpp:211
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "подразумевано"
+
+#: widgets/ldapconfigwidget.cpp:220
+#, kde-format
+msgid "Page size:"
+msgstr "Величина странице:"
+
+# >> @item:inlistbox Page size
+#: widgets/ldapconfigwidget.cpp:226
+#, kde-format
+msgid "No paging"
+msgstr "без страничења"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "ДН:"
+
+# >> @action:button Send query to the server
+#: widgets/ldapconfigwidget.cpp:240 widgets/ldapconfigwidget.cpp:326
+#, kde-format
+msgid "Query Server"
+msgstr "Упитај сервер"
+
+#: widgets/ldapconfigwidget.cpp:254
+#, kde-format
+msgid "Filter:"
+msgstr "Филтер:"
+
+# >> @title:group
+#: widgets/ldapconfigwidget.cpp:264
+#, kde-format
+msgid "Security"
+msgstr "Безбедност"
+
+#: widgets/ldapconfigwidget.cpp:267
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "никаква"
+
+#: widgets/ldapconfigwidget.cpp:270
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "ТЛС"
+
+#: widgets/ldapconfigwidget.cpp:273
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "ССЛ"
+
+# >> @title:group
+#: widgets/ldapconfigwidget.cpp:294
+#, kde-format
+msgid "Authentication"
+msgstr "Аутентификација"
+
+#: widgets/ldapconfigwidget.cpp:301
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "анонимна"
+
+#: widgets/ldapconfigwidget.cpp:305
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "једноставна"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "САСЛ"
+
+#: widgets/ldapconfigwidget.cpp:315
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Механизам САСЛ‑а:"
+
+# >> @title:window
+#: widgets/ldapconfigwidget.cpp:377
+#, kde-format
+msgid "Check server"
+msgstr "Провера сервера"
+
+# >> @title:window
+#: widgets/ldapconfigwidget.cpp:383
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "ЛДАП упит"
+
+#: widgets/ldapconfigwidget.cpp:397
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Непозната грешка при повезивању са %1"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Swedish "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+> <firstname
+>Stefan</firstname
+> <surname
+>Asserhäll</surname
+> <affiliation
+><address
+><email
+>stefan.asserhall@bredband.net</email
+></address
+></affiliation
+> <contrib
+>Översättare</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> är det lättviktiga katalogåtkomstprotokollet. Det ger möjlighet att komma åt en X.500-katalog, eller en ensam <acronym
+>LDAP</acronym
+>-server.</para>
+
+<para
+>Du kan använda I/O-slaven ldap som följer:</para>
+
+<para
+><userinput
+>ldap://värddator:port/ou=People,o=where,c=de??sub</userinput
+> får en delträdsförfrågan</para>
+
+<para
+>eller <userinput
+>ldap://värddator:port/cn=MM,ou=People,o=where,c=de??bas</userinput
+> får en fullständig gren.</para>
+
+</article>
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Stefan Asserhäll <stefan.asserhall@bredband.net>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2016-04-04 20:11+0100\n"
+"Last-Translator: Stefan Asserhäll <stefan.asserhall@bredband.net>\n"
+"Language-Team: Swedish <kde-i18n-doc@kde.org>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 2.0\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Ytterligare information: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP-servern returnerade följande fel: %1 %2\n"
+"LDAP-webbadressen var: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP-inloggning"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "plats:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Felaktigt information för behörighetskontroll."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP-anslutning avbruten."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "LDIF-tolken misslyckades."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Felaktig LDIF-fil på rad %1."
--- /dev/null
+# translation of libkldap.po to Swedish
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Stefan Asserhäll <stefan.asserhall@bredband.net>, 2007, 2008, 2009, 2010, 2014, 2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-28 20:15+0200\n"
+"Last-Translator: Stefan Asserhäll <stefan.asserhall@bredband.net>\n"
+"Language-Team: Swedish <kde-i18n-doc@kde.org>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 20.08.1\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Inget stöd för LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Ett fel uppstod under initieringsfasen vid anslutning."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Kan inte ställa in protokollversion till %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Kan inte ställa in tidsgräns till %1 sekund."
+msgstr[1] "Kan inte ställa in tidsgräns till %1 sekunder."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Kunde inte ställa in certifikatutfärdarens certifikatfil."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Ogiltigt certifikatläge för att kräva TLS."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Kunde inte ställa in certifikatläge för att kräva TLS."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Kan inte initiera nytt TLS-sammanhang."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "TLS-stöd är inte tillgängligt i LDAP-klientbiblioteken."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Kan inte ställa in storleksgräns."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Kan inte ställa in tidsgräns."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Kan inte initiera SASL-klienten."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Stöd för LDAP är ingår inte. Kompilera om libkldap med klientbiblioteket "
+"OpenLDAP (eller motsvarande), eller klaga hos din distributions "
+"paketansvariga."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Kan inte komma åt servern. Ändra dess inställning."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Lägg till värddator"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr "LDAP-lösenordet lagras som vanlig text. Vill du lagra det i plånboken?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Lagra klartextlösenord i plånboken"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Redigera värddator"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Vill du ta bort inställningen för värddatorn \"%1\"?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Ta bort värddator"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Markera alla servrar som ska användas:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Lägg till värddator..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Redigera värddator..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Ta bo&rt värddator"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Användare:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Särskiljande bindningsnamn:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Rike:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Lösenord:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Värddator:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Port:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP-version:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Förval"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Storleksgräns:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " sek"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Förval"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Tidsgräns:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Ingen sidhantering"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Sidstorlek:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Fråga server"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "Särskiljande namn:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Filter:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Nej"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Säkerhet:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonym"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Enkel"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Behörighetskontroll:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL-mekanism:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Kontrollera server"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP-förfrågan"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Okänt fel vid anslutning till %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP-servrar"
+
+#~ msgid "Attribute"
+#~ msgstr "Egenskap"
+
+#~ msgid "Value"
+#~ msgstr "Värde"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Särskiljande namn"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Stöd för SASL är ingår inte. Kompilera om libkldap med klientbiblioteket "
+#~ "Cyrus-SASL (eller motsvarande), eller klaga hos din distributions "
+#~ "paketansvariga."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Fel vid användning av LDAP"
+
+#~ msgid "kcmldap"
+#~ msgstr "IM-LDAP"
+
+#~ msgid "LDAP Server Settings"
+#~ msgstr "LDAP-serverinställningar"
+
+#~ msgid "(c) 2009 - 2010 Tobias Koenig"
+#~ msgstr "© 2009 - 2010 Tobias Koenig"
+
+#~ msgid "Tobias Koenig"
+#~ msgstr "Tobias Koenig"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Title"
+#~ msgstr "Titel"
+
+#~ msgid "Full Name"
+#~ msgstr "Fullständigt namn"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Email"
+#~ msgstr "E-post"
+
+#~ msgid "Home Number"
+#~ msgstr "Hemnummer"
+
+#~ msgid "Work Number"
+#~ msgstr "Arbetsnummer"
+
+#~ msgid "Mobile Number"
+#~ msgstr "Mobilnummer"
+
+#~ msgid "Fax Number"
+#~ msgstr "Telefaxnummer"
+
+#~ msgid "Pager"
+#~ msgstr "Personsökare"
+
+#~ msgid "Street"
+#~ msgstr "Gatuadress"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "State"
+#~ msgstr "Stat"
+
+#~ msgid "Country"
+#~ msgstr "Land"
+
+#~ msgid "City"
+#~ msgstr "Stad"
+
+#~ msgid "Organization"
+#~ msgstr "Organisation"
+
+#~ msgid "Company"
+#~ msgstr "Företag"
+
+#~ msgid "Department"
+#~ msgstr "Avdelning"
+
+#~ msgid "Zip Code"
+#~ msgstr "Postnummer"
+
+#~ msgid "Postal Address"
+#~ msgstr "Postadress"
+
+#~ msgid "Description"
+#~ msgstr "Beskrivning"
+
+#~ msgid "User ID"
+#~ msgstr "Användar-id"
+
+#~ msgctxt "Search attribute: Name of contact"
+#~ msgid "Name"
+#~ msgstr "Namn"
+
+#~ msgctxt "Search attribute: Email of the contact"
+#~ msgid "Email"
+#~ msgstr "E-post"
+
+#~ msgctxt "@title:column Column containing email addresses"
+#~ msgid "Email"
+#~ msgstr "E-post"
+
+#~ msgctxt ""
+#~ "@title:column Column containing the residential state of the address"
+#~ msgid "State"
+#~ msgstr "Stat"
+
+#~ msgctxt "@title:column Column containing title of the person"
+#~ msgid "Title"
+#~ msgstr "Titel"
+
+#~ msgid "Import Contacts from LDAP"
+#~ msgstr "Importerar kontakter från LDAP"
+
+#~ msgid "Search for Addresses in Directory"
+#~ msgstr "Sök efter adresser i katalog"
+
+#~ msgid "Search for:"
+#~ msgstr "Sök efter:"
+
+#~ msgctxt "In LDAP attribute"
+#~ msgid "in"
+#~ msgstr "i"
+
+#~ msgctxt "@item:inlistbox Name of the contact"
+#~ msgid "Name"
+#~ msgstr "Namn"
+
+#~ msgctxt "@item:inlistbox email address of the contact"
+#~ msgid "Email"
+#~ msgstr "E-post"
+
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Home Number"
+#~ msgstr "Hemnummer"
+
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Work Number"
+#~ msgstr "Jobbnummer"
+
+#~ msgid "Stop"
+#~ msgstr "Stoppa"
+
+#~ msgctxt "@action:button Start searching"
+#~ msgid "&Search"
+#~ msgstr "&Sök"
+
+#~ msgid "Recursive search"
+#~ msgstr "Rekursiv sökning"
+
+#~ msgid "Contains"
+#~ msgstr "Innehåller"
+
+#~ msgid "Starts With"
+#~ msgstr "Börjar med"
+
+#~ msgid "Select All"
+#~ msgstr "Markera alla"
+
+#~ msgid "Unselect All"
+#~ msgstr "Avmarkera alla"
+
+#~ msgid "Add Selected"
+#~ msgstr "Lägg till markerad"
+
+#~ msgid "Configure LDAP Servers..."
+#~ msgstr "Anpassa LDAP-servrar..."
+
+#~ msgid "You must select an LDAP server before searching."
+#~ msgstr "Du måste välja en LDAP-server innan sökning."
+
+#~ msgctxt "arguments are host name, datetime"
+#~ msgid "Imported from LDAP directory %1 on %2"
+#~ msgstr "Importerat från LDAP-katalogen %1 %2"
+
+#~ msgid "Configure the Address Book LDAP Settings"
+#~ msgstr "Anpassa adressbokens LDAP-inställningar"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Stefan Asserhäll"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "stefan.asserhall@bredband.net"
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2004-08-09 04:17-0800\n"
+"Last-Translator: Tamil PC <tamilpc@ambalam.com>\n"
+"Language-Team: KDE <kde-i18n-doc@kde.org>\n"
+"Language: ta\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, fuzzy, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr "LDAP சேவகன் மேற்காணும் பிழையை வழங்கியது: %1"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP புகுபதிகை"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "தளம்:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "செல்லுபடியாகாத உறுதிபடுத்துதல் தகவல்."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr ""
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, fuzzy, kde-format
+msgid "The Ldif parser failed."
+msgstr "LDIF பகுப்பான் தோல்வியுற்றது."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, fuzzy, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Invalid %1 கோட்டில் LDIF கோப்பு செல்லுபடியாகாது."
+
+#~ msgid "Cannot set LDAP protocol version %1"
+#~ msgstr "LDAP நெறிமுறை பதிப்பு %1 யை அமைக்க முடியாது"
+
+#~ msgid "Cannot set size limit."
+#~ msgstr "அளவு விளிம்பை அமைக்க முடியாது."
+
+#~ msgid "Cannot set time limit."
+#~ msgstr "நேர விளிம்பை அமைக்க முடியாது."
+
+#~ msgid "SASL authentication not compiled into the ldap ioslave."
+#~ msgstr "SASL உறுதிபடுத்துதலை ldap ioslave தொகுப்பிக்க முடியாது."
--- /dev/null
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+# Cemil MUTLU <mawilos@gmail.com>, 2005.
+# Görkem Çetin <gorkem@gorkemcetin.com>, 2004.
+# Görkem Çetin <gorkem@kde.org>, 2004.
+# obsoleteman <tulliana@gmail.com>, 2008.
+# Kaan Ozdincer <kaanozdincer@gmail.com>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: kdepimlibs-kde4\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2014-11-12 01:06+0200\n"
+"Last-Translator: Kaan Ozdincer <kaanozdincer@gmail.com>\n"
+"Language-Team: Turkish <kde-l10n-tr@kde.org>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 1.4\n"
+"(http: //www.transifex.com/projects/p/kdepimlibs-k-tr/language/tr/)\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Ek bilgiler: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP sunucusu hatası döndürdü :%1 %2\n"
+"LDAP Adresi şöyleydi: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP Giriş"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "site:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Geçersiz kimlik doğrulama bilgisi."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP bağlantısı iptal edildi."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Ldif ayrıştırıcı başarısız oldu."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "%1 satırında geçersiz Ldif dosyası."
--- /dev/null
+# translation of libkldap.po to Turkish
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Serdar Soytetir <tulliana@gmail.com>, 2008, 2009.
+# Volkan Gezer <volkangezer@gmail.com>, 2013, 2014.
+# Kaan Ozdincer <kaanozdincer@gmail.com>, 2014.
+# Emir SARI <emir_sari@icloud.com>, 2022.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2022-04-12 11:17+0300\n"
+"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
+"Language-Team: Turkish <kde-l10n-tr@kde.org>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 21.12.3\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "LDAP Desteği Yok..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Bağlantı başlatılma evresinde bir hata oluştu."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Protokol sürümü %1 olarak ayarlanamadı."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Zaman aşımı %1 saniye olarak ayarlanamadı."
+msgstr[1] "Zaman aşımı %1 saniye olarak ayarlanamadı."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "CA sertifika dosyası ayarlanamadı."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Geçersiz TLS sertifika gerektir kipi."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "TLS sertifika gerektir kipi ayarlanamardı."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Yeni TLS bağlamı başlatılamadı."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "LDAP istemci kitaplıklarında TLS desteği kullanılabilir durumda değil."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Boyut sınırı ayarlanamadı."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Süre sınırı ayarlanamadı."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "SASL istemcisi başlatılamadı."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"LDAP desteği derlenmemiş. Lütfen libkldap uygulamasını OpenLDAP (ya da "
+"uyumlu bir uygulama) istemci kitaplıkları ile yeniden derleyin ya da "
+"kullandığınız dağıtımın paketçilerine başvurun."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "Sunucuya erişilemedi. Lütfen yeniden yapılandırın."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Makine Ekle"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"LDAP parolası düz metin olarak depolanıyor, KWallet'ta depolamak ister "
+"misiniz?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Düz metin parolayı KWallet'ta depola"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Makineyi Düzenle"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "\"%1\" makinesi için ayarı kaldırmak istiyor musunuz?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Makineyi Kaldır"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Kullanılması gereken tüm sunucuları denetle:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "Makine &Ekle..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Makineyi Düzenle..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "Maki&neyi Kaldır"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Kullanıcı:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "Bind DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Gerçeklik:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Parola:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Makine:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Kapı:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP sürümü:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Öntanımlı"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Boyut sınırı:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr "sn"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Öntanımlı"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Zaman sınırı:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Sayfalama yok"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Sayfa boyutu:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Sorgu Sunucusu"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Süz:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Hayır"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Güvenlik:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Anonim"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Basit"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Kimlik Doğrulama:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL mekanizması:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Sunucuyu denetle"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP Sorgusu"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "%1'e bağlanırken bilinmeyen hata"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP sürümü:"
+
+#~ msgid "Attribute"
+#~ msgstr "Özellik"
+
+#~ msgid "Value"
+#~ msgstr "Değer"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Eşsiz İsim"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "SASL desteği kullanılabilir değil. Lütfen libkldap uygulamasını Cyrus-"
+#~ "SASL (ya da uyumlu bir uygulama) istemci kitaplıkları ile yeniden "
+#~ "derleyin ya da kullandığınız dağıtımın paketçilerine başvurun."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "LDAP İşlem hatası"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Server Settings"
+#~ msgstr "LDAP sürümü:"
+
+#, fuzzy
+#~| msgid "User:"
+#~ msgid "User ID"
+#~ msgstr "Kullanıcı:"
--- /dev/null
+# Uyghur translation for kio_ldap.
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# Sahran <sahran.ug@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2013-09-08 07:05+0900\n"
+"Last-Translator: Gheyret Kenji <gheyret@gmail.com>\n"
+"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
+"Language: ug\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Additional info: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr ""
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "تورتۇرا:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr ""
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr ""
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr ""
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr ""
--- /dev/null
+# Uyghur translation for libkldap.
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+# Sahran <sahran.ug@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2013-09-08 07:05+0900\n"
+"Last-Translator: Gheyret Kenji <gheyret@gmail.com>\n"
+"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
+"Language: ug\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr ""
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr ""
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr ""
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] ""
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr ""
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr ""
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr ""
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr ""
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr ""
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr ""
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "كومپيۇتېر:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "ئىشلەتكۈچى:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "دائىرە:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "ئىم:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "كومپيۇتېر:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "ئېغىز:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "كۆڭۈلدىكى"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " سېكۇنت"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "كۆڭۈلدىكى"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "ۋاقىت چەكلىمىسى:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "قەغەز چوڭلۇقى:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "سۈزگۈچ:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "ياق"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "بىخەتەرلىك"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "ئاتسىز"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "ئاددىي"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "كىملىك دەلىللەش"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr ""
+
+#~ msgid "Attribute"
+#~ msgstr "خاسلىق"
+
+#~ msgid "Value"
+#~ msgstr "قىممەت"
--- /dev/null
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
+"dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Ukrainian "INCLUDE"
+> <!-- change language only here -->
+]>
+
+<article lang="&language;" id="ldap">
+<title
+>ldap</title>
+<articleinfo>
+<authorgroup>
+<author
+>&Lauri.Watts; &Lauri.Watts.mail;</author>
+<othercredit role="translator"
+><firstname
+>Юрій</firstname
+><surname
+>Чорноіван</surname
+><affiliation
+><address
+><email
+>yurchor@ukr.net</email
+></address
+></affiliation
+><contrib
+>Переклад українською</contrib
+></othercredit
+>
+</authorgroup>
+</articleinfo>
+
+<para
+><acronym
+>ldap</acronym
+> — це абревіатура від lightweight directory access protocol (полегшений протокол доступу до каталогів). Цей протокол надає доступ до каталогу X.500 або до окремого сервера <acronym
+>LDAP</acronym
+>.</para>
+
+<para
+>Використовувати kioslave ldap можна так:</para>
+
+<para
+><userinput
+>ldap://host:port/ou=People,o=where,c=de??sub</userinput
+> для запиту у піддереві</para>
+
+<para
+>або <userinput
+>ldap://вузол:порт/cn=MM,ou=People,o=where,c=de??base</userinput
+> для всієї гілки.</para>
+
+</article>
--- /dev/null
+# Translation of kio_ldap.po to Ukrainian
+# Copyright (C) 2016 This_file_is_part_of_KDE
+# This file is distributed under the license LGPL version 2.1 or
+# version 3 or later versions approved by the membership of KDE e.V.
+#
+# Yuri Chornoivan <yurchor@ukr.net>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2016-04-04 17:41+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Додаткова інформація: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Сервер LDAP повернув наступну помилку: %1 %2\n"
+"Адреса LDAP: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Вхід LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "сайт:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Неправильна інформація для авторизації."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "З’єднання з LDAP скасовано."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Помилка аналізатора Ldif."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Неправильний файл Ldif в рядку %1."
--- /dev/null
+# Translation of libkldap5.po to Ukrainian
+# Copyright (C) 2018-2020 This_file_is_part_of_KDE
+# This file is distributed under the license LGPL version 2.1 or
+# version 3 or later versions approved by the membership of KDE e.V.
+#
+# Ivan Petrouchtchak <fr.ivan@ukrainian-orthodox.org>, 2007, 2008.
+# Yuri Chornoivan <yurchor@ukr.net>, 2008, 2009, 2010, 2014, 2017, 2018, 2019, 2020, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap5\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2021-07-28 10:12+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 20.12.0\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "Немає підтримки LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "Під час фази ініціалізації з’єднання сталася помилка."
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "Неможливо встановити версію протоколу до %1."
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "Не вдається встановити тайм-аут у %1 секунду."
+msgstr[1] "Не вдається встановити тайм-аут у %1 секунди."
+msgstr[2] "Не вдається встановити тайм-аут у %1 секунд."
+msgstr[3] "Не вдається встановити тайм-аут у %1 секунду."
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "Не вдалося встановити файл сертифіката CA."
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "Некоректна вимога TLS щодо режиму сертифікації."
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "Не вдалося встановити запитаний TLS режим сертифікації."
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "Не вдалося ініціалізувати новий контекст TLS."
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "Немає підтримки TLS в бібліотеках клієнта LDAP."
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "Не вдається встановити обмеження на розмір."
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "Не вдається встановити обмеження на час."
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "Неможливо започаткувати клієнт SASL."
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"Бібліотеку зібрано без підтримки LDAP. Будь ласка, зберіть libkldap ще раз з "
+"клієнтськими бібліотеками OpenLDAP (або сумісними з ними), або надішліть "
+"скаргу особі, що готувала пакунок вашого дистрибутива."
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr ""
+"Не вдалося отримати доступ до сервера. Будь ласка, виконайте повторне "
+"налаштування."
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "Додавання вузла"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+"Пароль до LDAP зберігається у незашифрованому форматі, хочете зберегти його "
+"у kwallet?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "Зберегти незашифрований пароль у торбинці"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "Зміна вузла"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "Хочете вилучити запис для вузла «%1»?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "Вилучення вузла"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "Позначте всі сервери, які слід використовувати:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "&Додати вузол…"
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "&Змінити вузол…"
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "&Вилучити вузол"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "Користувач:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "DN для прив'язки:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "Область:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "Пароль:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "Вузол:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "Порт:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "Версія LDAP:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "Типовий"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "Обмеження розміру:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " с"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "Типовий"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "Обмеження часу:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "Без розбиття на сторінки"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "Розмір сторінки:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "Опитати сервер"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "Фільтр:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "Немає"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "Захист:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "Анонімна"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "Проста"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "Розпізнавання:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "Механізм SASL:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "Перевірити сервер"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "Опитування LDAP"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "Невідома помилка під час спроби встановлення зв’язку із %1"
+
+#~ msgid "LDAP Servers"
+#~ msgstr "Сервери LDAP"
+
+#~ msgid "Attribute"
+#~ msgstr "Атрибут"
+
+#~ msgid "Value"
+#~ msgstr "Значення"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "Титул"
+
+#~ msgid ""
+#~ "SASL support is not available. Please recompile libkldap with the Cyrus-"
+#~ "SASL (or compatible) client libraries, or complain to your distribution "
+#~ "packagers."
+#~ msgstr ""
+#~ "Немає підтримки SASL... Будь ласка, ще раз зберіть libkldap з "
+#~ "клієнтськими бібліотеками Cyrus-SASL (або сумісними з ними), або "
+#~ "надішліть скаргу особі, що готувала пакунок вашого дистрибутива."
+
+#~ msgid "LDAP Operations error"
+#~ msgstr "Помилка дій LDAP"
+
+#~ msgid "kcmldap"
+#~ msgstr "kcmldap"
+
+#~ msgid "LDAP Server Settings"
+#~ msgstr "Параметри серверів LDAP"
+
+#~ msgid "(c) 2009 - 2010 Tobias Koenig"
+#~ msgstr "© Tobias Koenig, 2009–2010"
+
+#~ msgid "Tobias Koenig"
+#~ msgstr "Tobias Koenig"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Title"
+#~ msgstr "Звертання"
+
+#~ msgid "Full Name"
+#~ msgstr "Повне ім'я"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "Email"
+#~ msgstr "Електронна пошта"
+
+#~ msgid "Home Number"
+#~ msgstr "Домашній телефон"
+
+#~ msgid "Work Number"
+#~ msgstr "Робочий телефон"
+
+#~ msgid "Mobile Number"
+#~ msgstr "Мобільний телефон"
+
+#~ msgid "Fax Number"
+#~ msgstr "Номер факсу"
+
+#~ msgid "Pager"
+#~ msgstr "Пейджер"
+
+#~ msgid "Street"
+#~ msgstr "Вулиця"
+
+#~ msgctxt "@item LDAP search key"
+#~ msgid "State"
+#~ msgstr "Область"
+
+#~ msgid "Country"
+#~ msgstr "Країна"
+
+#~ msgid "City"
+#~ msgstr "Місто"
+
+#~ msgid "Organization"
+#~ msgstr "Установа"
+
+#~ msgid "Company"
+#~ msgstr "Компанія"
+
+#~ msgid "Department"
+#~ msgstr "Відділ"
+
+#~ msgid "Zip Code"
+#~ msgstr "Поштовий код"
+
+#~ msgid "Postal Address"
+#~ msgstr "Поштова адреса"
+
+#~ msgid "Description"
+#~ msgstr "Опис"
+
+#~ msgid "User ID"
+#~ msgstr "ІД користувача:"
+
+#~ msgctxt "Search attribute: Name of contact"
+#~ msgid "Name"
+#~ msgstr "Ім'я"
+
+#~ msgctxt "Search attribute: Email of the contact"
+#~ msgid "Email"
+#~ msgstr "Електронна пошта"
+
+#~ msgctxt "@title:column Column containing email addresses"
+#~ msgid "Email"
+#~ msgstr "Електронна пошта"
+
+#~ msgctxt ""
+#~ "@title:column Column containing the residential state of the address"
+#~ msgid "State"
+#~ msgstr "Область"
+
+#~ msgctxt "@title:column Column containing title of the person"
+#~ msgid "Title"
+#~ msgstr "Звертання"
+
+#~ msgid "Import Contacts from LDAP"
+#~ msgstr "Імпортувати контакти з LDAP"
+
+#~ msgid "Search for Addresses in Directory"
+#~ msgstr "Шукати на адреси у каталозі"
+
+#~ msgid "Search for:"
+#~ msgstr "Шукати за:"
+
+#~ msgctxt "In LDAP attribute"
+#~ msgid "in"
+#~ msgstr "у"
+
+#~ msgctxt "@item:inlistbox Name of the contact"
+#~ msgid "Name"
+#~ msgstr "Ім’я"
+
+#~ msgctxt "@item:inlistbox email address of the contact"
+#~ msgid "Email"
+#~ msgstr "Електронна пошта"
+
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Home Number"
+#~ msgstr "Домашній телефон"
+
+#~ msgctxt "@item:inlistbox"
+#~ msgid "Work Number"
+#~ msgstr "Робочий телефон"
+
+#~ msgid "Stop"
+#~ msgstr "Зупинити"
+
+#~ msgctxt "@action:button Start searching"
+#~ msgid "&Search"
+#~ msgstr "&Шукати"
+
+#~ msgid "Recursive search"
+#~ msgstr "Рекурсивний пошук"
+
+#~ msgid "Contains"
+#~ msgstr "містить"
+
+#~ msgid "Starts With"
+#~ msgstr "починається з"
+
+#~ msgid "Select All"
+#~ msgstr "Позначити все"
+
+#~ msgid "Unselect All"
+#~ msgstr "Скасувати позначення"
+
+#~ msgid "Add Selected"
+#~ msgstr "Додати позначені"
+
+#~ msgid "Configure LDAP Servers..."
+#~ msgstr "Налаштувати сервери LDAP…"
+
+#~ msgid "You must select an LDAP server before searching."
+#~ msgstr "Перед виконанням пошуку вам слід обрати сервер LDAP."
+
+#~ msgctxt "arguments are host name, datetime"
+#~ msgid "Imported from LDAP directory %1 on %2"
+#~ msgstr "Імпортовано з каталогу LDAP %1 на %2"
+
+#~ msgid "Configure the Address Book LDAP Settings"
+#~ msgstr "Налаштування параметрів LDAP адресної книги"
+
+#~ msgctxt "NAME OF TRANSLATORS"
+#~ msgid "Your names"
+#~ msgstr "Юрій Чорноіван"
+
+#~ msgctxt "EMAIL OF TRANSLATORS"
+#~ msgid "Your emails"
+#~ msgstr "yurchor@ukr.net"
--- /dev/null
+# Vietnamese translation for kio_ldap.
+# Copyright © 2007 KDE i18n Project for Vietnamese.
+# Phan Vĩnh Thịnh <teppi82@gmail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-06-23 21:48+0930\n"
+"Last-Translator: Phan Vĩnh Thịnh <teppi82@gmail.com>\n"
+"Language-Team: Vietnamese <kde-l10n-vi@kde.org>\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 1.10\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"Thông tin phụ: "
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"Máy chủ LDAP trả lại lỗi: %1 %2\n"
+"Địa chỉ URL của LDAP là: %3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "Đăng nhập LDAP"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "nơi:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "Thông tin xác thực sai."
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "Kết nối LDAP bị thôi."
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "Lỗi phân tách LDIF."
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "Tệp LDIF không hợp lệ trên dòng %1."
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: kdeorg\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2022-10-30 07:51\n"
+"Last-Translator: \n"
+"Language-Team: Chinese Simplified\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Crowdin-Project: kdeorg\n"
+"X-Crowdin-Project-ID: 269464\n"
+"X-Crowdin-Language: zh-CN\n"
+"X-Crowdin-File: /kf5-stable/messages/kldap/kio_ldap.pot\n"
+"X-Crowdin-File-ID: 3141\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"额外信息:"
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP 服务器返回了以下错误:%1 %2\n"
+"LDAP URL 为:%3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP 登录"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "站点:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "无效的身份验证信息。"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP 连接已取消。"
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "LDIF 分析器失败。"
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "LDIF 文件在第 %1 行存在错误。"
--- /dev/null
+msgid ""
+msgstr ""
+"Project-Id-Version: kdeorg\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2022-10-30 07:51\n"
+"Last-Translator: \n"
+"Language-Team: Chinese Simplified\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Crowdin-Project: kdeorg\n"
+"X-Crowdin-Project-ID: 269464\n"
+"X-Crowdin-Language: zh-CN\n"
+"X-Crowdin-File: /kf5-stable/messages/kldap/libkldap5.pot\n"
+"X-Crowdin-File-ID: 3201\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "无 LDAP 支持..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "在连接初始化阶段发生错误。"
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "无法将协议版本设为 %1。"
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "无法将超时值设置为 %1 秒。"
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "无法设置 CA 证书文件。"
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "无效 TLS 需要证书模式。"
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "无法设置 TLS 需要证书模式。"
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "无法初始化新 TLS 上下文。"
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "LDAP 客户端库没有 TLS 支持。"
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "无法设置大小限制。"
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "无法设置时间限制。"
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "无法初始化 SASL 客户端。"
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"未编译 LDAP 支持。请在 OpenLDAP 客户端库或兼容环境下重新编译 libkldap,或向您"
+"所用发行版的打包人员申诉。"
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "无法访问服务器,请重新配置。"
+
+#: widgets/addhostdialog.cpp:64
+#, kde-format
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "添加主机"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr "已使用明文方式存储 LDAP 密码,您要将其存储至 KWallet 中吗?"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr "在 KWallet 中保存明文密码"
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr "编辑主机"
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr "您要删除主机“%1”的设置吗?"
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr "删除主机"
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr "勾选要使用的所有服务器:"
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr "添加主机(&A)..."
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr "编辑主机(&E)..."
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr "删除主机(&R)"
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "用户:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "基准 DN:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "域:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "密码:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "主机:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "端口:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP 版本:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "默认"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "大小限制:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " 秒"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "默认"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "时间限制:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "不分页"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "页面大小:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "查询服务器"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "DN:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "过滤器:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "否"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, kde-format
+msgid "Security:"
+msgstr "安全:"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "匿名"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "简单"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, kde-format
+msgid "Authentication:"
+msgstr "身份验证:"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL 算法:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "检查服务器"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, kde-format
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP 查询"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "连接 %1 时发生未知错误"
--- /dev/null
+# translation of kio_ldap.po to Chinese Traditional
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Franklin Weng <franklin at goodhorse dot idv dot tw>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: kio_ldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-07-04 00:46+0000\n"
+"PO-Revision-Date: 2007-09-12 18:44+0800\n"
+"Last-Translator: Franklin Weng <franklin at goodhorse dot idv dot tw>\n"
+"Language-Team: Chinese Traditional <zh-l10n@lists.linux.org.tw>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: kio_ldap.cpp:87
+#, kde-format
+msgid ""
+"\n"
+"Additional info: "
+msgstr ""
+"\n"
+"額外資訊:"
+
+#: kio_ldap.cpp:169 kio_ldap.cpp:172
+#, kde-format
+msgid ""
+"LDAP server returned the error: %1 %2\n"
+"The LDAP URL was: %3"
+msgstr ""
+"LDAP 伺服器回應錯誤:%1 %2\n"
+"LDAP URL 為:%3"
+
+#: kio_ldap.cpp:304
+#, kde-format
+msgid "LDAP Login"
+msgstr "LDAP 登入"
+
+#: kio_ldap.cpp:306
+#, kde-format
+msgid "site:"
+msgstr "站台:"
+
+#: kio_ldap.cpp:333
+#, kde-format
+msgid "Invalid authorization information."
+msgstr "不合法的認證資訊。"
+
+#: kio_ldap.cpp:340
+#, kde-format
+msgid "LDAP connection canceled."
+msgstr "LDAP 連線取消。"
+
+#: kio_ldap.cpp:606 kio_ldap.cpp:674
+#, kde-format
+msgid "The Ldif parser failed."
+msgstr "LDIF 解析器失敗。"
+
+#: kio_ldap.cpp:687 kio_ldap.cpp:689
+#, kde-format
+msgid "Invalid Ldif file in line %1."
+msgstr "LDIF 檔案內容第 %1 行語法錯誤。"
--- /dev/null
+# translation of libkldap.po to Chinese Traditional
+# Copyright (C) YEAR This_file_is_part_of_KDE
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Franklin Weng <franklin at goodhorse dot idv dot tw>, 2007, 2008, 2015.
+# Frank Weng (a.k.a. Franklin) <franklin at goodhorse dot idv dot tw>, 2009.
+# pan93412 <pan93412@gmail.com>, 2019.
+msgid ""
+msgstr ""
+"Project-Id-Version: libkldap\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
+"POT-Creation-Date: 2022-01-11 00:44+0000\n"
+"PO-Revision-Date: 2019-03-22 00:44+0800\n"
+"Last-Translator: pan93412 <pan93412@gmail.com>\n"
+"Language-Team: Chinese <zh-l10n@lists.linux.org.tw>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 18.12.3\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: core/ldapconnection.cpp:124
+#, kde-format
+msgid "No LDAP Support..."
+msgstr "不支援 LDAP..."
+
+#: core/ldapconnection.cpp:239
+#, kde-format
+msgid "An error occurred during the connection initialization phase."
+msgstr "連線初始化時發生錯誤。"
+
+#: core/ldapconnection.cpp:246
+#, kde-format
+msgid "Cannot set protocol version to %1."
+msgstr "無法送出協定版本給 %1。"
+
+#: core/ldapconnection.cpp:257
+#, kde-format
+msgid "Cannot set timeout to %1 second."
+msgid_plural "Cannot set timeout to %1 seconds."
+msgstr[0] "無法設定時間限制為 %1 秒。"
+
+#: core/ldapconnection.cpp:269
+#, kde-format
+msgid "Could not set CA certificate file."
+msgstr "無法設定 CA 憑證檔。"
+
+#: core/ldapconnection.cpp:294
+#, kde-format
+msgid "Invalid TLS require certificate mode."
+msgstr "無效的 TLS 必須憑證模式 (TLS require certificate mode)。"
+
+#: core/ldapconnection.cpp:299
+#, kde-format
+msgid "Could not set TLS require certificate mode."
+msgstr "無法設定 TLS 必須憑證模式 (TLS require certificate mode)。"
+
+#: core/ldapconnection.cpp:308
+#, kde-format
+msgid "Could not initialize new TLS context."
+msgstr "無法初始化新 TLS 內文。"
+
+#: core/ldapconnection.cpp:325
+#, kde-format
+msgid "TLS support not available in the LDAP client libraries."
+msgstr "LDAP 用戶端函式庫不支援 TLS。"
+
+#: core/ldapconnection.cpp:335
+#, kde-format
+msgid "Cannot set size limit."
+msgstr "無法設定大小限制。"
+
+#: core/ldapconnection.cpp:345
+#, kde-format
+msgid "Cannot set time limit."
+msgstr "無法設定時間限制。"
+
+#: core/ldapconnection.cpp:353
+#, kde-format
+msgid "Cannot initialize the SASL client."
+msgstr "無法初始化 SASL 用戶端。"
+
+#: core/ldapconnection.cpp:430
+#, kde-format
+msgid ""
+"LDAP support not compiled in. Please recompile libkldap with the OpenLDAP "
+"(or compatible) client libraries, or complain to your distribution packagers."
+msgstr ""
+"未將 LDAP 支援編譯進來。請重新編譯 libkldap,加入 OpenLDAP 或相容的用戶端函式"
+"庫,或是向您的散布版打包者反應。"
+
+#: core/ldapsearch.cpp:222
+#, kde-format
+msgid "Cannot access to server. Please reconfigure it."
+msgstr "無法存取伺服器。請重新設定。"
+
+#: widgets/addhostdialog.cpp:64
+#, fuzzy, kde-format
+#| msgid "Host:"
+msgctxt "@title:window"
+msgid "Add Host"
+msgstr "主機:"
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:112
+#, kde-format
+msgid ""
+"LDAP password is stored as clear text, do you want to store it in kwallet?"
+msgstr ""
+
+#: widgets/ldapclientsearchconfigreadconfigjob.cpp:113
+#, kde-format
+msgid "Store clear text password in Wallet"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:96
+#, kde-format
+msgctxt "@title:window"
+msgid "Edit Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:113
+#, kde-format
+msgid "Do you want to remove setting for host \"%1\"?"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:114
+#, kde-format
+msgid "Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:272
+#, kde-format
+msgid "Check all servers that should be used:"
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:306
+#, kde-format
+msgid "&Add Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:308
+#, kde-format
+msgid "&Edit Host..."
+msgstr ""
+
+#: widgets/ldapconfigurewidget.cpp:311
+#, kde-format
+msgid "&Remove Host"
+msgstr ""
+
+#: widgets/ldapconfigwidget.cpp:90
+#, kde-format
+msgid "User:"
+msgstr "使用者:"
+
+#: widgets/ldapconfigwidget.cpp:97
+#, kde-format
+msgid "Bind DN:"
+msgstr "域名:"
+
+#: widgets/ldapconfigwidget.cpp:104
+#, kde-format
+msgid "Realm:"
+msgstr "領域:"
+
+#: widgets/ldapconfigwidget.cpp:112
+#, kde-format
+msgid "Password:"
+msgstr "密碼:"
+
+#: widgets/ldapconfigwidget.cpp:119
+#, kde-format
+msgid "Host:"
+msgstr "主機:"
+
+#: widgets/ldapconfigwidget.cpp:128
+#, kde-format
+msgid "Port:"
+msgstr "埠號:"
+
+#: widgets/ldapconfigwidget.cpp:136
+#, kde-format
+msgid "LDAP version:"
+msgstr "LDAP 版本:"
+
+#: widgets/ldapconfigwidget.cpp:144
+#, kde-format
+msgctxt "default ldap size limit"
+msgid "Default"
+msgstr "預設"
+
+#: widgets/ldapconfigwidget.cpp:145
+#, kde-format
+msgid "Size limit:"
+msgstr "大小限制:"
+
+#: widgets/ldapconfigwidget.cpp:153
+#, kde-format
+msgid " sec"
+msgstr " 秒"
+
+#: widgets/ldapconfigwidget.cpp:154
+#, kde-format
+msgctxt "default ldap time limit"
+msgid "Default"
+msgstr "預設"
+
+#: widgets/ldapconfigwidget.cpp:155
+#, kde-format
+msgid "Time limit:"
+msgstr "時間限制:"
+
+#: widgets/ldapconfigwidget.cpp:163
+#, kde-format
+msgid "No paging"
+msgstr "不分頁"
+
+#: widgets/ldapconfigwidget.cpp:164
+#, kde-format
+msgid "Page size:"
+msgstr "頁面大小:"
+
+#: widgets/ldapconfigwidget.cpp:175 widgets/ldapconfigwidget.cpp:253
+#, kde-format
+msgid "Query Server"
+msgstr "查詢伺服器"
+
+#: widgets/ldapconfigwidget.cpp:185
+#, kde-format
+msgctxt "Distinguished Name"
+msgid "DN:"
+msgstr "區別名稱:"
+
+#: widgets/ldapconfigwidget.cpp:192
+#, kde-format
+msgid "Filter:"
+msgstr "過濾器:"
+
+#: widgets/ldapconfigwidget.cpp:201
+#, kde-format
+msgctxt "@option:radio set no security"
+msgid "No"
+msgstr "無"
+
+#: widgets/ldapconfigwidget.cpp:204
+#, kde-format
+msgctxt "@option:radio use TLS security"
+msgid "TLS"
+msgstr "TLS"
+
+#: widgets/ldapconfigwidget.cpp:207
+#, kde-format
+msgctxt "@option:radio use SSL security"
+msgid "SSL"
+msgstr "SSL"
+
+#: widgets/ldapconfigwidget.cpp:222
+#, fuzzy, kde-format
+#| msgid "Security"
+msgid "Security:"
+msgstr "安全性"
+
+#: widgets/ldapconfigwidget.cpp:232
+#, kde-format
+msgctxt "@option:radio anonymous authentication"
+msgid "Anonymous"
+msgstr "匿名"
+
+#: widgets/ldapconfigwidget.cpp:235
+#, kde-format
+msgctxt "@option:radio simple authentication"
+msgid "Simple"
+msgstr "簡單"
+
+#: widgets/ldapconfigwidget.cpp:238
+#, kde-format
+msgctxt "@option:radio SASL authentication"
+msgid "SASL"
+msgstr "SASL"
+
+#: widgets/ldapconfigwidget.cpp:241
+#, fuzzy, kde-format
+#| msgid "Authentication"
+msgid "Authentication:"
+msgstr "認證"
+
+#: widgets/ldapconfigwidget.cpp:259
+#, kde-format
+msgid "SASL mechanism:"
+msgstr "SASL 機制:"
+
+#: widgets/ldapconfigwidget.cpp:303
+#, kde-format
+msgid "Check server"
+msgstr "檢查伺服器"
+
+#: widgets/ldapconfigwidget.cpp:309
+#, fuzzy, kde-format
+#| msgid "LDAP Query"
+msgctxt "@title:window"
+msgid "LDAP Query"
+msgstr "LDAP 查詢"
+
+#: widgets/ldapconfigwidget.cpp:323
+#, kde-format
+msgctxt "%1 is a url to ldap server"
+msgid "Unknown error connecting %1"
+msgstr "連線到 %1 時發生未知的錯誤"
+
+#, fuzzy
+#~| msgid "LDAP version:"
+#~ msgid "LDAP Servers"
+#~ msgstr "LDAP 版本:"
+
+#~ msgid "Attribute"
+#~ msgstr "屬性"
+
+#~ msgid "Value"
+#~ msgstr "值"
+
+#~ msgid "Distinguished Name"
+#~ msgstr "辨別名稱(DN)"
--- /dev/null
+# SPDX-FileCopyrightText: 2021-2022 Laurent Montel <montel@kde.org>
+# SPDX-License-Identifier: CC0-1.0
+# Suppression file for ASAN/LSAN
+
+leak:libspeechd
+leak:getdelim
+leak:g_malloc
+leak:libfontconfig
+leak:libdbus
+leak:QEasingCurve::
+leak:QtSharedPointer::ExternalRefCountData::getAndRef
+leak:QArrayData::allocate
+leak:QObject::QObject
+leak:QObjectPrivate::addConnection
+leak:QObjectPrivate::connectImpl
+leak:QPropertyAnimation::QPropertyAnimation
--- /dev/null
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: BSD-3-Clause
+include(CheckFunctionExists)
+include(CheckIncludeFiles)
+include(CheckSymbolExists)
+
+check_include_files(sys/time.h HAVE_SYS_TIME_H)
+
+set(kldap_EXTRA_LIBS)
+
+if(Ldap_FOUND)
+ set(kldap_EXTRA_LIBS Ldap::Ldap)
+ if(WIN32)
+ set(kldap_EXTRA_LIBS ${kldap_EXTRA_LIBS} ws2_32)
+ endif()
+ set(CMAKE_REQUIRED_INCLUDES lber.h ldap.h)
+ set(CMAKE_REQUIRED_LIBRARIES Ldap::Ldap)
+ check_function_exists(ldap_start_tls_s HAVE_LDAP_START_TLS_S)
+ check_function_exists(ldap_initialize HAVE_LDAP_INITIALIZE)
+ check_function_exists(ber_memfree HAVE_BER_MEMFREE)
+ check_function_exists(ldap_unbind_ext HAVE_LDAP_UNBIND_EXT)
+ check_function_exists(ldap_extended_operation HAVE_LDAP_EXTENDED_OPERATION)
+ check_function_exists(ldap_extended_operation_s HAVE_LDAP_EXTENDED_OPERATION_S)
+endif()
+
+set(kldap_EXTRA_LIBS ${kldap_EXTRA_LIBS} Sasl2::Sasl2)
+
+configure_file(kldap_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/kldap_config.h)
+
+########### next target ###############
+
+add_library(KF5Ldap)
+add_library(KF5::Ldap ALIAS KF5Ldap)
+
+target_sources(KF5Ldap PRIVATE
+ core/ber.cpp
+ core/ldif.cpp
+ core/ldapurl.cpp
+ core/ldapserver.cpp
+ core/ldapobject.cpp
+ core/ldapconnection.cpp
+ core/ldapoperation.cpp
+ core/ldapcontrol.cpp
+ core/ldapsearch.cpp
+ core/ldapdn.cpp
+ core/ldif.h
+ core/ldapsearch.h
+ core/w32-ldap-help.h
+ core/ldapurl.h
+ core/ldapcontrol.h
+ core/ber.h
+ core/ldapdefs.h
+ core/ldapconnection.h
+ core/ldapdn.h
+ core/ldapoperation.h
+ core/ldapserver.h
+ core/ldapobject.h
+
+
+ widgets/ldapconfigwidget.cpp
+ widgets/addhostdialog.cpp
+ widgets/ldapclient.cpp
+ widgets/ldapclientsearch.cpp
+ widgets/ldapclientsearchconfig.cpp
+ widgets/ldapconfigurewidget.cpp
+ widgets/ldapclientsearchconfigreadconfigjob.cpp
+ widgets/ldapclientsearchconfigwriteconfigjob.cpp
+ widgets/ldapwidgetitem_p.cpp
+ widgets/ldapwidgetitemreadconfigserverjob.cpp
+ widgets/ldapsearchclientreadconfigserverjob.cpp
+
+ widgets/ldapclientsearchconfig.h
+ widgets/ldapclientsearchconfigreadconfigjob.h
+ widgets/ldapclient.h
+ widgets/addhostdialog.h
+ widgets/ldapwidgetitem_p.h
+ widgets/ldapconfigwidget.h
+ widgets/ldapclientsearch.h
+ widgets/ldapclientsearchconfigwriteconfigjob.h
+ widgets/ldapconfigurewidget.h
+ widgets/ldapsearchclientreadconfigserverjob.h
+ widgets/ldapwidgetitemreadconfigserverjob.h
+ )
+
+ecm_qt_declare_logging_category(KF5Ldap HEADER ldap_debug.h IDENTIFIER LDAP_LOG CATEGORY_NAME org.kde.pim.ldap
+ DESCRIPTION "kldaplib (kldap)"
+ OLD_CATEGORY_NAMES log_ldap
+ EXPORT KLDAP
+ )
+
+ecm_qt_declare_logging_category(KF5Ldap HEADER ldapclient_debug.h IDENTIFIER LDAPCLIENT_LOG CATEGORY_NAME org.kde.pim.ldapclient
+ DESCRIPTION "ldapclient (libkdepim)"
+ OLD_CATEGORY_NAMES log_ldapclient
+ EXPORT KLDAP
+ )
+
+if (COMPILE_WITH_UNITY_CMAKE_SUPPORT)
+ set_target_properties(KF5Ldap PROPERTIES UNITY_BUILD ON)
+endif()
+generate_export_header(KF5Ldap BASE_NAME kldap)
+
+
+
+target_link_libraries(KF5Ldap
+PRIVATE
+ Qt${QT_MAJOR_VERSION}::Widgets
+ KF5::I18n
+ KF5::WidgetsAddons
+ KF5::ConfigCore
+ KF5::CoreAddons
+ KF5::KIOCore
+ ${kldap_EXTRA_LIBS}
+)
+
+target_link_libraries(KF5Ldap PRIVATE qt${QT_MAJOR_VERSION}keychain)
+
+target_include_directories(KF5Ldap INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF}/KLDAP>")
+target_include_directories(KF5Ldap PUBLIC "$<BUILD_INTERFACE:${KLdap_SOURCE_DIR}/src/core;${KLdap_BINARY_DIR}/src>")
+
+set_target_properties(KF5Ldap PROPERTIES
+ VERSION ${KLDAP_VERSION}
+ SOVERSION ${KLDAP_SOVERSION}
+ EXPORT_NAME Ldap
+)
+
+install(TARGETS KF5Ldap EXPORT KF5LdapTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS})
+
+########### install files ###############
+
+ecm_generate_headers(KLdapCore_CamelCase_HEADERS
+ HEADER_NAMES
+ Ber
+ LdapConnection
+ LdapControl
+ LdapDN
+ LdapObject
+ LdapOperation
+ LdapSearch
+ LdapServer
+ LdapDefs
+ LdapUrl
+ Ldif
+ RELATIVE core
+ PREFIX KLDAP
+ REQUIRED_HEADERS KLdapCore_HEADERS
+)
+
+ecm_generate_headers(KLdapWidgets_CamelCase_HEADERS
+ HEADER_NAMES
+ LdapConfigWidget
+ LdapClientSearchConfig
+ LdapClientSearch
+ AddHostDialog
+ LdapClient
+ LdapConfigureWidget
+ LdapClientSearchConfigWriteConfigJob
+ LdapClientSearchConfigReadConfigJob
+ LdapSearchClientReadConfigServerJob
+ RELATIVE widgets
+ PREFIX KLDAP
+ REQUIRED_HEADERS KLdapWidgets_HEADERS
+)
+
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/kldap_export.h
+ ${KLdapCore_HEADERS}
+ ${KLdapWidgets_HEADERS}
+ DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KLDAP/kldap
+ COMPONENT Devel
+)
+
+install(FILES
+ ${KLdapCore_CamelCase_HEADERS}
+ ${KLdapWidgets_CamelCase_HEADERS}
+ DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KLDAP/KLDAP/
+ COMPONENT Devel
+)
+
+if (BUILD_QCH)
+ ecm_add_qch(
+ KF5LDap_QCH
+ NAME KLDap
+ BASE_NAME KF5LDap
+ VERSION ${PIM_VERSION}
+ ORG_DOMAIN org.kde
+
+ SOURCES # using only public headers, to cover only public API
+ ${KLdapCore_HEADERS}
+ ${KLdapWidgets_HEADERS}
+ MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
+ #IMAGE_DIRS "${CMAKE_SOURCE_DIR}/docs/pics"
+ LINK_QCHS
+ Qt5Core_QCH
+ Qt5Gui_QCH
+ Qt5Widgets_QCH
+ INCLUDE_DIRS
+ ${CMAKE_CURRENT_BINARY_DIR}
+ BLANK_MACROS
+ KLDAP_EXPORT
+ TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
+ QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
+ COMPONENT Devel
+ )
+endif()
+
+ecm_generate_pri_file(BASE_NAME Ldap LIB_NAME KF5Ldap FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF}/KLDAP/)
+install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})
+
--- /dev/null
+#! /bin/sh
+# SPDX-License-Identifier: CC0-1.0
+# SPDX-FileCopyrightText: none
+$XGETTEXT core/*.cpp widgets/*.cpp -o $podir/libkldap5.pot
+
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ber.h"
+#include "kldap_config.h"
+
+#include "ldap_debug.h"
+
+#include <QList>
+#include <QVarLengthArray>
+
+#include <cstdarg>
+
+#if LDAP_FOUND
+
+#ifdef Q_OS_SOLARIS // krazy:exclude=cpp
+#define BC31 1
+#endif
+
+#if !HAVE_WINLDAP_H
+#include <lber.h>
+#include <ldap.h>
+#else
+#include <w32-ldap-help.h>
+#endif
+
+#ifndef LBER_USE_DER
+#define LBER_USE_DER 1
+#endif
+
+#if !HAVE_BER_MEMFREE
+#if !HAVE_WINLDAP_H
+#define ber_memfree(x) ldap_memfree(x)
+#else
+#define ber_memfree(x) win_ldap_memfree(x)
+#endif
+#endif
+
+#endif
+
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN Ber::BerPrivate
+{
+public:
+#if LDAP_FOUND
+ BerElement *mBer = nullptr;
+#endif
+};
+
+#if LDAP_FOUND
+Ber::Ber()
+ : d(new BerPrivate)
+{
+ d->mBer = ber_alloc_t(LBER_USE_DER);
+ Q_ASSERT(d->mBer);
+}
+
+Ber::Ber(const QByteArray &value)
+ : d(new BerPrivate)
+{
+ struct berval bv;
+ bv.bv_val = (char *)value.data();
+ bv.bv_len = value.size();
+ d->mBer = ber_init(&bv);
+ Q_ASSERT(d->mBer);
+}
+
+Ber::~Ber()
+{
+ ber_free(d->mBer, 1);
+}
+
+Ber::Ber(const Ber &that)
+ : d(new BerPrivate)
+{
+ struct berval *bv;
+ if (ber_flatten(that.d->mBer, &bv) == 0) {
+ d->mBer = ber_init(bv);
+ ber_bvfree(bv);
+ }
+}
+
+Ber &Ber::operator=(const Ber &that)
+{
+ if (this == &that) {
+ return *this;
+ }
+
+ struct berval *bv;
+ if (ber_flatten(that.d->mBer, &bv) == 0) {
+ d->mBer = ber_init(bv);
+ ber_bvfree(bv);
+ }
+ return *this;
+}
+
+QByteArray Ber::flatten() const
+{
+ QByteArray ret;
+ struct berval *bv;
+ if (ber_flatten(d->mBer, &bv) == 0) {
+ ret = QByteArray(bv->bv_val, bv->bv_len);
+ ber_bvfree(bv);
+ }
+ return ret;
+}
+
+int Ber::printf(QString format, ...)
+{
+ char fmt[2];
+ va_list args;
+ va_start(args, format);
+ fmt[1] = '\0';
+
+ int i = 0;
+ int ret = 0;
+ while (i < format.length()) {
+ fmt[0] = format[i].toLatin1();
+ i++;
+ switch (fmt[0]) {
+ case 'b':
+ case 'e':
+ case 'i': {
+ ber_int_t v = va_arg(args, int);
+ ret = ber_printf(d->mBer, fmt, v);
+ break;
+ }
+ case 'B': {
+ // FIXME: QBitArray would be logical, but how to access the bits?
+ QByteArray *B = va_arg(args, QByteArray *);
+ int Bc = va_arg(args, int);
+ ret = ber_printf(d->mBer, fmt, B->data(), Bc);
+ break;
+ }
+ case 'o': {
+ QByteArray *o = va_arg(args, QByteArray *);
+ ret = ber_printf(d->mBer, fmt, o->data(), o->size());
+ break;
+ }
+ case 'O': {
+ QByteArray *O = va_arg(args, QByteArray *);
+ struct berval bv;
+ bv.bv_val = (char *)O->data();
+ bv.bv_len = O->size();
+ ret = ber_printf(d->mBer, fmt, &bv);
+ break;
+ }
+ case 's': {
+ QByteArray *s = va_arg(args, QByteArray *);
+ ret = ber_printf(d->mBer, fmt, s->data());
+ break;
+ break;
+ }
+ case 't': {
+ unsigned int t = va_arg(args, unsigned int);
+ ret = ber_printf(d->mBer, fmt, t);
+ break;
+ }
+ case 'v': {
+ QList<QByteArray> *v = va_arg(args, QList<QByteArray> *);
+ QVarLengthArray<const char *> l(v->count() + 1);
+ int j;
+ for (j = 0; j < v->count(); j++) {
+ l[j] = v->at(j).data();
+ }
+ l[j] = nullptr;
+ ret = ber_printf(d->mBer, fmt, l.data());
+ break;
+ }
+ case 'V': {
+ QList<QByteArray> *V = va_arg(args, QList<QByteArray> *);
+ QVarLengthArray<struct berval *> bv(V->count() + 1);
+ QVarLengthArray<struct berval> bvs(V->count());
+ int j;
+ for (j = 0; j < V->count(); j++) {
+ bvs[j].bv_val = (char *)V->at(j).data();
+ bvs[j].bv_len = V->at(j).size();
+ bv[j] = &bvs[j];
+ }
+ bv[V->count()] = nullptr;
+ ret = ber_printf(d->mBer, fmt, bv.data());
+ break;
+ }
+ case 'n':
+ case '{':
+ case '}':
+ case '[':
+ case ']':
+ ret = ber_printf(d->mBer, fmt);
+ break;
+ default:
+ qCWarning(LDAP_LOG) << "Invalid BER format parameter: '" << fmt << "'";
+ ret = -1;
+ }
+ qCDebug(LDAP_LOG) << "ber_printf format:" << fmt << "ret:" << ret;
+ if (ret == -1) {
+ break;
+ }
+ }
+ va_end(args);
+ return ret;
+}
+
+int Ber::scanf(QString format, ...)
+{
+ char fmt[2];
+ va_list args;
+ va_start(args, format);
+ fmt[1] = '\0';
+
+ int i = 0;
+ int ret = 0;
+ while (i < format.length()) {
+ fmt[0] = format[i].toLatin1();
+ i++;
+ switch (fmt[0]) {
+ case 'l':
+ case 'b':
+ case 'e':
+ case 'i': {
+ int *v = va_arg(args, int *);
+ ret = ber_scanf(d->mBer, fmt, v);
+ break;
+ }
+ case 'B': {
+ // FIXME: QBitArray would be logical, but how to access the bits?
+ QByteArray *B = va_arg(args, QByteArray *);
+ int *Bc = va_arg(args, int *);
+ char *c;
+ ret = ber_scanf(d->mBer, fmt, &c, Bc);
+ if (ret != -1) {
+ *B = QByteArray(c, (*Bc + 7) / 8);
+ ber_memfree(c);
+ }
+ break;
+ }
+ case 'o': {
+ QByteArray *o = va_arg(args, QByteArray *);
+ struct berval bv;
+ ret = ber_scanf(d->mBer, fmt, &bv);
+ if (ret != -1) {
+ *o = QByteArray(bv.bv_val, bv.bv_len);
+ ber_memfree(bv.bv_val);
+ }
+ break;
+ }
+ case 'O': {
+ QByteArray *O = va_arg(args, QByteArray *);
+ struct berval *bv;
+ ret = ber_scanf(d->mBer, fmt, &bv);
+ if (ret != -1) {
+ *O = QByteArray(bv->bv_val, bv->bv_len);
+ ber_bvfree(bv);
+ }
+ break;
+ }
+ case 'm': { // the same as 'O', just *bv should not be freed.
+ QByteArray *m = va_arg(args, QByteArray *);
+ struct berval *bv;
+ ret = ber_scanf(d->mBer, fmt, &bv);
+ if (ret != -1) {
+ *m = QByteArray(bv->bv_val, bv->bv_len);
+ }
+ break;
+ }
+ case 'a': {
+ QByteArray *a = va_arg(args, QByteArray *);
+ char *c;
+ ret = ber_scanf(d->mBer, fmt, &c);
+ if (ret != -1) {
+ *a = QByteArray(c);
+ ber_memfree(c);
+ }
+ break;
+ }
+
+ case 's': {
+ QByteArray *s = va_arg(args, QByteArray *);
+ char buf[255];
+ ber_len_t l = sizeof(buf);
+ ret = ber_scanf(d->mBer, fmt, &buf, &l);
+ if (ret != -1) {
+ *s = QByteArray(buf, l);
+ }
+ break;
+ }
+ case 't':
+ case 'T': {
+ unsigned int *t = va_arg(args, unsigned int *);
+ ret = ber_scanf(d->mBer, fmt, t);
+ break;
+ }
+ case 'v': {
+ QList<QByteArray> *v = va_arg(args, QList<QByteArray> *);
+ char **c;
+ char **c2;
+ ret = ber_scanf(d->mBer, fmt, &c);
+ if (ret != -1 && c) {
+ c2 = c;
+ while (*c) {
+ v->append(QByteArray(*c));
+ ber_memfree(*c);
+ c++;
+ }
+ ber_memfree((char *)c2);
+ }
+ break;
+ }
+ case 'V': {
+ QList<QByteArray> *v = va_arg(args, QList<QByteArray> *);
+ struct berval **bv;
+ struct berval **bv2;
+ ret = ber_scanf(d->mBer, fmt, &bv);
+ if (ret != -1 && bv) {
+ bv2 = bv;
+ while (*bv) {
+ v->append(QByteArray((*bv)->bv_val, (*bv)->bv_len));
+ bv++;
+ }
+ ber_bvecfree(bv2);
+ }
+ break;
+ }
+ case 'x':
+ case 'n':
+ case '{':
+ case '}':
+ case '[':
+ case ']':
+ ret = ber_scanf(d->mBer, fmt);
+ break;
+ default:
+ qCWarning(LDAP_LOG) << "Invalid BER format parameter: '" << fmt << "'";
+ ret = -1;
+ }
+
+ qCDebug(LDAP_LOG) << "ber_scanf format:" << fmt << "ret:" << ret;
+ if (ret == -1) {
+ break;
+ }
+ }
+ va_end(args);
+ return ret;
+}
+
+unsigned int Ber::peekTag(int &size)
+{
+ unsigned int ret;
+ ber_len_t len;
+ ret = ber_peek_tag(d->mBer, &len);
+ size = len;
+ return ret;
+}
+
+unsigned int Ber::skipTag(int &size)
+{
+ unsigned int ret;
+ ber_len_t len;
+ ret = ber_skip_tag(d->mBer, &len);
+ size = len;
+ return ret;
+}
+
+#else
+
+Ber::Ber()
+ : d(new BerPrivate)
+{
+ qCritical() << "LDAP support not compiled";
+}
+
+Ber::Ber(const QByteArray &)
+ : d(new BerPrivate)
+{
+ qCritical() << "LDAP support not compiled";
+}
+
+Ber::~Ber()
+{
+}
+
+Ber::Ber(const Ber &)
+ : d(new BerPrivate)
+{
+ qCritical() << "LDAP support not compiled";
+}
+
+Ber &Ber::operator=(const Ber &that)
+{
+ if (this == &that) {
+ return *this;
+ }
+ qCritical() << "LDAP support not compiled";
+ return *this;
+}
+
+QByteArray Ber::flatten() const
+{
+ qCritical() << "LDAP support not compiled";
+ return QByteArray();
+}
+
+int Ber::printf(QString format, ...)
+{
+ Q_UNUSED(format)
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int Ber::scanf(QString format, ...)
+{
+ Q_UNUSED(format)
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+unsigned int Ber::peekTag(int &size)
+{
+ Q_UNUSED(size)
+ qCritical() << "LDAP support not compiled";
+ return 0;
+}
+
+unsigned int Ber::skipTag(int &size)
+{
+ Q_UNUSED(size)
+ qCritical() << "LDAP support not compiled";
+ return 0;
+}
+
+#endif
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QByteArray>
+
+#include "kldap_export.h"
+#include <memory>
+// clazy:excludeall=copyable-polymorphic
+
+namespace KLDAP
+{
+/**
+ * This class allows encoding and decoding Qt structures using Basic
+ * Encoding Rules.
+ */
+class KLDAP_EXPORT Ber
+{
+public:
+ /**
+ * Constructs a Ber object.
+ */
+ Ber();
+ /**
+ * Constructs a Ber object from the value.
+ */
+ explicit Ber(const QByteArray &value);
+ /**
+ * Destroys the Ber object.
+ */
+ ~Ber();
+
+ Ber(const Ber &that);
+ Ber &operator=(const Ber &that);
+
+ /**
+ * Returns the Ber object as a flat QByteArray.
+ */
+ Q_REQUIRED_RESULT QByteArray flatten() const;
+
+ /**
+ * Appends the data with the specified format to the Ber object.
+ * This function works like printf, except that it's appending the
+ * parameters, not replacing them. The allowed format characters and
+ * the expected parameter types are:
+ * <ul>
+ * <li>
+ * b Boolean. An int parameter should be supplied.
+ * A boolean element is output.
+ * </li>
+ * <li>
+ * e Enumeration. An int parameter should be supplied.
+ * An enumeration element is output.
+ * </li>
+ * <li>
+ * i Integer. An int parameter should be supplied.
+ * An integer element is output.
+ * </li>
+ * <li>
+ * B Bitstring. A pointer to a QByteArray which contains the
+ * bitstring is supplied, followed by the number of bits in the
+ * bitstring. A bitstring element is output.
+ * </li>
+ * <li>
+ * n Null. No parameter is required. A null element is output.
+ * </li>
+ * <li>
+ * O,o,s Octet string. A QByteArray * is supplied.
+ * An octet string element is output.
+ * Due to versatility of Qt's QByteArray, these three format
+ * strings are all accepts the same parameter, but using the 's'
+ * format the string will be encoded only to the first zero
+ * character (a null terminated string)!
+ * </li>
+ * <li>
+ * t Tag. An int specifying the tag to give the next element
+ * is provided. This works across calls.
+ * </li>
+ * <li>
+ * v,V Several octet strings. A QList<QByteArray>* is supplied.
+ * Note that a construct like ’{v}’ is required to get an actual
+ * SEQUENCE OF octet strings. Also note that the 'v' format recognizes
+ * the QByteArray only to the first zero character, so it's not
+ * appropriate for binary data, just only for null terminated strings!
+ * </li>
+ * <li>
+ * { Begin sequence. No parameter is required.
+ * </li>
+ * <li>
+ * } End sequence. No parameter is required.
+ * </li>
+ * <li>
+ * [ Begin set. No parameter is required.
+ * </li>
+ * <li>
+ * ] End set. No parameter is required.
+ * </li>
+ * </ul>
+ */
+ int printf(QString format, ...); // Passing by-value since it's used by va_start
+ int scanf(QString format, ...);
+ unsigned int peekTag(int &size);
+ unsigned int skipTag(int &size);
+
+private:
+ class BerPrivate;
+ std::unique_ptr<BerPrivate> const d;
+};
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldapconnection.h"
+#include "kldap_config.h" // LDAP_FOUND
+#include "ldapdefs.h"
+
+#include "ldap_debug.h"
+#include <KLocalizedString>
+#include <cstdlib>
+
+#include <sasl/sasl.h>
+static const sasl_callback_t callbacks[] = {{SASL_CB_ECHOPROMPT, nullptr, nullptr},
+ {SASL_CB_NOECHOPROMPT, nullptr, nullptr},
+ {SASL_CB_GETREALM, nullptr, nullptr},
+ {SASL_CB_USER, nullptr, nullptr},
+ {SASL_CB_AUTHNAME, nullptr, nullptr},
+ {SASL_CB_PASS, nullptr, nullptr},
+ {SASL_CB_CANON_USER, nullptr, nullptr},
+ {SASL_CB_LIST_END, nullptr, nullptr}};
+
+static bool ldapoperation_sasl_initialized = false;
+
+#if LDAP_FOUND
+#if !HAVE_WINLDAP_H
+#include <lber.h>
+#include <ldap.h>
+#else
+#include <w32-ldap-help.h>
+#endif // HAVE_WINLDAP_H
+
+#ifndef LDAP_OPT_SUCCESS
+#define LDAP_OPT_SUCCESS 0
+#endif
+
+#endif
+
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN LdapConnection::LdapConnectionPrivate
+{
+public:
+ LdapConnectionPrivate();
+ LdapServer mServer;
+ QString mConnectionError;
+
+#if LDAP_FOUND
+ LDAP *mLDAP;
+#else
+ void *mLDAP;
+#endif
+ sasl_conn_t *mSASLconn;
+};
+
+LdapConnection::LdapConnectionPrivate::LdapConnectionPrivate()
+{
+ mSASLconn = nullptr;
+ if (!ldapoperation_sasl_initialized) {
+ sasl_client_init(nullptr);
+ ldapoperation_sasl_initialized = true;
+ }
+}
+
+LdapConnection::LdapConnection()
+ : d(new LdapConnectionPrivate)
+{
+ d->mLDAP = nullptr;
+}
+
+LdapConnection::LdapConnection(const LdapUrl &url)
+ : d(new LdapConnectionPrivate)
+{
+ d->mLDAP = nullptr;
+ setUrl(url);
+}
+
+LdapConnection::LdapConnection(const LdapServer &server)
+ : d(new LdapConnectionPrivate)
+{
+ d->mLDAP = nullptr;
+ setServer(server);
+}
+
+LdapConnection::~LdapConnection()
+{
+ close();
+}
+
+void LdapConnection::setUrl(const LdapUrl &url)
+{
+ d->mServer.setUrl(url);
+}
+
+void LdapConnection::setServer(const LdapServer &server)
+{
+ d->mServer = server;
+}
+
+const LdapServer &LdapConnection::server() const
+{
+ return d->mServer;
+}
+
+void *LdapConnection::handle() const
+{
+ return (void *)d->mLDAP;
+}
+
+void *LdapConnection::saslHandle() const
+{
+ return (void *)d->mSASLconn;
+}
+
+QString LdapConnection::errorString(int code)
+{
+ // No translated error messages yet
+#if LDAP_FOUND
+ return QString::fromUtf8(ldap_err2string(code));
+#else
+ return i18n("No LDAP Support...");
+#endif
+}
+
+QString LdapConnection::saslErrorString() const
+{
+ const char *str;
+ str = sasl_errdetail(d->mSASLconn);
+ return QString::fromLocal8Bit(str);
+}
+
+QString LdapConnection::connectionError() const
+{
+ return d->mConnectionError;
+}
+
+#if LDAP_FOUND
+int LdapConnection::getOption(int option, void *value) const
+{
+ Q_ASSERT(d->mLDAP);
+ return ldap_get_option(d->mLDAP, option, value);
+}
+
+int LdapConnection::setOption(int option, void *value)
+{
+ Q_ASSERT(d->mLDAP);
+ return ldap_set_option(d->mLDAP, option, value);
+}
+
+int LdapConnection::ldapErrorCode() const
+{
+ Q_ASSERT(d->mLDAP);
+ int err;
+ ldap_get_option(d->mLDAP, LDAP_OPT_ERROR_NUMBER, &err);
+ return err;
+}
+
+QString LdapConnection::ldapErrorString() const
+{
+ Q_ASSERT(d->mLDAP);
+ char *errmsg;
+ ldap_get_option(d->mLDAP, LDAP_OPT_ERROR_STRING, &errmsg);
+ QString msg = QString::fromLocal8Bit(errmsg);
+ free(errmsg);
+ return msg;
+}
+
+bool LdapConnection::setSizeLimit(int sizelimit)
+{
+ Q_ASSERT(d->mLDAP);
+ qCDebug(LDAP_LOG) << "sizelimit:" << sizelimit;
+ if (setOption(LDAP_OPT_SIZELIMIT, &sizelimit) != LDAP_OPT_SUCCESS) {
+ return false;
+ }
+ return true;
+}
+
+int LdapConnection::sizeLimit() const
+{
+ Q_ASSERT(d->mLDAP);
+ int sizelimit;
+ if (getOption(LDAP_OPT_SIZELIMIT, &sizelimit) != LDAP_OPT_SUCCESS) {
+ return -1;
+ }
+ return sizelimit;
+}
+
+bool LdapConnection::setTimeLimit(int timelimit)
+{
+ Q_ASSERT(d->mLDAP);
+ qCDebug(LDAP_LOG) << "timelimit:" << timelimit;
+ if (setOption(LDAP_OPT_TIMELIMIT, &timelimit) != LDAP_OPT_SUCCESS) {
+ return false;
+ }
+ return true;
+}
+
+int LdapConnection::timeLimit() const
+{
+ Q_ASSERT(d->mLDAP);
+ int timelimit;
+ if (getOption(LDAP_OPT_TIMELIMIT, &timelimit) != LDAP_OPT_SUCCESS) {
+ return -1;
+ }
+ return timelimit;
+}
+
+int LdapConnection::connect()
+{
+ int ret;
+ QString url;
+ if (d->mLDAP) {
+ close();
+ }
+
+ int version = d->mServer.version();
+ int timeout = d->mServer.timeout();
+
+ url = d->mServer.security() == LdapServer::SSL ? QStringLiteral("ldaps") : QStringLiteral("ldap");
+ url += QLatin1String("://");
+ url += d->mServer.host();
+ url += QLatin1Char(':');
+ url += QString::number(d->mServer.port());
+ qCDebug(LDAP_LOG) << "ldap url:" << url;
+#if HAVE_LDAP_INITIALIZE
+ ret = ldap_initialize(&d->mLDAP, url.toLatin1().constData());
+#else
+ d->mLDAP = ldap_init(d->mServer.host().toLatin1().data(), d->mServer.port());
+ if (d->mLDAP == 0) {
+ ret = -1;
+ } else {
+ ret = LDAP_SUCCESS;
+ }
+#endif
+ if (ret != LDAP_SUCCESS) {
+ d->mConnectionError = i18n("An error occurred during the connection initialization phase.");
+ return ret;
+ }
+
+ qCDebug(LDAP_LOG) << "setting version to:" << version;
+ if (setOption(LDAP_OPT_PROTOCOL_VERSION, &version) != LDAP_OPT_SUCCESS) {
+ ret = ldapErrorCode();
+ d->mConnectionError = i18n("Cannot set protocol version to %1.", version);
+ close();
+ return ret;
+ }
+
+#if defined(LDAP_OPT_TIMEOUT)
+ qCDebug(LDAP_LOG) << "setting timeout to:" << timeout;
+
+ if (timeout) {
+ if (setOption(LDAP_OPT_TIMEOUT, &timeout) != LDAP_OPT_SUCCESS) {
+ ret = ldapErrorCode();
+ d->mConnectionError = i18np("Cannot set timeout to %1 second.", "Cannot set timeout to %1 seconds.", timeout);
+ close();
+ return ret;
+ }
+ }
+#endif
+
+ qCDebug(LDAP_LOG) << "setting security to:" << d->mServer.security();
+ if (d->mServer.security() != LdapServer::None) {
+ bool initContext = false;
+ if (d->mServer.tlsCACertFile().isEmpty() == false) {
+ if (setOption(LDAP_OPT_X_TLS_CACERTFILE, d->mServer.tlsCACertFile().toUtf8().data()) != LDAP_OPT_SUCCESS) {
+ d->mConnectionError = i18n("Could not set CA certificate file.");
+ return -1;
+ }
+ initContext = true;
+ }
+
+ if (d->mServer.tlsRequireCertificate() != LdapServer::TLSReqCertDefault) {
+ int reqcert;
+ switch (d->mServer.tlsRequireCertificate()) {
+ case LdapServer::TLSReqCertAllow:
+ reqcert = LDAP_OPT_X_TLS_ALLOW;
+ break;
+ case LdapServer::TLSReqCertDemand:
+ reqcert = LDAP_OPT_X_TLS_DEMAND;
+ break;
+ case LdapServer::TLSReqCertHard:
+ reqcert = LDAP_OPT_X_TLS_HARD;
+ break;
+ case LdapServer::TLSReqCertNever:
+ reqcert = LDAP_OPT_X_TLS_NEVER;
+ break;
+ case LdapServer::TLSReqCertTry:
+ reqcert = LDAP_OPT_X_TLS_TRY;
+ break;
+ default:
+ d->mConnectionError = i18n("Invalid TLS require certificate mode.");
+ return -1;
+ }
+
+ if (setOption(LDAP_OPT_X_TLS_REQUIRE_CERT, &reqcert) != LDAP_OPT_SUCCESS) {
+ d->mConnectionError = i18n("Could not set TLS require certificate mode.");
+ return -1;
+ }
+ initContext = true;
+ }
+
+ if (initContext) {
+ int isServer = 0;
+ if (setOption(LDAP_OPT_X_TLS_NEWCTX, &isServer) != LDAP_OPT_SUCCESS) {
+ d->mConnectionError = i18n("Could not initialize new TLS context.");
+ return -1;
+ }
+ }
+ }
+
+ if (d->mServer.security() == LdapServer::TLS) {
+ qCDebug(LDAP_LOG) << "start TLS";
+
+#if HAVE_LDAP_START_TLS_S
+ if ((ret = ldap_start_tls_s(d->mLDAP, nullptr, nullptr)) != LDAP_SUCCESS) {
+ d->mConnectionError = ldapErrorString();
+ close();
+ return ret;
+ }
+#else
+ close();
+ d->mConnectionError = i18n("TLS support not available in the LDAP client libraries.");
+ return -1;
+#endif
+ }
+
+ qCDebug(LDAP_LOG) << "setting sizelimit to:" << d->mServer.sizeLimit();
+ if (d->mServer.sizeLimit()) {
+ if (!setSizeLimit(d->mServer.sizeLimit())) {
+ ret = ldapErrorCode();
+ close();
+ d->mConnectionError = i18n("Cannot set size limit.");
+ return ret;
+ }
+ }
+
+ qCDebug(LDAP_LOG) << "setting timelimit to:" << d->mServer.timeLimit();
+ if (d->mServer.timeLimit()) {
+ if (!setTimeLimit(d->mServer.timeLimit())) {
+ ret = ldapErrorCode();
+ close();
+ d->mConnectionError = i18n("Cannot set time limit.");
+ return ret;
+ }
+ }
+
+ qCDebug(LDAP_LOG) << "initializing SASL client";
+ const int saslresult = sasl_client_new("ldap", d->mServer.host().toLatin1().constData(), nullptr, nullptr, callbacks, 0, &d->mSASLconn);
+ if (saslresult != SASL_OK) {
+ d->mConnectionError = i18n("Cannot initialize the SASL client.");
+ return KLDAP_SASL_ERROR;
+ }
+
+ return 0;
+}
+
+void LdapConnection::close()
+{
+ if (d->mLDAP) {
+#if HAVE_LDAP_UNBIND_EXT
+ ldap_unbind_ext(d->mLDAP, nullptr, nullptr);
+#else
+ ldap_unbind(d->mLDAP);
+#endif
+ }
+ d->mLDAP = nullptr;
+ if (d->mSASLconn) {
+ sasl_dispose(&d->mSASLconn);
+ d->mSASLconn = nullptr;
+ }
+ qCDebug(LDAP_LOG) << "connection closed!";
+}
+
+#else // LDAP_FOUND
+
+int LdapConnection::getOption(int option, void *value) const
+{
+ qCritical() << "No LDAP support...";
+ return -1;
+}
+
+int LdapConnection::setOption(int option, void *value)
+{
+ qCritical() << "No LDAP support...";
+ return -1;
+}
+
+int LdapConnection::ldapErrorCode() const
+{
+ qCritical() << "No LDAP support...";
+ return -1;
+}
+
+QString LdapConnection::ldapErrorString() const
+{
+ qCritical() << "No LDAP support...";
+ return QString();
+}
+
+bool LdapConnection::setSizeLimit(int sizelimit)
+{
+ qCritical() << "No LDAP support...";
+ return false;
+}
+
+int LdapConnection::sizeLimit() const
+{
+ qCritical() << "No LDAP support...";
+ return -1;
+}
+
+bool LdapConnection::setTimeLimit(int timelimit)
+{
+ qCritical() << "No LDAP support...";
+ return false;
+}
+
+int LdapConnection::timeLimit() const
+{
+ qCritical() << "No LDAP support...";
+ return -1;
+}
+
+int LdapConnection::connect()
+{
+ d->mConnectionError = i18n(
+ "LDAP support not compiled in. Please recompile libkldap with the "
+ "OpenLDAP (or compatible) client libraries, or complain to your "
+ "distribution packagers.");
+ qCritical() << "No LDAP support...";
+ return -1;
+}
+
+void LdapConnection::close()
+{
+ qCritical() << "No LDAP support...";
+}
+
+#endif
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QString>
+#include <memory>
+
+#include "kldap_export.h"
+#include "ldapserver.h"
+#include "ldapurl.h"
+
+namespace KLDAP
+{
+/**
+ * @brief
+ * This class represents a connection to an LDAP server.
+ */
+class KLDAP_EXPORT LdapConnection
+{
+public:
+ enum SASL_Fields { SASL_Authname = 0x1, SASL_Authzid = 0x2, SASL_Realm = 0x4, SASL_Password = 0x8 };
+
+ /** Constructs an LdapConnection object */
+ LdapConnection();
+ /** Constructs an LdapConnection with the parameters given in url */
+ explicit LdapConnection(const LdapUrl &url);
+ /** Constructs an LdapConnection with the parameters given in server */
+ explicit LdapConnection(const LdapServer &server);
+
+ ~LdapConnection();
+
+ /**
+ * Sets the connection parameters via the specified url. After this,
+ * you need to call connect() to connect with the new parameters.
+ * @param url the URL containing the connection parameters
+ */
+ void setUrl(const LdapUrl &url);
+ /**
+ * Returns the connection parameters which was specified with an LDAP Url
+ * or a LdapServer structure.
+ */
+ const LdapServer &server() const;
+ /**
+ * Sets the connection parameters via the specified server structure. After
+ * this, you need to call connect() to connect with the new parameters.
+ * @param server the server object containing the connection parameters
+ */
+ void setServer(const LdapServer &server);
+
+ /**
+ * Sets up the connection parameters with creating a handle to the LDAP server.
+ * Also sets sizelimit and timelimit and starts TLS if it is requested.
+ * Returns 0 if successful, else returns an LDAP error code, and an error
+ * string which is available via connectionError().
+ */
+ int connect();
+ /**
+ * Returns a translated error string if connect() failed.
+ */
+ Q_REQUIRED_RESULT QString connectionError() const;
+ /**
+ * Closes the LDAP connection.
+ */
+ void close();
+
+ /** Sets the size limit for the connection.
+ * @param sizelimit the connection size limit to set
+ */
+ Q_REQUIRED_RESULT bool setSizeLimit(int sizelimit);
+ /** Returns the current size limit. */
+ Q_REQUIRED_RESULT int sizeLimit() const;
+
+ /** Sets the time limit for the connection.
+ * @param timelimit the connection time limit to set
+ */
+ Q_REQUIRED_RESULT bool setTimeLimit(int timelimit);
+ /** Returns the current time limit. */
+ Q_REQUIRED_RESULT int timeLimit() const;
+
+ /** Gets an option from the connection. The option value can be client
+ * library specific, so avoid this function if possible
+ * @param option the connection option to return
+ * @param value the value of option to get
+ */
+ int getOption(int option, void *value) const;
+ /** Sets an option in the connection. The option value can be client
+ * library specific, so avoid this function if possible */
+ int setOption(int option, void *value);
+
+ /** Returns the LDAP error code from the last operation */
+ Q_REQUIRED_RESULT int ldapErrorCode() const;
+ /** Returns the LDAP error string from the last operation */
+ Q_REQUIRED_RESULT QString ldapErrorString() const;
+ /** Returns a translated error message from the specified LDAP error code */
+ Q_REQUIRED_RESULT static QString errorString(int code);
+
+ /** Returns the SASL error string from the last SASL operation */
+ Q_REQUIRED_RESULT QString saslErrorString() const;
+
+ /**
+ * Returns the opaqe client-library specific LDAP object.
+ * Avoid its usage if you can.
+ */
+ void *handle() const;
+
+ /**
+ * Returns the opaqe sasl-library specific SASL object.
+ * Avoid its usage if you can.
+ */
+ void *saslHandle() const;
+
+private:
+ class LdapConnectionPrivate;
+ std::unique_ptr<LdapConnectionPrivate> const d;
+
+ Q_DISABLE_COPY(LdapConnection)
+};
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldapcontrol.h"
+#include "ber.h"
+
+#include <QSharedData>
+
+using namespace KLDAP;
+
+class LdapControlPrivate : public QSharedData
+{
+public:
+ LdapControlPrivate() = default;
+
+ LdapControlPrivate(const LdapControlPrivate &other)
+
+ = default;
+
+ QString mOid;
+ QByteArray mValue;
+ bool mCritical = false;
+};
+
+LdapControl::LdapControl()
+ : d(new LdapControlPrivate)
+{
+ setControl(QString(), QByteArray(), false);
+}
+
+LdapControl::LdapControl(const QString &oid, const QByteArray &value, bool critical)
+ : d(new LdapControlPrivate)
+{
+ setControl(oid, value, critical);
+}
+
+LdapControl::LdapControl(const LdapControl &that)
+ : d(that.d)
+{
+ setControl(that.d->mOid, that.d->mValue, that.d->mCritical);
+}
+
+LdapControl &LdapControl::operator=(const LdapControl &that)
+{
+ if (this != &that) {
+ d = that.d;
+ }
+
+ setControl(that.d->mOid, that.d->mValue, that.d->mCritical);
+
+ return *this;
+}
+
+LdapControl::~LdapControl() = default;
+
+void LdapControl::setControl(const QString &oid, const QByteArray &value, bool critical)
+{
+ d->mOid = oid;
+ d->mValue = value;
+ d->mCritical = critical;
+}
+
+QString LdapControl::oid() const
+{
+ return d->mOid;
+}
+
+QByteArray LdapControl::value() const
+{
+ return d->mValue;
+}
+
+bool LdapControl::critical() const
+{
+ return d->mCritical;
+}
+
+void LdapControl::setOid(const QString &oid)
+{
+ d->mOid = oid;
+}
+
+void LdapControl::setValue(const QByteArray &value)
+{
+ d->mValue = value;
+}
+
+void LdapControl::setCritical(bool critical)
+{
+ d->mCritical = critical;
+}
+
+int LdapControl::parsePageControl(QByteArray &cookie) const
+{
+ if (d->mOid != QLatin1String("1.2.840.113556.1.4.319")) {
+ return -1;
+ }
+
+ Ber ber(d->mValue);
+ int size;
+ if (ber.scanf(QStringLiteral("{iO}"), &size, &cookie) == -1) {
+ return -1;
+ } else {
+ return size;
+ }
+}
+
+LdapControl LdapControl::createPageControl(int pagesize, const QByteArray &cookie)
+{
+ LdapControl control;
+ Ber ber;
+
+ ber.printf(QStringLiteral("{iO}"), pagesize, &cookie);
+ control.setOid(QStringLiteral("1.2.840.113556.1.4.319"));
+ control.setValue(ber.flatten());
+ return control;
+}
+
+void LdapControl::insert(LdapControls &list, const LdapControl &ctrl)
+{
+ LdapControls::iterator it;
+ LdapControls::iterator endit = list.end();
+ const QString oid = ctrl.oid();
+
+ for (it = list.begin(); it != endit; ++it) {
+ if (it->oid() == oid) {
+ *it = ctrl;
+ return;
+ }
+ }
+ list.append(ctrl);
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QSharedDataPointer>
+#include <QString>
+#include <QVector>
+class LdapControlPrivate;
+
+#include "kldap_export.h"
+
+// clazy:excludeall=copyable-polymorphic
+
+namespace KLDAP
+{
+class LdapControl;
+using LdapControls = QVector<LdapControl>;
+
+/**
+ @brief
+ This class represents an LDAP Control
+*/
+class KLDAP_EXPORT LdapControl
+{
+public:
+ /**
+ * Creates an empty control.
+ */
+ LdapControl();
+ /**
+ * Creates a control with the given OID, value and criticality.
+ */
+ LdapControl(const QString &oid, const QByteArray &value, bool critical = false);
+
+ LdapControl(const LdapControl &that);
+ LdapControl &operator=(const LdapControl &that);
+ /**
+ * Destroys the control object.
+ */
+ ~LdapControl();
+ /**
+ * Sets the control's OID, value and criticality.
+ */
+ void setControl(const QString &oid, const QByteArray &value, bool critical = false);
+ /**
+ * Sets the control's OID.
+ */
+ void setOid(const QString &oid);
+ /**
+ * Sets the control's value.
+ */
+ void setValue(const QByteArray &value);
+ /**
+ * Sets the control's criticality.
+ */
+ void setCritical(bool critical);
+ /**
+ * Returns the control's OID.
+ */
+ Q_REQUIRED_RESULT QString oid() const;
+ /**
+ * Returns the control's value.
+ */
+ Q_REQUIRED_RESULT QByteArray value() const;
+ /**
+ * Returns the control's criticality.
+ */
+ Q_REQUIRED_RESULT bool critical() const;
+
+ /**
+ * Parses a paging results control, which the server returned.
+ * Puts the server's cookie into @p cookie, and returns the estimated
+ * result set size. If the OID is not the page control's OID, or the
+ * value cannot be decoded, returns -1.
+ * @param cookie the cookie to hold server's cookie
+ */
+ Q_REQUIRED_RESULT int parsePageControl(QByteArray &cookie) const;
+ /**
+ * Creates a paging search control.
+ */
+ Q_REQUIRED_RESULT static LdapControl createPageControl(int pagesize, const QByteArray &cookie = QByteArray());
+
+ /**
+ * Inserts a unique control against a list of controls.
+ * If the control already exists in the list is is updated, otherwise
+ * it is appended to the list.
+ * @param list the current list of controls
+ * @param ctrl the control to insert
+ * @since 4.4
+ */
+ static void insert(LdapControls &list, const LdapControl &ctrl);
+
+private:
+ QSharedDataPointer<LdapControlPrivate> d;
+};
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+/**
+ * LDAP Error codes.
+ * These codes taken from openldap's ldap.h, and prefixed with KLDAP_
+ * instead of LDAP_, just for applications which uses the kldap library
+ * doesn't need to include openldap headers
+ */
+
+#define KLDAP_SUCCESS 0x00
+
+#define KLDAP_RANGE(n, x, y) (((x) <= (n)) && ((n) <= (y)))
+
+#define KLDAP_OPERATIONS_ERROR 0x01
+#define KLDAP_PROTOCOL_ERROR 0x02
+#define KLDAP_TIMELIMIT_EXCEEDED 0x03
+#define KLDAP_SIZELIMIT_EXCEEDED 0x04
+#define KLDAP_COMPARE_FALSE 0x05
+#define KLDAP_COMPARE_TRUE 0x06
+#define KLDAP_AUTH_METHOD_NOT_SUPPORTED 0x07
+#define KLDAP_STRONG_AUTH_NOT_SUPPORTED KLDAP_AUTH_METHOD_NOT_SUPPORTED
+#define KLDAP_STRONG_AUTH_REQUIRED 0x08
+#define KLDAP_STRONGER_AUTH_REQUIRED KLDAP_STRONG_AUTH_REQUIRED
+#define KLDAP_PARTIAL_RESULTS 0x09 /* LDAPv2+ (not LDAPv3) */
+
+#define KLDAP_REFERRAL 0x0a /* LDAPv3 */
+#define KLDAP_ADMINLIMIT_EXCEEDED 0x0b /* LDAPv3 */
+#define KLDAP_UNAVAILABLE_CRITICAL_EXTENSION 0x0c /* LDAPv3 */
+#define KLDAP_CONFIDENTIALITY_REQUIRED 0x0d /* LDAPv3 */
+#define KLDAP_SASL_BIND_IN_PROGRESS 0x0e /* LDAPv3 */
+
+#define KLDAP_ATTR_ERROR(n) KLDAP_RANGE((n), 0x10, 0x15) /* 16-21 */
+
+#define KLDAP_NO_SUCH_ATTRIBUTE 0x10
+#define KLDAP_UNDEFINED_TYPE 0x11
+#define KLDAP_INAPPROPRIATE_MATCHING 0x12
+#define KLDAP_CONSTRAINT_VIOLATION 0x13
+#define KLDAP_TYPE_OR_VALUE_EXISTS 0x14
+#define KLDAP_INVALID_SYNTAX 0x15
+
+#define KLDAP_NAME_ERROR(n) KLDAP_RANGE((n), 0x20, 0x24) /* 32-34,36 */
+
+#define KLDAP_NO_SUCH_OBJECT 0x20
+#define KLDAP_ALIAS_PROBLEM 0x21
+#define KLDAP_INVALID_DN_SYNTAX 0x22
+#define KLDAP_IS_LEAF 0x23 /* not LDAPv3 */
+#define KLDAP_ALIAS_DEREF_PROBLEM 0x24
+
+#define KLDAP_SECURITY_ERROR(n) KLDAP_RANGE((n), 0x2F, 0x32) /* 47-50 */
+
+#define KLDAP_PROXY_AUTHZ_FAILURE 0x2F /* LDAPv3 proxy authorization */
+#define KLDAP_INAPPROPRIATE_AUTH 0x30
+#define KLDAP_INVALID_CREDENTIALS 0x31
+#define KLDAP_INSUFFICIENT_ACCESS 0x32
+
+#define KLDAP_SERVICE_ERROR(n) KLDAP_RANGE((n), 0x33, 0x36) /* 51-54 */
+
+#define KLDAP_BUSY 0x33
+#define KLDAP_UNAVAILABLE 0x34
+#define KLDAP_UNWILLING_TO_PERFORM 0x35
+#define KLDAP_LOOP_DETECT 0x36
+
+#define KLDAP_UPDATE_ERROR(n) KLDAP_RANGE((n), 0x40, 0x47) /* 64-69,71 */
+
+#define KLDAP_NAMING_VIOLATION 0x40
+#define KLDAP_OBJECT_CLASS_VIOLATION 0x41
+#define KLDAP_NOT_ALLOWED_ON_NONLEAF 0x42
+#define KLDAP_NOT_ALLOWED_ON_RDN 0x43
+#define KLDAP_ALREADY_EXISTS 0x44
+#define KLDAP_NO_OBJECT_CLASS_MODS 0x45
+#define KLDAP_RESULTS_TOO_LARGE 0x46 /* CLDAP */
+#define KLDAP_AFFECTS_MULTIPLE_DSAS 0x47
+
+#define KLDAP_OTHER 0x50
+
+/* LCUP operation codes (113-117) - not implemented */
+#define KLDAP_CUP_RESOURCES_EXHAUSTED 0x71
+#define KLDAP_CUP_SECURITY_VIOLATION 0x72
+#define KLDAP_CUP_INVALID_DATA 0x73
+#define KLDAP_CUP_UNSUPPORTED_SCHEME 0x74
+#define KLDAP_CUP_RELOAD_REQUIRED 0x75
+
+/* Cancel operation codes (118-121) */
+#define KLDAP_CANCELLED 0x76
+#define KLDAP_NO_SUCH_OPERATION 0x77
+#define KLDAP_TOO_LATE 0x78
+
+#define KLDAP_CANNOT_CANCEL 0x79
+
+/* Assertion control (122) */
+#define KLDAP_ASSERTION_FAILED 0x7A
+
+/* Experimental result codes */
+#define KLDAP_E_ERROR(n) KLDAP_RANGE((n), 0x1000, 0x3FFF)
+
+/* LDAP Sync (4096) */
+#define KLDAP_SYNC_REFRESH_REQUIRED 0x1000
+
+/* Private Use result codes */
+#define KLDAP_X_ERROR(n) KLDAP_RANGE((n), 0x4000, 0xFFFF)
+
+#define KLDAP_X_SYNC_REFRESH_REQUIRED 0x4100 /* defunct */
+#define KLDAP_X_ASSERTION_FAILED 0x410f /* defunct */
+
+/* for the LDAP No-Op control */
+#define KLDAP_X_NO_OPERATION 0x410e
+
+/** API Error Codes
+ *
+ * Based on draft-ietf-ldap-c-api-xx
+ * but with new negative code values
+ */
+#define KLDAP_API_ERROR(n) ((n) < 0)
+#define KLDAP_API_RESULT(n) ((n) <= 0)
+
+#define KLDAP_SERVER_DOWN (-1)
+#define KLDAP_LOCAL_ERROR (-2)
+#define KLDAP_ENCODING_ERROR (-3)
+#define KLDAP_DECODING_ERROR (-4)
+#define KLDAP_TIMEOUT (-5)
+#define KLDAP_AUTH_UNKNOWN (-6)
+#define KLDAP_FILTER_ERROR (-7)
+#define KLDAP_USER_CANCELLED (-8)
+#define KLDAP_PARAM_ERROR (-9)
+#define KLDAP_NO_MEMORY (-10)
+#define KLDAP_CONNECT_ERROR (-11)
+#define KLDAP_NOT_SUPPORTED (-12)
+#define KLDAP_CONTROL_NOT_FOUND (-13)
+#define KLDAP_NO_RESULTS_RETURNED (-14)
+#define KLDAP_MORE_RESULTS_TO_RETURN (-15) /* Obsolete */
+#define KLDAP_CLIENT_LOOP (-16)
+#define KLDAP_REFERRAL_LIMIT_EXCEEDED (-17)
+
+/*
+ * KLDAP Specific
+ */
+
+#define KLDAP_SASL_ERROR -0xff
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2006 Sean Harmer <sh@theharmers.co.uk>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldapdn.h"
+
+#include "ldap_debug.h"
+#include <algorithm>
+
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN LdapDN::LdapDNPrivate
+{
+public:
+ LdapDNPrivate() = default;
+
+ ~LdapDNPrivate() = default;
+
+ Q_REQUIRED_RESULT bool isValidRDNString(const QString &rdn) const;
+ Q_REQUIRED_RESULT QStringList splitOnNonEscapedChar(const QString &rdn, QChar ch) const;
+
+ QString m_dn;
+};
+
+bool LdapDN::LdapDNPrivate::isValidRDNString(const QString &rdn) const
+{
+ qCDebug(LDAP_LOG) << "Testing rdn:" << rdn;
+
+ // If it is a muli-valued rdn, split it into its constituent parts
+ const QStringList rdnParts = splitOnNonEscapedChar(rdn, QLatin1Char('+'));
+ const int rdnPartsSize(rdnParts.size());
+ if (rdnPartsSize > 1) {
+ for (int i = 0; i < rdnPartsSize; i++) {
+ if (!isValidRDNString(rdnParts.at(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+ // Split the rdn into the attribute name and value parts
+ const auto components = QStringView(rdn).split(QLatin1Char('='));
+ // We should have exactly two parts
+ if (components.size() != 2) {
+ return false;
+ }
+
+ return true;
+}
+
+QStringList LdapDN::LdapDNPrivate::splitOnNonEscapedChar(const QString &str, QChar ch) const
+{
+ QStringList strParts;
+ int index = 0;
+ int searchFrom = 0;
+ int strPartStartIndex = 0;
+ while ((index = str.indexOf(ch, searchFrom)) != -1) {
+ const QChar prev = str[std::max(0, index - 1)];
+ if (prev != QLatin1Char('\\')) {
+ // Found a component of a multi-valued RDN
+ // qCDebug(LDAP_LOG) << "Found" << ch << "at index" << index;
+ QString tmp = str.mid(strPartStartIndex, index - strPartStartIndex);
+ // qCDebug(LDAP_LOG) << "Adding part:" << tmp;
+ strParts.append(tmp);
+ strPartStartIndex = index + 1;
+ }
+
+ searchFrom = index + 1;
+ }
+
+ // Add on the part after the last found delimiter
+ QString tmp = str.mid(strPartStartIndex);
+ // qCDebug(LDAP_LOG) << "Adding part:" << tmp;
+ strParts.append(tmp);
+
+ return strParts;
+}
+
+LdapDN::LdapDN()
+ : d(new LdapDNPrivate)
+{
+}
+
+LdapDN::LdapDN(const QString &dn)
+ : d(new LdapDNPrivate)
+{
+ d->m_dn = dn;
+}
+
+LdapDN::LdapDN(const LdapDN &that)
+ : d(new LdapDNPrivate)
+{
+ *d = *that.d;
+}
+
+LdapDN &LdapDN::operator=(const LdapDN &that)
+{
+ if (this == &that) {
+ return *this;
+ }
+
+ *d = *that.d;
+ return *this;
+}
+
+LdapDN::~LdapDN() = default;
+
+void LdapDN::clear()
+{
+ d->m_dn.clear();
+}
+
+bool LdapDN::isEmpty() const
+{
+ return d->m_dn.isEmpty();
+}
+
+QString LdapDN::toString() const
+{
+ return d->m_dn;
+}
+
+QString LdapDN::toString(int depth) const
+{
+ const QStringList rdns = d->splitOnNonEscapedChar(d->m_dn, QLatin1Char(','));
+ if (depth >= rdns.size()) {
+ return {};
+ }
+
+ // Construct a DN down to the requested depth
+ QString dn;
+ for (int i = depth; i >= 0; i--) {
+ dn += rdns.at(rdns.size() - 1 - i) + QLatin1Char(',');
+ qCDebug(LDAP_LOG) << "dn =" << dn;
+ }
+ dn.chop(1); // Strip off the extraneous comma
+
+ return dn;
+}
+
+QString LdapDN::rdnString() const
+{
+ /** \TODO We should move this into the d pointer as we calculate rdns quite a lot */
+ const QStringList rdns = d->splitOnNonEscapedChar(d->m_dn, QLatin1Char(','));
+ return rdns.at(0);
+}
+
+QString LdapDN::rdnString(int depth) const
+{
+ const QStringList rdns = d->splitOnNonEscapedChar(d->m_dn, QLatin1Char(','));
+ if (depth >= rdns.size()) {
+ return {};
+ }
+ return rdns.at(rdns.size() - 1 - depth);
+}
+
+bool LdapDN::isValid() const
+{
+ qCDebug(LDAP_LOG) << "Testing dn:" << d->m_dn;
+
+ // Break the string into rdn's
+ const QStringList rdns = d->splitOnNonEscapedChar(d->m_dn, QLatin1Char(','));
+
+ // Test to see if each rdn is valid
+ const int rdnsSize(rdns.size());
+ for (int i = 0; i < rdnsSize; i++) {
+ if (!d->isValidRDNString(rdns.at(i))) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+int LdapDN::depth() const
+{
+ const QStringList rdns = d->splitOnNonEscapedChar(d->m_dn, QLatin1Char(','));
+ return rdns.size();
+}
+
+bool LdapDN::operator==(const LdapDN &rhs) const
+{
+ return d->m_dn == rhs.d->m_dn;
+}
+
+bool LdapDN::operator!=(const LdapDN &rhs) const
+{
+ return d->m_dn != rhs.d->m_dn;
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2006 Sean Harmer <sh@theharmers.co.uk>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include "kldap_export.h"
+#include <QString>
+#include <memory>
+namespace KLDAP
+{
+class KLDAP_EXPORT LdapDN
+{
+public:
+ explicit LdapDN();
+ explicit LdapDN(const QString &dn);
+
+ LdapDN(const LdapDN &that);
+ LdapDN &operator=(const LdapDN &that);
+
+ ~LdapDN();
+
+ void clear();
+
+ bool isEmpty() const;
+
+ /**
+ * \returns A QString representing the DN.
+ */
+ Q_REQUIRED_RESULT QString toString() const;
+
+ /**
+ * \param depth The depth of the DN to return using a zero-based index.
+ * \returns A QString representing the DN levels deep in the directory.
+ */
+ Q_REQUIRED_RESULT QString toString(int depth) const;
+
+ /**
+ * \returns A QString representing the RDN of this DN.
+ */
+ Q_REQUIRED_RESULT QString rdnString() const;
+
+ /**
+ * \param depth The depth of the RDN to return using a zero-based index.
+ * \returns A QString representing the RDN levels deep in the directory.
+ */
+ Q_REQUIRED_RESULT QString rdnString(int depth) const;
+
+ /**
+ * \returns True if this is a valid DN, false otherwise.
+ */
+ Q_REQUIRED_RESULT bool isValid() const;
+
+ /**
+ * \returns The depth of this DN in the directory.
+ */
+ Q_REQUIRED_RESULT int depth() const;
+
+ Q_REQUIRED_RESULT bool operator==(const LdapDN &rhs) const;
+
+ Q_REQUIRED_RESULT bool operator!=(const LdapDN &rhs) const;
+
+private:
+ class LdapDNPrivate;
+ std::unique_ptr<LdapDNPrivate> const d;
+};
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldapobject.h"
+#include "ldif.h"
+
+#include <QSharedData>
+
+using namespace KLDAP;
+
+class LdapObjectPrivate : public QSharedData
+{
+public:
+ LdapObjectPrivate() = default;
+
+ LdapObjectPrivate(const LdapObjectPrivate &other)
+ : QSharedData(other)
+ {
+ mDn = other.mDn;
+ mAttrs = other.mAttrs;
+ }
+
+ LdapDN mDn;
+ LdapAttrMap mAttrs;
+};
+
+LdapObject::LdapObject()
+ : d(new LdapObjectPrivate)
+{
+}
+
+LdapObject::LdapObject(const QString &dn)
+ : d(new LdapObjectPrivate)
+{
+ d->mDn = LdapDN(dn);
+}
+
+LdapObject::~LdapObject() = default;
+
+LdapObject::LdapObject(const LdapObject &that)
+
+ = default;
+
+LdapObject &LdapObject::operator=(const LdapObject &that)
+{
+ if (this != &that) {
+ d = that.d;
+ }
+
+ return *this;
+}
+
+void LdapObject::setDn(const LdapDN &dn)
+{
+ d->mDn = dn;
+}
+
+void LdapObject::setDn(const QString &dn)
+{
+ d->mDn = LdapDN(dn);
+}
+
+void LdapObject::setAttributes(const LdapAttrMap &attrs)
+{
+ d->mAttrs = attrs;
+}
+
+LdapDN LdapObject::dn() const
+{
+ return d->mDn;
+}
+
+const LdapAttrMap &LdapObject::attributes() const
+{
+ return d->mAttrs;
+}
+
+QString LdapObject::toString() const
+{
+ QString result = QStringLiteral("dn: %1\n").arg(d->mDn.toString());
+ LdapAttrMap::ConstIterator end(d->mAttrs.constEnd());
+ for (LdapAttrMap::ConstIterator it = d->mAttrs.constBegin(); it != end; ++it) {
+ const QString attr = it.key();
+ LdapAttrValue::ConstIterator end2((*it).constEnd());
+ for (LdapAttrValue::ConstIterator it2 = (*it).constBegin(); it2 != end2; ++it2) {
+ result += QString::fromUtf8(Ldif::assembleLine(attr, *it2, 76)) + QLatin1Char('\n');
+ }
+ }
+ return result;
+}
+
+void LdapObject::clear()
+{
+ d->mDn.clear();
+ d->mAttrs.clear();
+}
+
+void LdapObject::setValues(const QString &attributeName, const LdapAttrValue &values)
+{
+ d->mAttrs[attributeName] = values;
+}
+
+void LdapObject::addValue(const QString &attributeName, const QByteArray &value)
+{
+ d->mAttrs[attributeName].append(value);
+}
+
+LdapAttrValue LdapObject::values(const QString &attributeName) const
+{
+ if (hasAttribute(attributeName)) {
+ return d->mAttrs.value(attributeName);
+ } else {
+ return {};
+ }
+}
+
+QByteArray LdapObject::value(const QString &attributeName) const
+{
+ if (hasAttribute(attributeName)) {
+ return d->mAttrs.value(attributeName).first();
+ } else {
+ return {};
+ }
+}
+
+bool LdapObject::hasAttribute(const QString &attributeName) const
+{
+ return d->mAttrs.contains(attributeName);
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QList>
+#include <QMap>
+#include <QSharedDataPointer>
+#include <QString>
+class LdapObjectPrivate;
+
+#include "kldap_export.h"
+#include "ldapdn.h"
+
+// clazy:excludeall=copyable-polymorphic
+
+namespace KLDAP
+{
+using LdapAttrValue = QList<QByteArray>;
+using LdapAttrMap = QMap<QString, LdapAttrValue>;
+
+/**
+ * @brief
+ * This class represents an LDAP Object
+ */
+class KLDAP_EXPORT LdapObject
+{
+public:
+ LdapObject();
+ explicit LdapObject(const QString &dn);
+ ~LdapObject();
+
+ LdapObject(const LdapObject &that);
+ LdapObject &operator=(const LdapObject &that);
+
+ /**
+ * Returns the text presentation (LDIF format) of the object.
+ */
+ Q_REQUIRED_RESULT QString toString() const;
+
+ /**
+ * Clears the name and attributes of the object.
+ */
+ void clear();
+ /**
+ * Sets the Distinguished Name of the object.
+ */
+ void setDn(const LdapDN &dn);
+ /**
+ * Sets the Distinguished Name of the object.
+ */
+ void setDn(const QString &dn);
+ /**
+ * Sets the attributes and attribute values of the object.
+ */
+ void setAttributes(const LdapAttrMap &attrs);
+ /**
+ * Sets the given attribute values. If the given attribute not exists,
+ * then it's created, if exists, it's overwritten.
+ * @param attributeName the attribute name for which to set values
+ * @param values the values of attribute to set
+ */
+ void setValues(const QString &attributeName, const LdapAttrValue &values);
+ /**
+ * Adds the given value to the specified attribute. If the given attribute
+ * not exists, then it's created.
+ * @param attributeName the attribute for which to add a value
+ * @param value the attribute value to add
+ */
+ void addValue(const QString &attributeName, const QByteArray &value);
+ /**
+ * Return the Distinguished Name of the object.
+ */
+ Q_REQUIRED_RESULT LdapDN dn() const;
+ /**
+ * Returns the attributes and their values.
+ */
+ const LdapAttrMap &attributes() const;
+ /**
+ * Returns all values of the attribute with the given name.
+ */
+ Q_REQUIRED_RESULT LdapAttrValue values(const QString &attributeName) const;
+ /**
+ * Returns the first value of the attribute with the given name
+ * or an empty byte array if the attribute does not exists.
+ */
+ Q_REQUIRED_RESULT QByteArray value(const QString &attributeName) const;
+ /**
+ * Returns true if the given attributethe exists, false otherwise.
+ */
+ Q_REQUIRED_RESULT bool hasAttribute(const QString &attributeName) const;
+
+private:
+ QSharedDataPointer<LdapObjectPrivate> d;
+};
+
+using LdapObjects = QVector<LdapObject>;
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldapoperation.h"
+#include "kldap_config.h"
+
+#include "ldap_debug.h"
+
+#include <QElapsedTimer>
+
+#include <cstdlib>
+
+// for struct timeval
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#elif defined(_WIN32)
+#include <winsock2.h>
+#endif
+
+#include <sasl/sasl.h>
+
+#if LDAP_FOUND
+#if !HAVE_WINLDAP_H
+#include <lber.h>
+#include <ldap.h>
+#else
+#include <w32-ldap-help.h>
+#endif // HAVE_WINLDAP_H
+#endif // LDAP_FOUND
+
+#include "ldapdefs.h"
+
+using namespace KLDAP;
+
+#if LDAP_FOUND
+static void extractControls(LdapControls &ctrls, LDAPControl **pctrls);
+#endif // LDAP_FOUND
+
+/*
+ Returns the difference between msecs and elapsed. If msecs is -1,
+ however, -1 is returned.
+*/
+static int kldap_timeout_value(int msecs, int elapsed)
+{
+ if (msecs == -1) {
+ return -1;
+ }
+
+ int timeout = msecs - elapsed;
+ return timeout < 0 ? 0 : timeout;
+}
+
+class Q_DECL_HIDDEN LdapOperation::LdapOperationPrivate
+{
+public:
+ LdapOperationPrivate();
+ ~LdapOperationPrivate();
+#if LDAP_FOUND
+ int processResult(int rescode, LDAPMessage *msg);
+ int bind(const QByteArray &creds, SASL_Callback_Proc *saslproc, void *data, bool async);
+#endif
+ LdapControls mClientCtrls, mServerCtrls, mControls;
+ LdapObject mObject;
+ QByteArray mExtOid, mExtData;
+ QByteArray mServerCred;
+ QString mMatchedDn;
+ QList<QByteArray> mReferrals;
+
+ LdapConnection *mConnection = nullptr;
+};
+
+LdapOperation::LdapOperation()
+ : d(new LdapOperationPrivate)
+{
+ d->mConnection = nullptr;
+}
+
+LdapOperation::LdapOperation(LdapConnection &conn)
+ : d(new LdapOperationPrivate)
+{
+ setConnection(conn);
+}
+
+LdapOperation::~LdapOperation() = default;
+
+void LdapOperation::setConnection(LdapConnection &conn)
+{
+ d->mConnection = &conn;
+}
+
+LdapConnection &LdapOperation::connection()
+{
+ return *d->mConnection;
+}
+
+void LdapOperation::setClientControls(const LdapControls &ctrls)
+{
+ d->mClientCtrls = ctrls;
+}
+
+void LdapOperation::setServerControls(const LdapControls &ctrls)
+{
+ d->mServerCtrls = ctrls;
+}
+
+LdapControls LdapOperation::clientControls() const
+{
+ return d->mClientCtrls;
+}
+
+LdapControls LdapOperation::serverControls() const
+{
+ return d->mServerCtrls;
+}
+
+LdapObject LdapOperation::object() const
+{
+ return d->mObject;
+}
+
+LdapControls LdapOperation::controls() const
+{
+ return d->mControls;
+}
+
+QByteArray LdapOperation::extendedOid() const
+{
+ return d->mExtOid;
+}
+
+QByteArray LdapOperation::extendedData() const
+{
+ return d->mExtData;
+}
+
+QString LdapOperation::matchedDn() const
+{
+ return d->mMatchedDn;
+}
+
+QList<QByteArray> LdapOperation::referrals() const
+{
+ return d->mReferrals;
+}
+
+QByteArray LdapOperation::serverCred() const
+{
+ return d->mServerCred;
+}
+
+LdapOperation::LdapOperationPrivate::LdapOperationPrivate() = default;
+
+LdapOperation::LdapOperationPrivate::~LdapOperationPrivate() = default;
+
+#if LDAP_FOUND
+
+static int kldap_sasl_interact(sasl_interact_t *interact, LdapOperation::SASL_Data *data)
+{
+ if (data->proc) {
+ for (; interact->id != SASL_CB_LIST_END; interact++) {
+ switch (interact->id) {
+ case SASL_CB_GETREALM:
+ data->creds.fields |= LdapOperation::SASL_Realm;
+ break;
+ case SASL_CB_AUTHNAME:
+ data->creds.fields |= LdapOperation::SASL_Authname;
+ break;
+ case SASL_CB_PASS:
+ data->creds.fields |= LdapOperation::SASL_Password;
+ break;
+ case SASL_CB_USER:
+ data->creds.fields |= LdapOperation::SASL_Authzid;
+ break;
+ }
+ }
+ int retval;
+ if ((retval = data->proc(data->creds, data->data))) {
+ return retval;
+ }
+ }
+
+ QString value;
+
+ while (interact->id != SASL_CB_LIST_END) {
+ value.clear();
+ switch (interact->id) {
+ case SASL_CB_GETREALM:
+ value = data->creds.realm;
+ qCDebug(LDAP_LOG) << "SASL_REALM=" << value;
+ break;
+ case SASL_CB_AUTHNAME:
+ value = data->creds.authname;
+ qCDebug(LDAP_LOG) << "SASL_AUTHNAME=" << value;
+ break;
+ case SASL_CB_PASS:
+ value = data->creds.password;
+ qCDebug(LDAP_LOG) << "SASL_PASSWD=[hidden]";
+ break;
+ case SASL_CB_USER:
+ value = data->creds.authzid;
+ qCDebug(LDAP_LOG) << "SASL_AUTHZID=" << value;
+ break;
+ }
+ if (value.isEmpty()) {
+ interact->result = nullptr;
+ interact->len = 0;
+ } else {
+ interact->result = strdup(value.toUtf8().constData());
+ interact->len = strlen((const char *)interact->result);
+ }
+ interact++;
+ }
+ return KLDAP_SUCCESS;
+}
+
+int LdapOperation::LdapOperationPrivate::bind(const QByteArray &creds, SASL_Callback_Proc *saslproc, void *data, bool async)
+{
+ Q_ASSERT(mConnection);
+ LDAP *ld = (LDAP *)mConnection->handle();
+ LdapServer server;
+ server = mConnection->server();
+
+ int ret;
+
+ if (server.auth() == LdapServer::SASL) {
+#if !defined(HAVE_WINLDAP_H)
+ auto saslconn = (sasl_conn_t *)mConnection->saslHandle();
+ sasl_interact_t *client_interact = nullptr;
+ const char *out = nullptr;
+ uint outlen;
+ const char *mechusing = nullptr;
+ struct berval ccred;
+ struct berval *scred;
+ int saslresult;
+ QByteArray sdata = creds;
+
+ QString mech = server.mech();
+ if (mech.isEmpty()) {
+ mech = QStringLiteral("DIGEST-MD5");
+ }
+
+ SASL_Data sasldata;
+ sasldata.proc = saslproc;
+ sasldata.data = data;
+ sasldata.creds.fields = 0;
+ sasldata.creds.realm = server.realm();
+ sasldata.creds.authname = server.user();
+ sasldata.creds.authzid = server.bindDn();
+ sasldata.creds.password = server.password();
+
+ do {
+ if (sdata.isEmpty()) {
+ do {
+ saslresult = sasl_client_start(saslconn, mech.toLatin1().constData(), &client_interact, &out, &outlen, &mechusing);
+
+ if (saslresult == SASL_INTERACT) {
+ if (kldap_sasl_interact(client_interact, &sasldata) != KLDAP_SUCCESS) {
+ return KLDAP_SASL_ERROR;
+ }
+ }
+ qCDebug(LDAP_LOG) << "sasl_client_start mech: " << mechusing << " outlen " << outlen << " result: " << saslresult;
+ } while (saslresult == SASL_INTERACT);
+ if (saslresult != SASL_CONTINUE && saslresult != SASL_OK) {
+ return KLDAP_SASL_ERROR;
+ }
+ } else {
+ qCDebug(LDAP_LOG) << "sasl_client_step";
+ do {
+ saslresult = sasl_client_step(saslconn, sdata.data(), sdata.size(), &client_interact, &out, &outlen);
+ if (saslresult == SASL_INTERACT) {
+ if (kldap_sasl_interact(client_interact, &sasldata) != KLDAP_SUCCESS) {
+ return KLDAP_SASL_ERROR;
+ }
+ }
+ } while (saslresult == SASL_INTERACT);
+ qCDebug(LDAP_LOG) << "sasl_client_step result" << saslresult;
+ if (saslresult != SASL_CONTINUE && saslresult != SASL_OK) {
+ return KLDAP_SASL_ERROR;
+ }
+ }
+
+ ccred.bv_val = (char *)out;
+ ccred.bv_len = outlen;
+
+ if (async) {
+ qCDebug(LDAP_LOG) << "ldap_sasl_bind";
+ int msgid;
+ ret = ldap_sasl_bind(ld, server.bindDn().toUtf8().constData(), mech.toLatin1().constData(), &ccred, nullptr, nullptr, &msgid);
+ if (ret == 0) {
+ ret = msgid;
+ }
+ qCDebug(LDAP_LOG) << "ldap_sasl_bind msgid" << ret;
+ } else {
+ qCDebug(LDAP_LOG) << "ldap_sasl_bind_s";
+ ret = ldap_sasl_bind_s(ld, server.bindDn().toUtf8().constData(), mech.toLatin1().constData(), &ccred, nullptr, nullptr, &scred);
+ qCDebug(LDAP_LOG) << "ldap_sasl_bind_s ret" << ret;
+ if (scred) {
+ sdata = QByteArray(scred->bv_val, scred->bv_len);
+ } else {
+ sdata = QByteArray();
+ }
+ }
+ } while (!async && ret == KLDAP_SASL_BIND_IN_PROGRESS);
+#else
+ qCritical() << "SASL authentication is not available "
+ << "(re-compile kldap with cyrus-sasl and OpenLDAP development).";
+ return KLDAP_SASL_ERROR;
+#endif
+ } else { // simple auth
+ QByteArray bindname;
+ QByteArray pass;
+ struct berval ccred;
+ if (server.auth() == LdapServer::Simple) {
+ bindname = server.bindDn().toUtf8();
+ pass = server.password().toUtf8();
+ }
+ ccred.bv_val = pass.data();
+ ccred.bv_len = pass.size();
+ qCDebug(LDAP_LOG) << "binding to server, bindname: " << bindname << " password: *****";
+
+ if (async) {
+ qCDebug(LDAP_LOG) << "ldap_sasl_bind (simple)";
+#if !HAVE_WINLDAP_H
+ int msgid = 0;
+ ret = ldap_sasl_bind(ld, bindname.data(), nullptr, &ccred, nullptr, nullptr, &msgid);
+ if (ret == 0) {
+ ret = msgid;
+ }
+#else
+ ret = ldap_simple_bind(ld, bindname.data(), pass.data());
+#endif
+ } else {
+ qCDebug(LDAP_LOG) << "ldap_sasl_bind_s (simple)";
+#if !HAVE_WINLDAP_H
+ ret = ldap_sasl_bind_s(ld, bindname.data(), nullptr, &ccred, nullptr, nullptr, nullptr);
+#else
+ ret = ldap_simple_bind_s(ld, bindname.data(), pass.data());
+#endif
+ }
+ }
+ return ret;
+}
+
+int LdapOperation::LdapOperationPrivate::processResult(int rescode, LDAPMessage *msg)
+{
+ // qCDebug(LDAP_LOG);
+ int retval;
+ LDAP *ld = (LDAP *)mConnection->handle();
+
+ qCDebug(LDAP_LOG) << "rescode: " << rescode;
+ switch (rescode) {
+ case RES_SEARCH_ENTRY: {
+ // qCDebug(LDAP_LOG) << "Found search entry";
+ mObject.clear();
+ LdapAttrMap attrs;
+ char *name;
+ struct berval **bvals;
+ BerElement *entry;
+ LdapAttrValue values;
+
+ char *dn = ldap_get_dn(ld, msg);
+ mObject.setDn(QString::fromUtf8(dn));
+ ldap_memfree(dn);
+
+ // iterate over the attributes
+ name = ldap_first_attribute(ld, msg, &entry);
+ while (name != nullptr) {
+ // print the values
+ bvals = ldap_get_values_len(ld, msg, name);
+ if (bvals) {
+ for (int i = 0; bvals[i] != nullptr; i++) {
+ char *val = bvals[i]->bv_val;
+ unsigned long len = bvals[i]->bv_len;
+ values.append(QByteArray(val, len));
+ }
+ ldap_value_free_len(bvals);
+ }
+ attrs[QString::fromLatin1(name)] = values;
+ values.clear();
+ ldap_memfree(name);
+
+ // next attribute
+ name = ldap_next_attribute(ld, msg, entry);
+ }
+ ber_free(entry, 0);
+ mObject.setAttributes(attrs);
+ break;
+ }
+ case RES_SEARCH_REFERENCE:
+ // Will only get this if following references is disabled. ignore it
+ rescode = 0;
+ break;
+ case RES_EXTENDED: {
+ char *retoid;
+ struct berval *retdata;
+ retval = ldap_parse_extended_result(ld, msg, &retoid, &retdata, 0);
+ if (retval != KLDAP_SUCCESS) {
+ ldap_msgfree(msg);
+ return -1;
+ }
+ mExtOid = retoid ? QByteArray(retoid) : QByteArray();
+ mExtData = retdata ? QByteArray(retdata->bv_val, retdata->bv_len) : QByteArray();
+ ldap_memfree(retoid);
+ ber_bvfree(retdata);
+ break;
+ }
+ case RES_BIND: {
+ struct berval *servercred = nullptr;
+#if !HAVE_WINLDAP_H
+ // FIXME: Error handling Winldap does not have ldap_parse_sasl_bind_result
+ retval = ldap_parse_sasl_bind_result(ld, msg, &servercred, 0);
+#else
+ retval = KLDAP_SUCCESS;
+#endif
+ if (retval != KLDAP_SUCCESS && retval != KLDAP_SASL_BIND_IN_PROGRESS) {
+ qCDebug(LDAP_LOG) << "RES_BIND error: " << retval;
+ ldap_msgfree(msg);
+ return -1;
+ }
+ qCDebug(LDAP_LOG) << "RES_BIND rescode" << rescode << "retval:" << retval;
+ if (servercred) {
+ mServerCred = QByteArray(servercred->bv_val, servercred->bv_len);
+ ber_bvfree(servercred);
+ } else {
+ mServerCred = QByteArray();
+ }
+ break;
+ }
+ default: {
+ LDAPControl **serverctrls = nullptr;
+ char *matcheddn = nullptr;
+ char *errmsg = nullptr;
+ char **referralsp;
+ int errcodep;
+ retval = ldap_parse_result(ld, msg, &errcodep, &matcheddn, &errmsg, &referralsp, &serverctrls, 0);
+ qCDebug(LDAP_LOG) << "rescode" << rescode << "retval:" << retval << "matcheddn:" << matcheddn << "errcode:" << errcodep << "errmsg:" << errmsg;
+ if (retval != KLDAP_SUCCESS) {
+ ldap_msgfree(msg);
+ return -1;
+ }
+ mControls.clear();
+ if (serverctrls) {
+ extractControls(mControls, serverctrls);
+ ldap_controls_free(serverctrls);
+ }
+ mReferrals.clear();
+ if (referralsp) {
+ char **tmp = referralsp;
+ while (*tmp) {
+ mReferrals.append(QByteArray(*tmp));
+ ldap_memfree(*tmp);
+ tmp++;
+ }
+ ldap_memfree((char *)referralsp);
+ }
+ mMatchedDn.clear();
+ if (matcheddn) {
+ mMatchedDn = QString::fromUtf8(matcheddn);
+ ldap_memfree(matcheddn);
+ }
+ if (errmsg) {
+ ldap_memfree(errmsg);
+ }
+ }
+ }
+
+ ldap_msgfree(msg);
+
+ return rescode;
+}
+
+static void addModOp(LDAPMod ***pmods, int mod_type, const QString &attr, const QByteArray *value = nullptr)
+{
+ // qCDebug(LDAP_LOG) << "type:" << mod_type << "attr:" << attr <<
+ // "value:" << QString::fromUtf8(value,value.size()) <<
+ // "size:" << value.size();
+ LDAPMod **mods;
+
+ mods = *pmods;
+
+ uint i = 0;
+
+ if (mods == nullptr) {
+ mods = (LDAPMod **)malloc(2 * sizeof(LDAPMod *));
+ mods[0] = (LDAPMod *)malloc(sizeof(LDAPMod));
+ mods[1] = nullptr;
+ memset(mods[0], 0, sizeof(LDAPMod));
+ } else {
+ while (mods[i] != nullptr && (strcmp(attr.toUtf8().constData(), mods[i]->mod_type) != 0 || (mods[i]->mod_op & ~LDAP_MOD_BVALUES) != mod_type)) {
+ i++;
+ }
+
+ if (mods[i] == nullptr) {
+ mods = (LDAPMod **)realloc(mods, (i + 2) * sizeof(LDAPMod *));
+ if (mods == nullptr) {
+ qCritical() << "addModOp: realloc";
+ return;
+ }
+ mods[i + 1] = nullptr;
+ mods[i] = (LDAPMod *)malloc(sizeof(LDAPMod));
+ memset(mods[i], 0, sizeof(LDAPMod));
+ }
+ }
+
+ mods[i]->mod_op = mod_type | LDAP_MOD_BVALUES;
+ if (mods[i]->mod_type == nullptr) {
+ mods[i]->mod_type = strdup(attr.toUtf8().constData());
+ }
+
+ *pmods = mods;
+
+ if (value == nullptr) {
+ return;
+ }
+
+ int vallen = value->size();
+ BerValue *berval;
+ berval = (BerValue *)malloc(sizeof(BerValue));
+ berval->bv_len = vallen;
+ if (vallen > 0) {
+ berval->bv_val = (char *)malloc(vallen);
+ memcpy(berval->bv_val, value->data(), vallen);
+ } else {
+ berval->bv_val = nullptr;
+ }
+
+ if (mods[i]->mod_vals.modv_bvals == nullptr) {
+ mods[i]->mod_vals.modv_bvals = (BerValue **)malloc(sizeof(BerValue *) * 2);
+ mods[i]->mod_vals.modv_bvals[0] = berval;
+ mods[i]->mod_vals.modv_bvals[1] = nullptr;
+ // qCDebug(LDAP_LOG) << "new bervalue struct" << attr << value;
+ } else {
+ uint j = 0;
+ while (mods[i]->mod_vals.modv_bvals[j] != nullptr) {
+ j++;
+ }
+ mods[i]->mod_vals.modv_bvals = (BerValue **)realloc(mods[i]->mod_vals.modv_bvals, (j + 2) * sizeof(BerValue *));
+ if (mods[i]->mod_vals.modv_bvals == nullptr) {
+ qCritical() << "addModOp: realloc";
+ free(berval);
+ return;
+ }
+ mods[i]->mod_vals.modv_bvals[j] = berval;
+ mods[i]->mod_vals.modv_bvals[j + 1] = nullptr;
+ qCDebug(LDAP_LOG) << j << ". new bervalue";
+ }
+}
+
+static void addControlOp(LDAPControl ***pctrls, const QString &oid, const QByteArray &value, bool critical)
+{
+ LDAPControl **ctrls;
+ auto ctrl = (LDAPControl *)malloc(sizeof(LDAPControl));
+
+ ctrls = *pctrls;
+
+ qCDebug(LDAP_LOG) << "oid:'" << oid << "' val: '" << value << "'";
+ int vallen = value.size();
+ ctrl->ldctl_value.bv_len = vallen;
+ if (vallen) {
+ ctrl->ldctl_value.bv_val = (char *)malloc(vallen);
+ memcpy(ctrl->ldctl_value.bv_val, value.data(), vallen);
+ } else {
+ ctrl->ldctl_value.bv_val = nullptr;
+ }
+ ctrl->ldctl_iscritical = critical;
+ ctrl->ldctl_oid = strdup(oid.toUtf8().constData());
+
+ uint i = 0;
+
+ if (ctrls == nullptr) {
+ ctrls = (LDAPControl **)malloc(2 * sizeof(LDAPControl *));
+ ctrls[0] = nullptr;
+ ctrls[1] = nullptr;
+ } else {
+ while (ctrls[i] != nullptr) {
+ i++;
+ }
+ ctrls[i + 1] = nullptr;
+ ctrls = (LDAPControl **)realloc(ctrls, (i + 2) * sizeof(LDAPControl *));
+ }
+ ctrls[i] = ctrl;
+ *pctrls = ctrls;
+}
+
+static void createControls(LDAPControl ***pctrls, const LdapControls &ctrls)
+{
+ for (int i = 0; i < ctrls.count(); ++i) {
+ addControlOp(pctrls, ctrls[i].oid(), ctrls[i].value(), ctrls[i].critical());
+ }
+}
+
+static void extractControls(LdapControls &ctrls, LDAPControl **pctrls)
+{
+ LdapControl control;
+ int i = 0;
+
+ while (pctrls[i]) {
+ LDAPControl *ctrl = pctrls[i];
+ control.setOid(QString::fromUtf8(ctrl->ldctl_oid));
+ control.setValue(QByteArray(ctrl->ldctl_value.bv_val, ctrl->ldctl_value.bv_len));
+ control.setCritical(ctrl->ldctl_iscritical);
+ ctrls.append(control);
+ i++;
+ }
+}
+
+int LdapOperation::bind(const QByteArray &creds, SASL_Callback_Proc *saslproc, void *data)
+{
+ return d->bind(creds, saslproc, data, true);
+}
+
+int LdapOperation::bind_s(SASL_Callback_Proc *saslproc, void *data)
+{
+ return d->bind(QByteArray(), saslproc, data, false);
+}
+
+int LdapOperation::search(const LdapDN &base, LdapUrl::Scope scope, const QString &filter, const QStringList &attributes)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ char **attrs = nullptr;
+ int msgid;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int count = attributes.count();
+ if (count > 0) {
+ attrs = static_cast<char **>(malloc((count + 1) * sizeof(char *)));
+ for (int i = 0; i < count; i++) {
+ attrs[i] = strdup(attributes.at(i).toUtf8().constData());
+ }
+ attrs[count] = nullptr;
+ }
+
+ int lscope = LDAP_SCOPE_BASE;
+ switch (scope) {
+ case LdapUrl::Base:
+ lscope = LDAP_SCOPE_BASE;
+ break;
+ case LdapUrl::One:
+ lscope = LDAP_SCOPE_ONELEVEL;
+ break;
+ case LdapUrl::Sub:
+ lscope = LDAP_SCOPE_SUBTREE;
+ break;
+ }
+
+ qCDebug(LDAP_LOG) << "asyncSearch() base=\"" << base.toString() << "\" scope=" << (int)scope << "filter=\"" << filter << "\" attrs=" << attributes;
+ int retval = ldap_search_ext(ld,
+ base.toString().toUtf8().data(),
+ lscope,
+ filter.isEmpty() ? QByteArray("objectClass=*").data() : filter.toUtf8().data(),
+ attrs,
+ 0,
+ serverctrls,
+ clientctrls,
+ nullptr,
+ d->mConnection->sizeLimit(),
+ &msgid);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ // free the attributes list again
+ if (count > 0) {
+ for (int i = 0; i < count; i++) {
+ free(attrs[i]);
+ }
+ free(attrs);
+ }
+
+ if (retval == 0) {
+ retval = msgid;
+ }
+ return retval;
+}
+
+int LdapOperation::add(const LdapObject &object)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ int msgid;
+ LDAPMod **lmod = nullptr;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ for (LdapAttrMap::ConstIterator it = object.attributes().begin(); it != object.attributes().end(); ++it) {
+ QString attr = it.key();
+ for (LdapAttrValue::ConstIterator it2 = (*it).begin(); it2 != (*it).end(); ++it2) {
+ addModOp(&lmod, 0, attr, &(*it2));
+ }
+ }
+
+ int retval = ldap_add_ext(ld, object.dn().toString().toUtf8().data(), lmod, serverctrls, clientctrls, &msgid);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+ ldap_mods_free(lmod, 1);
+ if (retval == 0) {
+ retval = msgid;
+ }
+ return retval;
+}
+
+int LdapOperation::add_s(const LdapObject &object)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ LDAPMod **lmod = nullptr;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ for (LdapAttrMap::ConstIterator it = object.attributes().begin(); it != object.attributes().end(); ++it) {
+ QString attr = it.key();
+ for (LdapAttrValue::ConstIterator it2 = (*it).begin(); it2 != (*it).end(); ++it2) {
+ addModOp(&lmod, 0, attr, &(*it2));
+ }
+ }
+
+ int retval = ldap_add_ext_s(ld, object.dn().toString().toUtf8().data(), lmod, serverctrls, clientctrls);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+ ldap_mods_free(lmod, 1);
+ return retval;
+}
+
+int LdapOperation::add(const LdapDN &dn, const ModOps &ops)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ int msgid;
+ LDAPMod **lmod = nullptr;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ for (int i = 0; i < ops.count(); ++i) {
+ for (int j = 0; j < ops[i].values.count(); ++j) {
+ addModOp(&lmod, 0, ops[i].attr, &ops[i].values[j]);
+ }
+ }
+
+ int retval = ldap_add_ext(ld, dn.toString().toUtf8().data(), lmod, serverctrls, clientctrls, &msgid);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+ ldap_mods_free(lmod, 1);
+ if (retval == 0) {
+ retval = msgid;
+ }
+ return retval;
+}
+
+int LdapOperation::add_s(const LdapDN &dn, const ModOps &ops)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ LDAPMod **lmod = nullptr;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ for (int i = 0; i < ops.count(); ++i) {
+ for (int j = 0; j < ops[i].values.count(); ++j) {
+ addModOp(&lmod, 0, ops[i].attr, &ops[i].values[j]);
+ }
+ }
+ qCDebug(LDAP_LOG) << dn.toString();
+ int retval = ldap_add_ext_s(ld, dn.toString().toUtf8().data(), lmod, serverctrls, clientctrls);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+ ldap_mods_free(lmod, 1);
+ return retval;
+}
+
+int LdapOperation::rename(const LdapDN &dn, const QString &newRdn, const QString &newSuperior, bool deleteold)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ int msgid;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int retval = ldap_rename(ld,
+ dn.toString().toUtf8().data(),
+ newRdn.toUtf8().data(),
+ newSuperior.isEmpty() ? (char *)nullptr : newSuperior.toUtf8().data(),
+ deleteold,
+ serverctrls,
+ clientctrls,
+ &msgid);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ if (retval == 0) {
+ retval = msgid;
+ }
+ return retval;
+}
+
+int LdapOperation::rename_s(const LdapDN &dn, const QString &newRdn, const QString &newSuperior, bool deleteold)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int retval = ldap_rename_s(ld,
+ dn.toString().toUtf8().data(),
+ newRdn.toUtf8().data(),
+ newSuperior.isEmpty() ? (char *)nullptr : newSuperior.toUtf8().data(),
+ deleteold,
+ serverctrls,
+ clientctrls);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ return retval;
+}
+
+int LdapOperation::del(const LdapDN &dn)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ int msgid;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int retval = ldap_delete_ext(ld, dn.toString().toUtf8().data(), serverctrls, clientctrls, &msgid);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ if (retval == 0) {
+ retval = msgid;
+ }
+ return retval;
+}
+
+int LdapOperation::del_s(const LdapDN &dn)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int retval = ldap_delete_ext_s(ld, dn.toString().toUtf8().data(), serverctrls, clientctrls);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ return retval;
+}
+
+int LdapOperation::modify(const LdapDN &dn, const ModOps &ops)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ int msgid;
+ LDAPMod **lmod = nullptr;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ for (int i = 0; i < ops.count(); ++i) {
+ int mtype = 0;
+ switch (ops[i].type) {
+ case Mod_None:
+ mtype = 0;
+ break;
+ case Mod_Add:
+ mtype = LDAP_MOD_ADD;
+ break;
+ case Mod_Replace:
+ mtype = LDAP_MOD_REPLACE;
+ break;
+ case Mod_Del:
+ mtype = LDAP_MOD_DELETE;
+ break;
+ }
+ addModOp(&lmod, mtype, ops[i].attr, nullptr);
+ for (int j = 0; j < ops[i].values.count(); ++j) {
+ addModOp(&lmod, mtype, ops[i].attr, &ops[i].values[j]);
+ }
+ }
+
+ int retval = ldap_modify_ext(ld, dn.toString().toUtf8().data(), lmod, serverctrls, clientctrls, &msgid);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+ ldap_mods_free(lmod, 1);
+ if (retval == 0) {
+ retval = msgid;
+ }
+ return retval;
+}
+
+int LdapOperation::modify_s(const LdapDN &dn, const ModOps &ops)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ LDAPMod **lmod = nullptr;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ for (int i = 0; i < ops.count(); ++i) {
+ int mtype = 0;
+ switch (ops[i].type) {
+ case Mod_None:
+ mtype = 0;
+ break;
+ case Mod_Add:
+ mtype = LDAP_MOD_ADD;
+ break;
+ case Mod_Replace:
+ mtype = LDAP_MOD_REPLACE;
+ break;
+ case Mod_Del:
+ mtype = LDAP_MOD_DELETE;
+ break;
+ }
+ addModOp(&lmod, mtype, ops[i].attr, nullptr);
+ for (int j = 0; j < ops[i].values.count(); ++j) {
+ addModOp(&lmod, mtype, ops[i].attr, &ops[i].values[j]);
+ }
+ }
+
+ int retval = ldap_modify_ext_s(ld, dn.toString().toUtf8().data(), lmod, serverctrls, clientctrls);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+ ldap_mods_free(lmod, 1);
+ return retval;
+}
+
+int LdapOperation::compare(const LdapDN &dn, const QString &attr, const QByteArray &value)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+ int msgid;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int vallen = value.size();
+ BerValue *berval;
+ berval = (BerValue *)malloc(sizeof(BerValue));
+ berval->bv_val = (char *)malloc(vallen);
+ berval->bv_len = vallen;
+ memcpy(berval->bv_val, value.data(), vallen);
+
+ int retval = ldap_compare_ext(ld, dn.toString().toUtf8().data(), attr.toUtf8().data(), berval, serverctrls, clientctrls, &msgid);
+
+ ber_bvfree(berval);
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ if (retval == 0) {
+ retval = msgid;
+ }
+ return retval;
+}
+
+int LdapOperation::compare_s(const LdapDN &dn, const QString &attr, const QByteArray &value)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int vallen = value.size();
+ BerValue *berval;
+ berval = (BerValue *)malloc(sizeof(BerValue));
+ berval->bv_val = (char *)malloc(vallen);
+ berval->bv_len = vallen;
+ memcpy(berval->bv_val, value.data(), vallen);
+
+ int retval = ldap_compare_ext_s(ld, dn.toString().toUtf8().data(), attr.toUtf8().data(), berval, serverctrls, clientctrls);
+
+ ber_bvfree(berval);
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ return retval;
+}
+
+int LdapOperation::exop(const QString &oid, const QByteArray &data)
+{
+ Q_ASSERT(d->mConnection);
+#if HAVE_LDAP_EXTENDED_OPERATION
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+ int msgid;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int vallen = data.size();
+ BerValue *berval;
+ berval = (BerValue *)malloc(sizeof(BerValue));
+ berval->bv_val = (char *)malloc(vallen);
+ berval->bv_len = vallen;
+ memcpy(berval->bv_val, data.data(), vallen);
+
+ int retval = ldap_extended_operation(ld, oid.toUtf8().data(), berval, serverctrls, clientctrls, &msgid);
+
+ ber_bvfree(berval);
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ if (retval == 0) {
+ retval = msgid;
+ }
+ return retval;
+#else
+ qCritical() << "Your LDAP client libraries don't support extended operations.";
+ return -1;
+#endif
+}
+
+int LdapOperation::exop_s(const QString &oid, const QByteArray &data)
+{
+#if HAVE_LDAP_EXTENDED_OPERATION_S
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+ BerValue *retdata;
+ char *retoid;
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int vallen = data.size();
+ BerValue *berval;
+ berval = (BerValue *)malloc(sizeof(BerValue));
+ berval->bv_val = (char *)malloc(vallen);
+ berval->bv_len = vallen;
+ memcpy(berval->bv_val, data.data(), vallen);
+
+ int retval = ldap_extended_operation_s(ld, oid.toUtf8().data(), berval, serverctrls, clientctrls, &retoid, &retdata);
+
+ ber_bvfree(berval);
+ ber_bvfree(retdata);
+ free(retoid);
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ return retval;
+#else
+ qCritical() << "Your LDAP client libraries don't support extended operations.";
+ return -1;
+#endif
+}
+
+int LdapOperation::abandon(int id)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ LDAPControl **serverctrls = nullptr;
+ LDAPControl **clientctrls = nullptr;
+ createControls(&serverctrls, d->mServerCtrls);
+ createControls(&serverctrls, d->mClientCtrls);
+
+ int retval = ldap_abandon_ext(ld, id, serverctrls, clientctrls);
+
+ ldap_controls_free(serverctrls);
+ ldap_controls_free(clientctrls);
+
+ return retval;
+}
+
+int LdapOperation::waitForResult(int id, int msecs)
+{
+ Q_ASSERT(d->mConnection);
+ LDAP *ld = (LDAP *)d->mConnection->handle();
+
+ LDAPMessage *msg;
+
+ QElapsedTimer stopWatch;
+ stopWatch.start();
+ int attempt(1);
+ int timeout(0);
+
+ do {
+ // Calculate the timeout value to use and assign it to a timeval structure
+ // see man select (2) for details
+ timeout = kldap_timeout_value(msecs, stopWatch.elapsed());
+ qCDebug(LDAP_LOG) << "(" << id << "," << msecs << "): Waiting" << timeout << "msecs for result. Attempt #" << attempt++;
+ struct timeval tv;
+ tv.tv_sec = timeout / 1000;
+ tv.tv_usec = (timeout % 1000) * 1000;
+
+ // Wait for a result
+ int rescode = ldap_result(ld, id, 0, timeout < 0 ? nullptr : &tv, &msg);
+ if (rescode == -1) {
+ return -1;
+ }
+ // Act on the return code
+ if (rescode != 0) {
+ // Some kind of result is available for processing
+ return d->processResult(rescode, msg);
+ }
+ } while (msecs == -1 || stopWatch.elapsed() < msecs);
+
+ return 0; // timeout
+}
+
+#else
+
+int LdapOperation::bind(const QByteArray &creds, SASL_Callback_Proc *saslproc, void *data)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::bind_s(SASL_Callback_Proc *saslproc, void *data)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::search(const LdapDN &base, LdapUrl::Scope scope, const QString &filter, const QStringList &attributes)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::add(const LdapObject &object)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::add_s(const LdapObject &object)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::add(const LdapDN &dn, const ModOps &ops)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::add_s(const LdapDN &dn, const ModOps &ops)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::rename(const LdapDN &dn, const QString &newRdn, const QString &newSuperior, bool deleteold)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::rename_s(const LdapDN &dn, const QString &newRdn, const QString &newSuperior, bool deleteold)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::del(const LdapDN &dn)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::del_s(const LdapDN &dn)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::modify(const LdapDN &dn, const ModOps &ops)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::modify_s(const LdapDN &dn, const ModOps &ops)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::compare(const LdapDN &dn, const QString &attr, const QByteArray &value)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::exop(const QString &oid, const QByteArray &data)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::compare_s(const LdapDN &dn, const QString &attr, const QByteArray &value)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::exop_s(const QString &oid, const QByteArray &data)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::waitForResult(int id, int msecs)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+int LdapOperation::abandon(int id)
+{
+ qCritical() << "LDAP support not compiled";
+ return -1;
+}
+
+#endif
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include "kldap_export.h"
+#include "ldapconnection.h"
+#include "ldapcontrol.h"
+#include "ldapdn.h"
+#include "ldapobject.h"
+#include "ldapserver.h"
+#include "ldapurl.h"
+
+#include <QByteArray>
+#include <QList>
+#include <QString>
+
+#include <memory>
+
+namespace KLDAP
+{
+/**
+ * @brief
+ * This class allows sending an ldap operation
+ * (search, rename, modify, delete, compare, exop) to an LDAP server.
+ */
+class KLDAP_EXPORT LdapOperation
+{
+public:
+ using ModType = enum { Mod_None, Mod_Add, Mod_Replace, Mod_Del };
+
+ using ResultType = enum {
+ RES_BIND = 0x61,
+ RES_SEARCH_ENTRY = 0x64,
+ RES_SEARCH_REFERENCE = 0x73,
+ RES_SEARCH_RESULT = 0x65,
+ RES_MODIFY = 0x67,
+ RES_ADD = 0x69,
+ RES_DELETE = 0x69,
+ RES_MODDN = 0x6d,
+ RES_COMPARE = 0x6f,
+ RES_EXTENDED = 0x78,
+ RES_EXTENDED_PARTIAL = 0x79
+ };
+
+ using ModOp = struct {
+ ModType type;
+ QString attr;
+ QList<QByteArray> values;
+ };
+
+ using ModOps = QVector<ModOp>;
+
+ enum SASL_Fields { SASL_Authname = 0x1, SASL_Authzid = 0x2, SASL_Realm = 0x4, SASL_Password = 0x8 };
+
+ struct SASL_Credentials {
+ int fields;
+ QString authname;
+ QString authzid;
+ QString realm;
+ QString password;
+ };
+
+ using SASL_Callback_Proc = int(SASL_Credentials &, void *);
+
+ struct SASL_Data {
+ SASL_Callback_Proc *proc;
+ void *data;
+ SASL_Credentials creds;
+ };
+
+ LdapOperation();
+ LdapOperation(LdapConnection &conn);
+ ~LdapOperation();
+
+ /**
+ * Sets the connection object. Without living connection object,
+ * LDAP operations are not possible.
+ * @param the connection object to set
+ */
+ void setConnection(LdapConnection &conn);
+ /**
+ * Returns the connection object.
+ */
+ LdapConnection &connection();
+ /**
+ * Sets the client controls which will sent with each operation.
+ */
+ void setClientControls(const LdapControls &ctrls);
+ /**
+ * Sets the server controls which will sent with each operation.
+ */
+ void setServerControls(const LdapControls &ctrls);
+ /**
+ * Returns the client controls (which set by setClientControls()).
+ */
+ Q_REQUIRED_RESULT LdapControls clientControls() const;
+ /**
+ * Returns the server controls (which set by setServerControls()).
+ */
+ Q_REQUIRED_RESULT LdapControls serverControls() const;
+
+ /**
+ * Binds to the server which specified in the connection object.
+ * Can do simple or SASL bind. Returns a message id if successful, negative value if not.
+ */
+ Q_REQUIRED_RESULT int bind(const QByteArray &creds = QByteArray(), SASL_Callback_Proc *saslproc = nullptr, void *data = nullptr);
+
+ /**
+ * Binds to the server which specified in the connection object.
+ * Can do simple or SASL bind. This is the synchronous version.
+ * Returns KLDAP_SUCCESS id if successful, else an LDAP error code.
+ */
+ Q_REQUIRED_RESULT int bind_s(SASL_Callback_Proc *saslproc = nullptr, void *data = nullptr);
+
+ /**
+ * Starts a search operation with the given base DN, scope, filter and
+ * result attributes. Returns a message id if successful, -1 if not.
+ */
+ Q_REQUIRED_RESULT int search(const LdapDN &base, LdapUrl::Scope scope, const QString &filter, const QStringList &attrs);
+ /**
+ * Starts an addition operation.
+ * Returns a message id if successful, -1 if not.
+ * @param object the additional operation to start
+ */
+ Q_REQUIRED_RESULT int add(const LdapObject &object);
+ /**
+ * Adds the specified object to the LDAP database.
+ * Returns KLDAP_SUCCESS id if successful, else an LDAP error code.
+ * @param object the object to add to LDAP database
+ */
+ Q_REQUIRED_RESULT int add_s(const LdapObject &object);
+ /**
+ * Starts an addition operation. This version accepts ModOps not LdapObject.
+ * Returns a message id if successful, -1 if not.
+ * @param dn the LdapDN operation to start
+ * @param ops the ModOps operation to start
+ */
+ Q_REQUIRED_RESULT int add(const LdapDN &dn, const ModOps &ops);
+ /**
+ * Adds the specified object to the LDAP database. This version accepts ModOps not LdapObject.
+ * This is the synchronous version.
+ * Returns KLDAP_SUCCESS id if successful, else an LDAP error code.
+ * @param dn the LdapDN object to add
+ * @param ops the ModOps object to add
+ */
+ Q_REQUIRED_RESULT int add_s(const LdapDN &dn, const ModOps &ops);
+ /**
+ * Starts a modrdn operation on given DN, changing its RDN to newRdn,
+ * changing its parent to newSuperior (if it's not empty), and deletes
+ * the old dn if deleteold is true.
+ * Returns a message id if successful, -1 if not.
+ */
+ Q_REQUIRED_RESULT int rename(const LdapDN &dn, const QString &newRdn, const QString &newSuperior, bool deleteold = true);
+ /**
+ * Performs a modrdn operation on given DN, changing its RDN to newRdn,
+ * changing its parent to newSuperior (if it's not empty), and deletes
+ * the old dn if deleteold is true. This is the synchronous version.
+ * Returns KLDAP_SUCCESS id if successful, else an LDAP error code.
+ */
+ Q_REQUIRED_RESULT int rename_s(const LdapDN &dn, const QString &newRdn, const QString &newSuperior, bool deleteold = true);
+ /**
+ * Starts a delete operation on the given DN.
+ * Returns a message id if successful, -1 if not.
+ */
+ Q_REQUIRED_RESULT int del(const LdapDN &dn);
+ /**
+ * Deletes the given DN. This is the synchronous version.
+ * Returns KLDAP_SUCCESS id if successful, else an LDAP error code.
+ * @param dn the dn to delete
+ */
+ Q_REQUIRED_RESULT int del_s(const LdapDN &dn);
+ /**
+ * Starts a modify operation on the given DN.
+ * Returns a message id if successful, -1 if not.
+ * @param dn the DN to start modify operation on
+ */
+ Q_REQUIRED_RESULT int modify(const LdapDN &dn, const ModOps &ops);
+ /**
+ * Performs a modify operation on the given DN.
+ * This is the synchronous version.
+ * Returns KLDAP_SUCCESS id if successful, else an LDAP error code.
+ */
+ Q_REQUIRED_RESULT int modify_s(const LdapDN &dn, const ModOps &ops);
+ /**
+ * Starts a compare operation on the given DN, compares the specified
+ * attribute with the given value.
+ * Returns a message id if successful, -1 if not.
+ */
+ Q_REQUIRED_RESULT int compare(const LdapDN &dn, const QString &attr, const QByteArray &value);
+ /**
+ * Performs a compare operation on the given DN, compares the specified
+ * attribute with the given value. This is the synchronous version.
+ * Returns KLDAP_COMPARE_TRUE if the entry contains the attribute value
+ * and KLDAP_COMPARE_FALSE if it does not. Otherwise, some error code
+ * is returned.
+ */
+ Q_REQUIRED_RESULT int compare_s(const LdapDN &dn, const QString &attr, const QByteArray &value);
+ /**
+ * Starts an extended operation specified with oid and data.
+ * Returns a message id if successful, -1 if not.
+ */
+ Q_REQUIRED_RESULT int exop(const QString &oid, const QByteArray &data);
+ /**
+ * Performs an extended operation specified with oid and data.
+ * This is the synchronous version.
+ * Returns KLDAP_SUCCESS id if successful, else an LDAP error code.
+ */
+ Q_REQUIRED_RESULT int exop_s(const QString &oid, const QByteArray &data);
+ /**
+ * Abandons a long-running operation. Requires the message id.
+ */
+ Q_REQUIRED_RESULT int abandon(int id);
+ /**
+ * Waits for up to \p msecs milliseconds for a result message from the LDAP
+ * server. If \p msecs is -1, then this function will block indefinitely.
+ * If \p msecs is 0, then this function will return immediately, that is it
+ * will perform a poll for a result message.
+ *
+ * Returns the type of the result LDAP message (RES_XXX constants).
+ * -1 if error occurred, 0 if the timeout value elapsed. Note!
+ * Return code -1 means that fetching the message resulted in error,
+ * not the LDAP operation error. Call connection().ldapErrorCode() to
+ * determine if the operation succeeded.
+ */
+ Q_REQUIRED_RESULT int waitForResult(int id, int msecs = -1);
+ /**
+ * Returns the result object if result() returned RES_SEARCH_ENTRY.
+ */
+ Q_REQUIRED_RESULT LdapObject object() const;
+ /**
+ * Returns the server controls from the returned ldap message (grabbed
+ * by result()).
+ */
+ Q_REQUIRED_RESULT LdapControls controls() const;
+ /**
+ * Returns the OID of the extended operation response (result
+ * returned RES_EXTENDED).
+ */
+ Q_REQUIRED_RESULT QByteArray extendedOid() const;
+ /**
+ * Returns the data from the extended operation response (result
+ * returned RES_EXTENDED).
+ */
+ Q_REQUIRED_RESULT QByteArray extendedData() const;
+ /**
+ * The server might supply a matched DN string in the message indicating
+ * how much of a name in a request was recognized. This can be grabbed by
+ * matchedDn().
+ */
+ Q_REQUIRED_RESULT QString matchedDn() const;
+ /**
+ * This function returns the referral strings from the parsed message
+ * (if any).
+ */
+ Q_REQUIRED_RESULT QList<QByteArray> referrals() const;
+ /**
+ * Returns the server response for a bind request (result
+ * returned RES_BIND).
+ */
+ Q_REQUIRED_RESULT QByteArray serverCred() const;
+
+private:
+ class LdapOperationPrivate;
+ std::unique_ptr<LdapOperationPrivate> const d;
+
+ Q_DISABLE_COPY(LdapOperation)
+};
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldapsearch.h"
+#include "ldapdefs.h"
+#include "ldapdn.h"
+
+#include <QTimer>
+
+#include "ldap_debug.h"
+#include <KLocalizedString>
+using namespace KLDAP;
+
+// blocking the GUI for xxx milliseconds
+#define LDAPSEARCH_BLOCKING_TIMEOUT 10
+
+class LdapSearchPrivate
+{
+public:
+ LdapSearchPrivate(LdapSearch *parent)
+ : mParent(parent)
+ {
+ }
+
+ void result();
+ bool connect();
+ void closeConnection();
+ bool startSearch(const LdapDN &base, LdapUrl::Scope scope, const QString &filter, const QStringList &attributes, int pagesize, int count);
+
+ LdapSearch *const mParent;
+ LdapConnection *mConn = nullptr;
+ LdapOperation mOp;
+ bool mOwnConnection = false;
+ bool mAbandoned = false;
+ int mId;
+ int mPageSize;
+ LdapDN mBase;
+ QString mFilter;
+ QStringList mAttributes;
+ LdapUrl::Scope mScope;
+
+ QString mErrorString;
+ int mError;
+ int mCount;
+ int mMaxCount;
+ bool mFinished = false;
+};
+
+void LdapSearchPrivate::result()
+{
+ if (mAbandoned) {
+ mOp.abandon(mId);
+ return;
+ }
+ const int res = mOp.waitForResult(mId, LDAPSEARCH_BLOCKING_TIMEOUT);
+
+ qCDebug(LDAP_LOG) << "LDAP result:" << res;
+
+ if (res != 0 && (res == -1 || (mConn->ldapErrorCode() != KLDAP_SUCCESS && mConn->ldapErrorCode() != KLDAP_SASL_BIND_IN_PROGRESS))) {
+ // error happened, but no timeout
+ mError = mConn->ldapErrorCode();
+ mErrorString = mConn->ldapErrorString();
+ Q_EMIT mParent->result(mParent);
+ return;
+ }
+
+ // binding
+ if (res == LdapOperation::RES_BIND) {
+ const QByteArray servercc = mOp.serverCred();
+
+ qCDebug(LDAP_LOG) << "LdapSearch RES_BIND";
+ if (mConn->ldapErrorCode() == KLDAP_SUCCESS) { // bind succeeded
+ qCDebug(LDAP_LOG) << "bind succeeded";
+ LdapControls savedctrls = mOp.serverControls();
+ if (mPageSize) {
+ LdapControls ctrls = savedctrls;
+ LdapControl::insert(ctrls, LdapControl::createPageControl(mPageSize));
+ mOp.setServerControls(ctrls);
+ }
+
+ mId = mOp.search(mBase, mScope, mFilter, mAttributes);
+ mOp.setServerControls(savedctrls);
+ } else { // next bind step
+ qCDebug(LDAP_LOG) << "bind next step";
+ mId = mOp.bind(servercc);
+ }
+ if (mId < 0) {
+ if (mId == KLDAP_SASL_ERROR) {
+ mError = mId;
+ mErrorString = mConn->saslErrorString();
+ } else {
+ mError = mConn->ldapErrorCode();
+ mErrorString = mConn->ldapErrorString();
+ }
+ Q_EMIT mParent->result(mParent);
+ return;
+ }
+ QTimer::singleShot(0, mParent, [this]() {
+ result();
+ });
+ return;
+ }
+
+ // End of entries
+ if (res == LdapOperation::RES_SEARCH_RESULT) {
+ if (mPageSize) {
+ QByteArray cookie;
+ int estsize = -1;
+ const int numberOfControls(mOp.controls().count());
+ for (int i = 0; i < numberOfControls; ++i) {
+ estsize = mOp.controls().at(i).parsePageControl(cookie);
+ if (estsize != -1) {
+ break;
+ }
+ }
+ qCDebug(LDAP_LOG) << " estimated size:" << estsize;
+ if (estsize != -1 && !cookie.isEmpty()) {
+ LdapControls ctrls;
+ LdapControls savedctrls;
+ savedctrls = mOp.serverControls();
+ ctrls = savedctrls;
+ LdapControl::insert(ctrls, LdapControl::createPageControl(mPageSize, cookie));
+ mOp.setServerControls(ctrls);
+ mId = mOp.search(mBase, mScope, mFilter, mAttributes);
+ mOp.setServerControls(savedctrls);
+ if (mId == -1) {
+ mError = mConn->ldapErrorCode();
+ mErrorString = mConn->ldapErrorString();
+ Q_EMIT mParent->result(mParent);
+ return;
+ }
+ // continue with the next page
+ QTimer::singleShot(0, mParent, [this]() {
+ result();
+ });
+ return;
+ }
+ }
+ mFinished = true;
+ Q_EMIT mParent->result(mParent);
+ return;
+ }
+
+ // Found an entry
+ if (res == LdapOperation::RES_SEARCH_ENTRY) {
+ Q_EMIT mParent->data(mParent, mOp.object());
+ mCount++;
+ }
+
+ // If not reached the requested entries, continue
+ if (mMaxCount <= 0 || mCount < mMaxCount) {
+ QTimer::singleShot(0, mParent, [this]() {
+ result();
+ });
+ }
+ // If reached the requested entries, indicate it
+ if (mMaxCount > 0 && mCount == mMaxCount) {
+ qCDebug(LDAP_LOG) << mCount << " entries reached";
+ Q_EMIT mParent->result(mParent);
+ }
+}
+
+bool LdapSearchPrivate::connect()
+{
+ const int ret = mConn->connect();
+ if (ret != KLDAP_SUCCESS) {
+ mError = ret;
+ mErrorString = mConn->connectionError();
+ closeConnection();
+ return false;
+ }
+ return true;
+}
+
+void LdapSearchPrivate::closeConnection()
+{
+ if (mOwnConnection && mConn) {
+ delete mConn;
+ mConn = nullptr;
+ }
+}
+
+// This starts the real job
+bool LdapSearchPrivate::startSearch(const LdapDN &base, LdapUrl::Scope scope, const QString &filter, const QStringList &attributes, int pagesize, int count)
+{
+ qCDebug(LDAP_LOG) << "search: base=" << base.toString() << "scope=" << static_cast<int>(scope) << "filter=" << filter << "attributes=" << attributes
+ << "pagesize=" << pagesize;
+ mAbandoned = false;
+ mError = 0;
+ mErrorString.clear();
+ mOp.setConnection(*mConn);
+ mPageSize = pagesize;
+ mBase = base;
+ mScope = scope;
+ mFilter = filter;
+ mAttributes = attributes;
+ mMaxCount = count;
+ mCount = 0;
+ mFinished = false;
+
+ LdapControls savedctrls = mOp.serverControls();
+ if (pagesize) {
+ LdapControls ctrls = savedctrls;
+ mConn->setOption(0x0008, nullptr); // Disable referals or paging won't work
+ LdapControl::insert(ctrls, LdapControl::createPageControl(pagesize));
+ mOp.setServerControls(ctrls);
+ }
+
+ mId = mOp.bind();
+ if (mId < 0) {
+ if (mId == KLDAP_SASL_ERROR) {
+ mError = mId;
+ mErrorString = mConn->saslErrorString();
+ } else {
+ mError = mConn->ldapErrorCode();
+ mErrorString = mConn->ldapErrorString();
+ if (mError == -1 && mErrorString.isEmpty()) {
+ mErrorString = i18n("Cannot access to server. Please reconfigure it.");
+ }
+ }
+ return false;
+ }
+ qCDebug(LDAP_LOG) << "startSearch msg id=" << mId;
+
+ // maybe do this with threads?- need thread-safe client libs!!!
+ QTimer::singleShot(0, mParent, [this]() {
+ result();
+ });
+
+ return true;
+}
+
+///////////////////////////////////////////////
+
+LdapSearch::LdapSearch()
+ : d(new LdapSearchPrivate(this))
+{
+ d->mOwnConnection = true;
+ d->mConn = nullptr;
+}
+
+LdapSearch::LdapSearch(LdapConnection &connection)
+ : d(new LdapSearchPrivate(this))
+{
+ d->mOwnConnection = false;
+ d->mConn = &connection;
+}
+
+LdapSearch::~LdapSearch()
+{
+ d->closeConnection();
+}
+
+void LdapSearch::setConnection(LdapConnection &connection)
+{
+ d->closeConnection();
+ d->mOwnConnection = false;
+ d->mConn = &connection;
+}
+
+void LdapSearch::setClientControls(const LdapControls &ctrls)
+{
+ d->mOp.setClientControls(ctrls);
+}
+
+void LdapSearch::setServerControls(const LdapControls &ctrls)
+{
+ d->mOp.setServerControls(ctrls);
+}
+
+bool LdapSearch::search(const LdapServer &server, const QStringList &attributes, int count)
+{
+ if (d->mOwnConnection) {
+ d->closeConnection();
+ d->mConn = new LdapConnection(server);
+ if (!d->connect()) {
+ return false;
+ }
+ }
+ return d->startSearch(server.baseDn(), server.scope(), server.filter(), attributes, server.pageSize(), count);
+}
+
+bool LdapSearch::search(const LdapUrl &url, int count)
+{
+ if (d->mOwnConnection) {
+ d->closeConnection();
+ d->mConn = new LdapConnection(url);
+ if (!d->connect()) {
+ return false;
+ }
+ }
+ bool critical = true;
+ const int pagesize = url.extension(QStringLiteral("x-pagesize"), critical).toInt();
+ return d->startSearch(url.dn(), url.scope(), url.filter(), url.attributes(), pagesize, count);
+}
+
+bool LdapSearch::search(const LdapDN &base, LdapUrl::Scope scope, const QString &filter, const QStringList &attributes, int pagesize, int count)
+{
+ Q_ASSERT(!d->mOwnConnection);
+ return d->startSearch(base, scope, filter, attributes, pagesize, count);
+}
+
+void LdapSearch::continueSearch()
+{
+ Q_ASSERT(!d->mFinished);
+ d->mCount = 0;
+ QTimer::singleShot(0, this, [this]() {
+ d->result();
+ });
+}
+
+bool LdapSearch::isFinished()
+{
+ return d->mFinished;
+}
+
+void LdapSearch::abandon()
+{
+ d->mAbandoned = true;
+}
+
+int LdapSearch::error() const
+{
+ return d->mError;
+}
+
+QString LdapSearch::errorString() const
+{
+ return d->mErrorString;
+}
+
+#include "moc_ldapsearch.cpp"
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QObject>
+#include <QString>
+class LdapSearchPrivate;
+
+#include "kldap_export.h"
+
+#include "ldapconnection.h"
+#include "ldapcontrol.h"
+#include "ldapobject.h"
+#include "ldapoperation.h"
+#include "ldapserver.h"
+#include "ldapurl.h"
+
+// clazy:excludeall=ctor-missing-parent-argument
+
+namespace KLDAP
+{
+/**
+ * @brief
+ * This class starts a search operation on a LDAP server and returns the
+ * search values via a Qt signal.
+ */
+class KLDAP_EXPORT LdapSearch : public QObject
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Constructs an LdapSearch object
+ */
+ LdapSearch();
+
+ /**
+ * Constructs an LdapConnection object with the given connection. If this
+ * form of constructor used, then always this connection will be used
+ * regardless of the LDAP Url or LdapServer object passed to search().
+ * @param connection the connection used to construct LdapConnection object
+ */
+ explicit LdapSearch(LdapConnection &connection);
+
+ ~LdapSearch() override;
+
+ /**
+ * Sets the connection for this object to use for searches from now
+ * onwards, regardless of the LDAP Url or LdapServer object passed to
+ * search().
+ */
+ void setConnection(LdapConnection &connection);
+
+ /**
+ * Sets the client controls which will sent with each operation.
+ */
+ void setClientControls(const LdapControls &ctrls);
+
+ /**
+ * Sets the server controls which will sent with each operation.
+ */
+ void setServerControls(const LdapControls &ctrls);
+
+ /**
+ * Starts a search operation on the LDAP server @param server,
+ * returning the attributes specified with @param attributes.
+ * @param count means how many entries to list. If it's >0, then result()
+ * will be emitted when the number of entries is reached, but with
+ * isFinished() set to false.
+ */
+ Q_REQUIRED_RESULT bool search(const LdapServer &server, const QStringList &attributes = QStringList(), int count = 0);
+
+ /**
+ * Starts a search operation on the given LDAP URL.
+ */
+ Q_REQUIRED_RESULT bool search(const LdapUrl &url, int count = 0);
+
+ /**
+ * Starts a search operation if the LdapConnection object already set
+ * in the constructor.
+ */
+ Q_REQUIRED_RESULT bool search(const LdapDN &base,
+ LdapUrl::Scope scope = LdapUrl::Sub,
+ const QString &filter = QString(),
+ const QStringList &attributes = QStringList(),
+ int pagesize = 0,
+ int count = 0);
+
+ /**
+ * Continues the search (if you set count to non-zero in search(), and isFinished() is false)
+ */
+ void continueSearch();
+ /**
+ * Returns true if the search is finished else returns false.
+ */
+ Q_REQUIRED_RESULT bool isFinished();
+ /**
+ * Tries to abandon the search.
+ */
+ void abandon();
+
+ /**
+ * Returns the error code of the search operation (0 if no error).
+ */
+ Q_REQUIRED_RESULT int error() const;
+
+ /**
+ * Returns the error description of the search operation.
+ */
+ Q_REQUIRED_RESULT QString errorString() const;
+
+Q_SIGNALS:
+ /**
+ * Emitted for each result object.
+ */
+ void data(KLDAP::LdapSearch *search, const KLDAP::LdapObject &obj);
+
+ /**
+ * Emitted when the searching finished.
+ */
+ void result(KLDAP::LdapSearch *search);
+
+private:
+ std::unique_ptr<LdapSearchPrivate> const d;
+ Q_DISABLE_COPY(LdapSearch)
+};
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldapserver.h"
+
+#include "ldap_debug.h"
+
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN LdapServer::LdapServerPrivate
+{
+public:
+ QString mHost;
+ int mPort;
+ LdapDN mBaseDn;
+ QString mUser;
+ QString mBindDn;
+ QString mRealm;
+ QString mPassword;
+ QString mMech;
+ QString mFilter;
+ int mTimeLimit;
+ int mSizeLimit;
+ int mVersion;
+ int mPageSize;
+ int mTimeout;
+ Security mSecurity;
+ Auth mAuth;
+ QString mTLSCACertFile;
+ TLSRequireCertificate mTLSRequireCertificate;
+ LdapUrl::Scope mScope;
+ int mCompletionWeight = -1;
+};
+
+LdapServer::LdapServer()
+ : d(new LdapServerPrivate)
+{
+ clear();
+}
+
+LdapServer::LdapServer(const LdapUrl &url)
+ : d(new LdapServerPrivate)
+{
+ clear();
+
+ setUrl(url);
+}
+
+LdapServer::LdapServer(const LdapServer &that)
+ : d(new LdapServerPrivate)
+{
+ *d = *that.d;
+}
+
+LdapServer &LdapServer::operator=(const LdapServer &that)
+{
+ if (this == &that) {
+ return *this;
+ }
+
+ *d = *that.d;
+
+ return *this;
+}
+
+LdapServer::~LdapServer() = default;
+
+void LdapServer::clear()
+{
+ d->mPort = 389;
+ d->mHost.clear();
+ d->mUser.clear();
+ d->mBindDn.clear();
+ d->mMech.clear();
+ d->mPassword.clear();
+ d->mSecurity = None;
+ d->mAuth = Anonymous;
+ d->mTLSRequireCertificate = TLSReqCertDefault;
+ d->mTLSCACertFile.clear();
+ d->mVersion = 3;
+ d->mTimeout = 0;
+ d->mSizeLimit = d->mTimeLimit = d->mPageSize = 0;
+ d->mCompletionWeight = -1;
+}
+
+QString LdapServer::host() const
+{
+ return d->mHost;
+}
+
+int LdapServer::port() const
+{
+ return d->mPort;
+}
+
+LdapDN LdapServer::baseDn() const
+{
+ return d->mBaseDn;
+}
+
+QString LdapServer::user() const
+{
+ return d->mUser;
+}
+
+QString LdapServer::bindDn() const
+{
+ return d->mBindDn;
+}
+
+QString LdapServer::realm() const
+{
+ return d->mRealm;
+}
+
+QString LdapServer::password() const
+{
+ return d->mPassword;
+}
+
+QString LdapServer::filter() const
+{
+ return d->mFilter;
+}
+
+LdapUrl::Scope LdapServer::scope() const
+{
+ return d->mScope;
+}
+
+int LdapServer::timeLimit() const
+{
+ return d->mTimeLimit;
+}
+
+int LdapServer::sizeLimit() const
+{
+ return d->mSizeLimit;
+}
+
+int LdapServer::pageSize() const
+{
+ return d->mPageSize;
+}
+
+int LdapServer::version() const
+{
+ return d->mVersion;
+}
+
+LdapServer::Security LdapServer::security() const
+{
+ return d->mSecurity;
+}
+
+LdapServer::Auth LdapServer::auth() const
+{
+ return d->mAuth;
+}
+
+LdapServer::TLSRequireCertificate LdapServer::tlsRequireCertificate() const
+{
+ return d->mTLSRequireCertificate;
+}
+
+QString LdapServer::tlsCACertFile() const
+{
+ return d->mTLSCACertFile;
+}
+
+QString LdapServer::mech() const
+{
+ return d->mMech;
+}
+
+int LdapServer::timeout() const
+{
+ return d->mTimeout;
+}
+
+void LdapServer::setHost(const QString &host)
+{
+ d->mHost = host;
+}
+
+void LdapServer::setPort(int port)
+{
+ d->mPort = port;
+}
+
+void LdapServer::setBaseDn(const LdapDN &baseDn)
+{
+ d->mBaseDn = baseDn;
+}
+
+void LdapServer::setUser(const QString &user)
+{
+ d->mUser = user;
+}
+
+void LdapServer::setBindDn(const QString &bindDn)
+{
+ d->mBindDn = bindDn;
+}
+
+void LdapServer::setRealm(const QString &realm)
+{
+ d->mRealm = realm;
+}
+
+void LdapServer::setPassword(const QString &password)
+{
+ d->mPassword = password;
+}
+
+void LdapServer::setTimeLimit(int timelimit)
+{
+ d->mTimeLimit = timelimit;
+}
+
+void LdapServer::setSizeLimit(int sizelimit)
+{
+ d->mSizeLimit = sizelimit;
+}
+
+void LdapServer::setPageSize(int pagesize)
+{
+ d->mPageSize = pagesize;
+}
+
+void LdapServer::setFilter(const QString &filter)
+{
+ d->mFilter = filter;
+}
+
+void LdapServer::setScope(LdapUrl::Scope scope)
+{
+ d->mScope = scope;
+}
+
+void LdapServer::setVersion(int version)
+{
+ d->mVersion = version;
+}
+
+void LdapServer::setSecurity(Security security)
+{
+ d->mSecurity = security;
+}
+
+void LdapServer::setAuth(Auth auth)
+{
+ d->mAuth = auth;
+}
+
+void LdapServer::setTLSRequireCertificate(LdapServer::TLSRequireCertificate reqCert)
+{
+ d->mTLSRequireCertificate = reqCert;
+}
+
+void LdapServer::setTLSCACertFile(const QString &caCertFile)
+{
+ d->mTLSCACertFile = caCertFile;
+}
+
+void LdapServer::setMech(const QString &mech)
+{
+ d->mMech = mech;
+}
+
+void LdapServer::setTimeout(int timeout)
+{
+ d->mTimeout = timeout;
+}
+
+void LdapServer::setUrl(const LdapUrl &url)
+{
+ bool critical = true;
+
+ d->mHost = url.host();
+ const int port = url.port();
+ if (port <= 0) {
+ d->mPort = 389;
+ } else {
+ d->mPort = port;
+ }
+ d->mBaseDn = url.dn();
+ d->mScope = url.scope();
+
+ d->mFilter = url.filter();
+
+ d->mSecurity = None;
+ if (url.scheme() == QLatin1String("ldaps")) {
+ d->mSecurity = SSL;
+ } else if (url.hasExtension(QStringLiteral("x-tls"))) {
+ d->mSecurity = TLS;
+ }
+ qCDebug(LDAP_LOG) << "security:" << d->mSecurity;
+
+ d->mMech.clear();
+ d->mUser.clear();
+ d->mBindDn.clear();
+ if (url.hasExtension(QStringLiteral("x-sasl"))) {
+ d->mAuth = SASL;
+ if (url.hasExtension(QStringLiteral("x-mech"))) {
+ d->mMech = url.extension(QStringLiteral("x-mech"), critical);
+ }
+ if (url.hasExtension(QStringLiteral("x-realm"))) {
+ d->mRealm = url.extension(QStringLiteral("x-realm"), critical);
+ }
+ if (url.hasExtension(QStringLiteral("bindname"))) {
+ d->mBindDn = url.extension(QStringLiteral("bindname"), critical);
+ }
+ d->mUser = url.userName();
+ } else if (url.hasExtension(QStringLiteral("bindname"))) {
+ d->mAuth = Simple;
+ d->mBindDn = url.extension(QStringLiteral("bindname"), critical);
+ } else {
+ const QString user = url.userName();
+ if (user.isEmpty()) {
+ d->mAuth = Anonymous;
+ } else {
+ d->mAuth = Simple;
+ d->mBindDn = user;
+ }
+ }
+ d->mPassword = url.password();
+ if (url.hasExtension(QStringLiteral("x-version"))) {
+ d->mVersion = url.extension(QStringLiteral("x-version"), critical).toInt();
+ } else {
+ d->mVersion = 3;
+ }
+
+ if (url.hasExtension(QStringLiteral("x-timeout"))) {
+ d->mTimeout = url.extension(QStringLiteral("x-timeout"), critical).toInt();
+ } else {
+ d->mTimeout = 0;
+ }
+
+ if (url.hasExtension(QStringLiteral("x-timelimit"))) {
+ d->mTimeLimit = url.extension(QStringLiteral("x-timelimit"), critical).toInt();
+ } else {
+ d->mTimeLimit = 0;
+ }
+
+ if (url.hasExtension(QStringLiteral("x-sizelimit"))) {
+ d->mSizeLimit = url.extension(QStringLiteral("x-sizelimit"), critical).toInt();
+ } else {
+ d->mSizeLimit = 0;
+ }
+
+ if (url.hasExtension(QStringLiteral("x-pagesize"))) {
+ d->mPageSize = url.extension(QStringLiteral("x-pagesize"), critical).toInt();
+ } else {
+ d->mPageSize = 0;
+ }
+}
+
+LdapUrl LdapServer::url() const
+{
+ LdapUrl url;
+ url.setScheme(d->mSecurity == SSL ? QStringLiteral("ldaps") : QStringLiteral("ldap"));
+ url.setPort(d->mPort);
+ url.setHost(d->mHost);
+ url.setDn(d->mBaseDn);
+ url.setFilter(d->mFilter);
+ url.setScope(d->mScope);
+ if (d->mAuth == SASL) {
+ url.setUserName(d->mUser);
+ url.setPassword(d->mPassword);
+ url.setExtension(QStringLiteral("bindname"), d->mBindDn, true);
+ url.setExtension(QStringLiteral("x-sasl"), QString());
+ if (!d->mMech.isEmpty()) {
+ url.setExtension(QStringLiteral("x-mech"), d->mMech);
+ }
+ if (!d->mRealm.isEmpty()) {
+ url.setExtension(QStringLiteral("x-realm"), d->mRealm);
+ }
+ } else if (d->mAuth == Simple) {
+ url.setUserName(d->mBindDn);
+ url.setPassword(d->mPassword);
+ }
+ if (d->mVersion == 2) {
+ url.setExtension(QStringLiteral("x-version"), d->mVersion);
+ }
+ if (d->mTimeout) {
+ url.setExtension(QStringLiteral("x-timeout"), d->mTimeout);
+ }
+ if (d->mTimeLimit != 0) {
+ url.setExtension(QStringLiteral("x-timelimit"), d->mTimeLimit);
+ }
+ if (d->mSizeLimit != 0) {
+ url.setExtension(QStringLiteral("x-sizelimit"), d->mSizeLimit);
+ }
+ if (d->mPageSize != 0) {
+ url.setExtension(QStringLiteral("x-pagesize"), d->mPageSize);
+ }
+ if (d->mSecurity == TLS) {
+ url.setExtension(QStringLiteral("x-tls"), 1, true);
+ }
+ return url;
+}
+
+void LdapServer::setCompletionWeight(int value)
+{
+ d->mCompletionWeight = value;
+}
+
+int LdapServer::completionWeight() const
+{
+ return d->mCompletionWeight;
+}
+
+QDebug operator<<(QDebug d, const KLDAP::LdapServer &t)
+{
+ d << "completionWeight " << t.completionWeight();
+ d << "timeout " << t.timeout();
+ d << "timeLimit " << t.timeLimit();
+ d << "sizeLimit " << t.sizeLimit();
+ // TODO
+ return d;
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QString>
+
+#include "kldap_export.h"
+#include "ldapdn.h"
+#include "ldapurl.h"
+
+// clazy:excludeall=copyable-polymorphic
+
+namespace KLDAP
+{
+/**
+ * @short A class that contains LDAP server connection settings.
+ *
+ * This class holds various parameters that are needed to connect
+ * to an LDAP server.
+ */
+class KLDAP_EXPORT LdapServer
+{
+public:
+ /**
+ * Creates an empty LDAP server object.
+ */
+ LdapServer();
+
+ /**
+ * Creates a new LDAP server object.
+ *
+ * @param url The LDAP url of the server.
+ */
+ LdapServer(const LdapUrl &url);
+
+ /**
+ * Creates a new LDAP server object from an @p other object.
+ */
+ LdapServer(const LdapServer &other);
+
+ /**
+ * Overwrites the values of the LDAP server object with
+ * the values from an @p other object.
+ */
+ LdapServer &operator=(const LdapServer &other);
+
+ /**
+ * Destroys the LDAP server object.
+ */
+ ~LdapServer();
+
+ /**
+ * Describes the encryption settings that can be used
+ * for the LDAP connection.
+ */
+ using Security = enum {
+ None, ///< Do not use any encryption.
+ TLS, ///< Use TLS encryption.
+ SSL ///< Use SSL encryption.
+ };
+
+ /**
+ * Describes the authentication method that can be used
+ * for the LDAP connection.
+ */
+ using Auth = enum {
+ Anonymous, ///< Do no authentication.
+ Simple, ///< Authenticate via login and password.
+ SASL ///< Azthenticate with the SASL framework.
+ };
+
+ /**
+ * Describes the certificate request and check behaviour
+ * for TLS/SSL connections.
+ */
+ using TLSRequireCertificate = enum {
+ TLSReqCertDefault, ///< Use system defaults
+ TLSReqCertNever, ///< Do not require any certificates.
+ TLSReqCertDemand, ///< Use LDAP_OPT_X_TLS_DEMAND.
+ TLSReqCertAllow, ///< Use LDAP_OPT_X_TLS_ALLOW.
+ TLSReqCertTry, ///< Use LDAP_OPT_X_TLS_TRY.
+ TLSReqCertHard, ///< Use LDAP_OPT_X_TLS_HARD.
+ };
+
+ /**
+ * Clears all server settings.
+ */
+ void clear();
+
+ /**
+ * Sets the host of the LDAP connection.
+ */
+ void setHost(const QString &host);
+
+ /**
+ * Returns the host of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT QString host() const;
+
+ /**
+ * Sets the port of the LDAP connection.
+ * If not port is set, 389 is used as default.
+ * @param port the LDAP port connection to set
+ */
+ void setPort(int port);
+
+ /**
+ * Returns the port of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT int port() const;
+
+ /**
+ * Sets the @p baseDn of the LDAP connection.
+ */
+ void setBaseDn(const LdapDN &baseDn);
+
+ /**
+ * Returns the baseDn of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT LdapDN baseDn() const;
+
+ /**
+ * Sets the @p user of the LDAP connection.
+ */
+ void setUser(const QString &user);
+
+ /**
+ * Returns the user of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT QString user() const;
+
+ /**
+ * Sets the @p bindDn of the LDAP connection.
+ */
+ void setBindDn(const QString &bindDn);
+
+ /**
+ * Returns the bindDn of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT QString bindDn() const;
+
+ /**
+ * Sets the @p realm of the LDAP connection.
+ */
+ void setRealm(const QString &realm);
+
+ /**
+ * Returns the realm of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT QString realm() const;
+
+ /**
+ * Sets the @p password of the LDAP connection.
+ */
+ void setPassword(const QString &password);
+
+ /**
+ * Returns the password of the LDAP connection.
+ */
+ QString password() const;
+
+ /**
+ * Sets the protocol @p version of the LDAP connection.
+ * If no version is set, 3 is used as default.
+ * @param version the protocol version to set
+ */
+ void setVersion(int version);
+
+ /**
+ * Returns the protocol version of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT int version() const;
+
+ /**
+ * Sets the security @p mode of the LDAP connection.
+ * If no security is set, None is used as default.
+ * @param mode the security mode to set
+ */
+ void setSecurity(Security mode);
+
+ /**
+ * Returns the security mode of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT Security security() const;
+
+ /**
+ * Sets the @p authentication method of the LDAP connection.
+ * If no authentication method is set, Anonymous is used as default.
+ * @param authentication the authentication method to set
+ */
+ void setAuth(Auth authentication);
+
+ /**
+ * Returns the authentication method of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT Auth auth() const;
+
+ /**
+ * Sets the certificate require mode for TLS/SSL connections
+ */
+ void setTLSRequireCertificate(TLSRequireCertificate reqCert);
+
+ /**
+ * Returns the certificate require mode for TLS/SSL connections
+ */
+ Q_REQUIRED_RESULT TLSRequireCertificate tlsRequireCertificate() const;
+
+ /**
+ * Sets the CA certificate file for TLS/SSL connections
+ */
+ void setTLSCACertFile(const QString &caCertFile);
+
+ /**
+ * Returns the CA certificate file used for TLS/SSL connections.
+ */
+ Q_REQUIRED_RESULT QString tlsCACertFile() const;
+
+ /**
+ * Sets the @p mech of the LDAP connection.
+ */
+ void setMech(const QString &mech);
+
+ /**
+ * Returns the mech of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT QString mech() const;
+
+ /**
+ * Sets the @p timeout of the LDAP connection.
+ */
+ void setTimeout(int timeout);
+
+ /**
+ * Returns the timeout of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT int timeout() const;
+
+ /**
+ * Sets the search @p scope of the LDAP connection.
+ */
+ void setScope(LdapUrl::Scope scope);
+
+ /**
+ * Returns the search scope of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT LdapUrl::Scope scope() const;
+
+ /**
+ * Sets the time @p limit of the LDAP connection.
+ */
+ void setTimeLimit(int limit);
+
+ /**
+ * Returns the time limit of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT int timeLimit() const;
+
+ /**
+ * Sets the size @p limit of the LDAP connection.
+ */
+ void setSizeLimit(int sizelimit);
+
+ /**
+ * Returns the size limit of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT int sizeLimit() const;
+
+ /**
+ * Sets the page @p size of the LDAP connection.
+ */
+ void setPageSize(int size);
+
+ /**
+ * Returns the page size of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT int pageSize() const;
+
+ /**
+ * Sets the @p filter string of the LDAP connection.
+ */
+ void setFilter(const QString &filter);
+
+ /**
+ * Returns the filter string of the LDAP connection.
+ */
+ Q_REQUIRED_RESULT QString filter() const;
+
+ /**
+ * Sets the server parameters from an RFC2255 compliant LDAP @p url.
+ */
+ void setUrl(const LdapUrl &url);
+
+ /**
+ * Returns the server parameters as an RFC2255 compliant LDAP Url.
+ * The URL extensions which are supported:
+ * Standard: bindname
+ * KLDAP extensions: x-tls, x-version, x-sasl, x-mech, x-realm,
+ * x-sizelimit, x-timelimit, x-pagesize, x-timeout
+ */
+ Q_REQUIRED_RESULT LdapUrl url() const;
+
+ void setCompletionWeight(int value);
+ Q_REQUIRED_RESULT int completionWeight() const;
+
+private:
+ class LdapServerPrivate;
+ std::unique_ptr<LdapServerPrivate> const d;
+};
+}
+KLDAP_EXPORT QDebug operator<<(QDebug d, const KLDAP::LdapServer &t);
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldapurl.h"
+
+#include "ldap_debug.h"
+
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN LdapUrl::LdapUrlPrivate
+{
+public:
+ LdapUrlPrivate()
+ : m_scope(Base)
+ {
+ }
+
+ QMap<QString, Extension> m_extensions;
+ QStringList m_attributes;
+ Scope m_scope;
+ QString m_filter;
+};
+
+LdapUrl::LdapUrl()
+ : d(new LdapUrlPrivate)
+{
+}
+
+LdapUrl::LdapUrl(const QUrl &_url)
+ : QUrl(_url)
+ , d(new LdapUrlPrivate)
+{
+ parseQuery();
+}
+
+LdapUrl::LdapUrl(const LdapUrl &that)
+ : QUrl(that)
+ , d(new LdapUrlPrivate)
+{
+ *d = *that.d;
+}
+
+LdapUrl &LdapUrl::operator=(const LdapUrl &that)
+{
+ if (this == &that) {
+ return *this;
+ }
+
+ QUrl::operator=(that);
+ *d = *that.d;
+
+ return *this;
+}
+
+LdapUrl::~LdapUrl() = default;
+
+void LdapUrl::setDn(const LdapDN &dn)
+{
+ const QString tmp = dn.toString();
+ if (tmp.startsWith(QLatin1Char('/'))) {
+ setPath(tmp);
+ } else {
+ setPath(QLatin1Char('/') + tmp);
+ }
+}
+
+LdapDN LdapUrl::dn() const
+{
+ QString tmp = path();
+ if (tmp.startsWith(QLatin1Char('/'))) {
+ tmp = tmp.mid(1);
+ }
+ LdapDN tmpDN(tmp);
+ return tmpDN;
+}
+
+QStringList LdapUrl::attributes() const
+{
+ return d->m_attributes;
+}
+
+void LdapUrl::setAttributes(const QStringList &attributes)
+{
+ d->m_attributes = attributes;
+ updateQuery();
+}
+
+LdapUrl::Scope LdapUrl::scope() const
+{
+ return d->m_scope;
+}
+
+void LdapUrl::setScope(Scope scope)
+{
+ d->m_scope = scope;
+ updateQuery();
+}
+
+QString LdapUrl::filter() const
+{
+ return d->m_filter;
+}
+
+void LdapUrl::setFilter(const QString &filter)
+{
+ d->m_filter = filter;
+ updateQuery();
+}
+
+bool LdapUrl::hasExtension(const QString &key) const
+{
+ return d->m_extensions.contains(key);
+}
+
+LdapUrl::Extension LdapUrl::extension(const QString &key) const
+{
+ QMap<QString, Extension>::const_iterator it;
+
+ it = d->m_extensions.constFind(key);
+ if (it != d->m_extensions.constEnd()) {
+ return *it;
+ } else {
+ Extension ext;
+ ext.value = QLatin1String("");
+ ext.critical = false;
+ return ext;
+ }
+}
+
+QString LdapUrl::extension(const QString &key, bool &critical) const
+{
+ const Extension ext = extension(key);
+ critical = ext.critical;
+ return ext.value;
+}
+
+void LdapUrl::setExtension(const QString &key, const LdapUrl::Extension &ext)
+{
+ d->m_extensions[key] = ext;
+ updateQuery();
+}
+
+void LdapUrl::setExtension(const QString &key, const QString &value, bool critical)
+{
+ Extension ext;
+ ext.value = value;
+ ext.critical = critical;
+ setExtension(key, ext);
+}
+
+void LdapUrl::setExtension(const QString &key, int value, bool critical)
+{
+ Extension ext;
+ ext.value = QString::number(value);
+ ext.critical = critical;
+ setExtension(key, ext);
+}
+
+void LdapUrl::removeExtension(const QString &key)
+{
+ d->m_extensions.remove(key);
+ updateQuery();
+}
+
+void LdapUrl::updateQuery()
+{
+ QMap<QString, Extension>::const_iterator it;
+ QString q(QLatin1Char('?'));
+
+ // set the attributes to query
+ if (!d->m_attributes.isEmpty()) {
+ q += d->m_attributes.join(QLatin1Char(','));
+ }
+
+ // set the scope
+ q += QLatin1Char('?');
+ switch (d->m_scope) {
+ case Sub:
+ q += QStringLiteral("sub");
+ break;
+ case One:
+ q += QStringLiteral("one");
+ break;
+ case Base:
+ q += QStringLiteral("base");
+ break;
+ }
+
+ // set the filter
+ q += QLatin1Char('?');
+ if (d->m_filter != QLatin1String("(objectClass=*)") && !d->m_filter.isEmpty()) {
+ q += QLatin1String(toPercentEncoding(d->m_filter));
+ }
+
+ // set the extensions
+ q += QLatin1Char('?');
+ for (it = d->m_extensions.constBegin(); it != d->m_extensions.constEnd(); ++it) {
+ if (it.value().critical) {
+ q += QLatin1Char('!');
+ }
+ q += it.key();
+ if (!it.value().value.isEmpty()) {
+ q += QLatin1Char('=') + QLatin1String(toPercentEncoding(it.value().value));
+ }
+ q += QLatin1Char(',');
+ }
+ while (q.endsWith(QLatin1Char('?')) || q.endsWith(QLatin1Char(','))) {
+ q.remove(q.length() - 1, 1);
+ }
+
+ setQuery(q);
+ qCDebug(LDAP_LOG) << "LDAP URL updateQuery():" << toDisplayString();
+}
+
+void LdapUrl::parseQuery()
+{
+ Extension ext;
+ QStringList extensions;
+ QString q = query(QUrl::FullyEncoded);
+ // remove first ?
+ if (q.startsWith(QLatin1Char('?'))) {
+ q.remove(0, 1);
+ }
+
+ // split into a list
+ const QStringList url_items = q.split(QLatin1Char('?'));
+
+ d->m_attributes.clear();
+ d->m_scope = Base;
+ d->m_filter = QStringLiteral("(objectClass=*)");
+ d->m_extensions.clear();
+
+ int i = 0;
+ QStringList::const_iterator end(url_items.constEnd());
+ for (QStringList::const_iterator it = url_items.constBegin(); it != end; ++it, i++) {
+ switch (i) {
+ case 0:
+ d->m_attributes = (*it).split(QLatin1Char(','), Qt::SkipEmptyParts);
+ break;
+ case 1:
+ if ((*it) == QLatin1String("sub")) {
+ d->m_scope = Sub;
+ } else if ((*it) == QLatin1String("one")) {
+ d->m_scope = One;
+ }
+ break;
+ case 2:
+ d->m_filter = fromPercentEncoding((*it).toLatin1());
+ break;
+ case 3:
+ extensions = (*it).split(QLatin1Char(','), Qt::SkipEmptyParts);
+ break;
+ }
+ }
+
+ QString name;
+ QString value;
+ QStringList::const_iterator end2(extensions.constEnd());
+ for (QStringList::const_iterator it = extensions.constBegin(); it != end2; ++it) {
+ ext.critical = false;
+ name = fromPercentEncoding((*it).section(QLatin1Char('='), 0, 0).toLatin1()).toLower();
+ value = fromPercentEncoding((*it).section(QLatin1Char('='), 1).toLatin1());
+ if (name.startsWith(QLatin1Char('!'))) {
+ ext.critical = true;
+ name.remove(0, 1);
+ }
+ qCDebug(LDAP_LOG) << "LdapUrl extensions name=" << name << "value:" << value;
+ ext.value = value.replace(QLatin1String("%2"), QLatin1String(","));
+ setExtension(name, ext);
+ }
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QStringList>
+
+#include <QUrl>
+
+#include "kldap_export.h"
+#include "ldapdn.h"
+
+// clazy:excludeall=copyable-polymorphic
+
+namespace KLDAP
+{
+/**
+ * @short A special url class for LDAP.
+ *
+ * LdapUrl implements an RFC 2255 compliant LDAP Url parser, with minimal
+ * differences. LDAP Urls implemented by this class has the following format:
+ * ldap[s]://[user[:password]@]hostname[:port]["/" [dn ["?" [attributes]
+ * ["?" [scope] ["?" [filter] ["?" extensions]]]]]]
+ */
+class KLDAP_EXPORT LdapUrl : public QUrl
+{
+public:
+ /**
+ * A class holding the extension name and state whether
+ * the extension is critical.
+ */
+ using Extension = struct {
+ QString value;
+ bool critical;
+ };
+
+ /**
+ * Describes the scope of the LDAP url.
+ */
+ using Scope = enum {
+ Base, ///< Only the same level as the url.
+ One, ///< The level of the url and the one below.
+ Sub ///< All levels below the url's level.
+ };
+
+ /**
+ * Constructs an empty LDAP url.
+ */
+ LdapUrl();
+
+ /**
+ * Constructs a LDAP url from a KUrl @p url.
+ */
+ explicit LdapUrl(const QUrl &url);
+
+ /**
+ * Constructs a LDAP url from an other url.
+ */
+ LdapUrl(const LdapUrl &other);
+
+ /**
+ * Overwrites the values of the LDAP url with values
+ * from an @p other url.
+ */
+ LdapUrl &operator=(const LdapUrl &other);
+
+ /**
+ * Destroys the LDAP url.
+ */
+ ~LdapUrl();
+
+ /**
+ * Sets the @p dn part of the LDAP url.
+ */
+ void setDn(const LdapDN &dn);
+
+ /**
+ * Returns the dn part of the LDAP url.
+ * This is equal to path() with the slash removed from the beginning.
+ */
+ Q_REQUIRED_RESULT LdapDN dn() const;
+
+ /**
+ * Sets the @p attributes part of the LDAP url.
+ */
+ void setAttributes(const QStringList &attributes);
+
+ /**
+ * Returns the attributes part of the LDAP url.
+ */
+ Q_REQUIRED_RESULT QStringList attributes() const;
+
+ /**
+ * Sets the scope part of the LDAP url.
+ */
+ void setScope(Scope scope);
+
+ /**
+ * Returns the scope part of the LDAP url.
+ */
+ Q_REQUIRED_RESULT Scope scope() const;
+
+ /**
+ * Sets the filter part of the LDAP url.
+ */
+ void setFilter(const QString &filter);
+
+ /**
+ * Returns the filter part of the LDAP url.
+ */
+ Q_REQUIRED_RESULT QString filter() const;
+
+ /**
+ * Returns whether the specified @p extension exists in the LDAP url.
+ */
+ Q_REQUIRED_RESULT bool hasExtension(const QString &extension) const;
+
+ /**
+ * Returns the specified @p extension.
+ */
+ Q_REQUIRED_RESULT Extension extension(const QString &extension) const;
+
+ /**
+ * Returns the specified @p extension.
+ */
+ Q_REQUIRED_RESULT QString extension(const QString &extension, bool &critical) const;
+
+ /**
+ * Sets the specified extension @p key with the value and criticality in @p extension.
+ */
+ void setExtension(const QString &key, const Extension &extension);
+
+ /**
+ * Sets the specified extension @p key with the @p value and criticality specified.
+ */
+ void setExtension(const QString &key, const QString &value, bool critical = false);
+
+ /**
+ * Sets the specified extension @p key with the @p value and criticality specified.
+ */
+ void setExtension(const QString &key, int value, bool critical = false);
+
+ /**
+ * Removes the specified @p extension.
+ */
+ void removeExtension(const QString &extension);
+
+ /**
+ * Updates the query component from the attributes, scope, filter and extensions.
+ */
+ void updateQuery();
+
+ /**
+ * Parses the query argument of the URL and makes it available via the
+ * attributes(), extension(), filter() and scope() methods
+ */
+ void parseQuery();
+
+private:
+ class LdapUrlPrivate;
+ std::unique_ptr<LdapUrlPrivate> const d;
+};
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldif.h"
+
+#include "ldap_debug.h"
+
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN Ldif::LdifPrivate
+{
+public:
+ int mModType;
+ bool mDelOldRdn, mUrl;
+ LdapDN mDn;
+ QString mAttr, mNewRdn, mNewSuperior, mOid;
+ QByteArray mLdif, mValue;
+ EntryType mEntryType;
+
+ bool mIsNewLine, mIsComment, mCritical;
+ ParseValue mLastParseValue;
+ uint mPos, mLineNumber;
+ QByteArray mLine;
+};
+
+Ldif::Ldif()
+ : d(new LdifPrivate)
+{
+ startParsing();
+}
+
+Ldif::Ldif(const Ldif &that)
+ : d(new LdifPrivate)
+{
+ *d = *that.d;
+
+ startParsing();
+}
+
+Ldif &Ldif::operator=(const Ldif &that)
+{
+ if (this == &that) {
+ return *this;
+ }
+
+ *d = *that.d;
+
+ return *this;
+}
+
+Ldif::~Ldif() = default;
+
+QByteArray Ldif::assembleLine(const QString &fieldname, const QByteArray &value, uint linelen, bool url)
+{
+ QByteArray result;
+
+ if (url) {
+ result = fieldname.toUtf8() + ":< " + value;
+ } else {
+ bool safe = false;
+ bool isDn = fieldname.toLower() == QLatin1String("dn");
+ // SAFE-INIT-CHAR
+ if (!value.isEmpty() && value[0] > 0 && value[0] != '\n' && value[0] != '\r' && value[0] != ':' && value[0] != '<') {
+ safe = true;
+ }
+
+ // SAFE-CHAR
+ if (safe) {
+ for (int i = 1; i < value.size(); i++) {
+ // allow utf-8 in Distinguished Names
+ if ((isDn && value[i] == 0) || (!isDn && value[i] <= 0) || value[i] == '\r' || value[i] == '\n') {
+ safe = false;
+ break;
+ }
+ }
+ }
+
+ if (value.isEmpty()) {
+ safe = true;
+ }
+
+ if (safe) {
+ result = fieldname.toUtf8() + ": " + value;
+ } else {
+ result = fieldname.toUtf8() + ":: " + value.toBase64();
+ }
+
+ if (linelen > 0) {
+ int i = (uint)(fieldname.length() + 2) > linelen ? fieldname.length() + 2 : linelen;
+ while (i < result.length()) {
+ result.insert(i, "\n ");
+ i += linelen + 2;
+ }
+ }
+ }
+ return result;
+}
+
+QByteArray Ldif::assembleLine(const QString &fieldname, const QString &value, uint linelen, bool url)
+{
+ return assembleLine(fieldname, value.toUtf8(), linelen, url);
+}
+
+bool Ldif::splitLine(const QByteArray &line, QString &fieldname, QByteArray &value)
+{
+ int position;
+ int linelen;
+
+ // qCDebug(LDAP_LOG) << "line:" << QString::fromUtf8(line);
+
+ position = line.indexOf(":");
+ if (position == -1) {
+ // strange: we did not find a fieldname
+ fieldname = QLatin1String("");
+ value = line.trimmed();
+ // qCDebug(LDAP_LOG) << "value :" << value[0];
+ return false;
+ }
+
+ linelen = line.size();
+ fieldname = QString::fromUtf8(line.left(position).trimmed());
+
+ if (linelen > (position + 1) && line[position + 1] == ':') {
+ // String is BASE64 encoded -> decode it now.
+ if (linelen <= (position + 3)) {
+ value.resize(0);
+ return false;
+ }
+ value = QByteArray::fromBase64(line.mid(position + 3));
+ return false;
+ }
+
+ if (linelen > (position + 1) && line[position + 1] == '<') {
+ // String is an URL.
+ if (linelen <= (position + 3)) {
+ value.resize(0);
+ return false;
+ }
+ value = QByteArray::fromBase64(line.mid(position + 3));
+ return true;
+ }
+
+ if (linelen <= (position + 2)) {
+ value.resize(0);
+ return false;
+ }
+ value = line.mid(position + 2);
+ return false;
+}
+
+bool Ldif::splitControl(const QByteArray &line, QString &oid, bool &critical, QByteArray &value)
+{
+ QString tmp;
+ critical = false;
+ bool url = splitLine(line, tmp, value);
+
+ qCDebug(LDAP_LOG) << "value:" << QString::fromUtf8(value);
+ if (tmp.isEmpty()) {
+ tmp = QString::fromUtf8(value);
+ value.resize(0);
+ }
+ if (tmp.endsWith(QLatin1String("true"))) {
+ critical = true;
+ tmp.chop(5);
+ } else if (tmp.endsWith(QLatin1String("false"))) {
+ critical = false;
+ tmp.chop(6);
+ }
+ oid = tmp;
+ return url;
+}
+
+Ldif::ParseValue Ldif::processLine()
+{
+ if (d->mIsComment) {
+ return None;
+ }
+
+ ParseValue retval = None;
+ if (d->mLastParseValue == EndEntry) {
+ d->mEntryType = Entry_None;
+ }
+
+ d->mUrl = splitLine(d->mLine, d->mAttr, d->mValue);
+
+ const QString attrLower = d->mAttr.toLower();
+
+ switch (d->mEntryType) {
+ case Entry_None:
+ if (attrLower == QLatin1String("version")) {
+ if (!d->mDn.isEmpty()) {
+ retval = Err;
+ }
+ } else if (attrLower == QLatin1String("dn")) {
+ qCDebug(LDAP_LOG) << "ldapentry dn:" << QString::fromUtf8(d->mValue);
+ d->mDn = LdapDN(QString::fromUtf8(d->mValue));
+ d->mModType = Mod_None;
+ retval = NewEntry;
+ } else if (attrLower == QLatin1String("changetype")) {
+ if (d->mDn.isEmpty()) {
+ retval = Err;
+ } else {
+ QString tmpval = QString::fromUtf8(d->mValue);
+ qCDebug(LDAP_LOG) << "changetype:" << tmpval;
+ if (tmpval == QLatin1String("add")) {
+ d->mEntryType = Entry_Add;
+ } else if (tmpval == QLatin1String("delete")) {
+ d->mEntryType = Entry_Del;
+ } else if (tmpval == QLatin1String("modrdn") || tmpval == QLatin1String("moddn")) {
+ d->mNewRdn.clear();
+ d->mNewSuperior.clear();
+ d->mDelOldRdn = true;
+ d->mEntryType = Entry_Modrdn;
+ } else if (tmpval == QLatin1String("modify")) {
+ d->mEntryType = Entry_Mod;
+ } else {
+ retval = Err;
+ }
+ }
+ } else if (attrLower == QLatin1String("control")) {
+ d->mUrl = splitControl(d->mValue, d->mOid, d->mCritical, d->mValue);
+ retval = Control;
+ } else if (!d->mAttr.isEmpty() && !d->mValue.isEmpty()) {
+ d->mEntryType = Entry_Add;
+ retval = Item;
+ }
+ break;
+ case Entry_Add:
+ if (d->mAttr.isEmpty() && d->mValue.isEmpty()) {
+ retval = EndEntry;
+ } else {
+ retval = Item;
+ }
+ break;
+ case Entry_Del:
+ if (d->mAttr.isEmpty() && d->mValue.isEmpty()) {
+ retval = EndEntry;
+ } else {
+ retval = Err;
+ }
+ break;
+ case Entry_Mod:
+ if (d->mModType == Mod_None) {
+ qCDebug(LDAP_LOG) << "new modtype" << d->mAttr;
+ if (d->mAttr.isEmpty() && d->mValue.isEmpty()) {
+ retval = EndEntry;
+ } else if (attrLower == QLatin1String("add")) {
+ d->mModType = Mod_Add;
+ } else if (attrLower == QLatin1String("replace")) {
+ d->mModType = Mod_Replace;
+ d->mAttr = QString::fromUtf8(d->mValue);
+ d->mValue = QByteArray();
+ retval = Item;
+ } else if (attrLower == QLatin1String("delete")) {
+ d->mModType = Mod_Del;
+ d->mAttr = QString::fromUtf8(d->mValue);
+ d->mValue = QByteArray();
+ retval = Item;
+ } else {
+ retval = Err;
+ }
+ } else {
+ if (d->mAttr.isEmpty()) {
+ if (QString::fromUtf8(d->mValue) == QLatin1String("-")) {
+ d->mModType = Mod_None;
+ } else if (d->mValue.isEmpty()) {
+ retval = EndEntry;
+ } else {
+ retval = Err;
+ }
+ } else {
+ retval = Item;
+ }
+ }
+ break;
+ case Entry_Modrdn:
+ if (d->mAttr.isEmpty() && d->mValue.isEmpty()) {
+ retval = EndEntry;
+ } else if (attrLower == QLatin1String("newrdn")) {
+ d->mNewRdn = QString::fromUtf8(d->mValue);
+ } else if (attrLower == QLatin1String("newsuperior")) {
+ d->mNewSuperior = QString::fromUtf8(d->mValue);
+ } else if (attrLower == QLatin1String("deleteoldrdn")) {
+ if (d->mValue.size() > 0 && d->mValue[0] == '0') {
+ d->mDelOldRdn = false;
+ } else if (d->mValue.size() > 0 && d->mValue[0] == '1') {
+ d->mDelOldRdn = true;
+ } else {
+ retval = Err;
+ }
+ } else {
+ retval = Err;
+ }
+ break;
+ }
+ return retval;
+}
+
+Ldif::ParseValue Ldif::nextItem()
+{
+ ParseValue retval = None;
+ char c = 0;
+
+ while (retval == None) {
+ if (d->mPos < (uint)d->mLdif.size()) {
+ c = d->mLdif.at(d->mPos);
+ d->mPos++;
+ if (d->mIsNewLine && c == '\r') {
+ continue; // handle \n\r line end
+ }
+ if (d->mIsNewLine && (c == ' ' || c == '\t')) { // line folding
+ d->mIsNewLine = false;
+ continue;
+ }
+ if (d->mIsNewLine) {
+ d->mIsNewLine = false;
+ retval = processLine();
+ d->mLastParseValue = retval;
+ d->mLine.resize(0);
+ d->mIsComment = (c == '#');
+ }
+ if (c == '\n' || c == '\r') {
+ d->mLineNumber++;
+ d->mIsNewLine = true;
+ continue;
+ }
+ } else {
+ retval = MoreData;
+ break;
+ }
+
+ if (!d->mIsComment) {
+ d->mLine += c;
+ }
+ }
+ return retval;
+}
+
+void Ldif::endLdif()
+{
+ QByteArray tmp(3, '\n');
+ d->mLdif = tmp;
+ d->mPos = 0;
+}
+
+void Ldif::startParsing()
+{
+ d->mPos = d->mLineNumber = 0;
+ d->mDelOldRdn = false;
+ d->mEntryType = Entry_None;
+ d->mModType = Mod_None;
+ d->mDn = LdapDN();
+ d->mNewRdn.clear();
+ d->mNewSuperior.clear();
+ d->mLine = QByteArray();
+ d->mIsNewLine = false;
+ d->mIsComment = false;
+ d->mLastParseValue = None;
+}
+
+void Ldif::setLdif(const QByteArray &ldif)
+{
+ d->mLdif = ldif;
+ d->mPos = 0;
+}
+
+Ldif::EntryType Ldif::entryType() const
+{
+ return d->mEntryType;
+}
+
+int Ldif::modType() const
+{
+ return d->mModType;
+}
+
+LdapDN Ldif::dn() const
+{
+ return d->mDn;
+}
+
+QString Ldif::newRdn() const
+{
+ return d->mNewRdn;
+}
+
+QString Ldif::newSuperior() const
+{
+ return d->mNewSuperior;
+}
+
+bool Ldif::delOldRdn() const
+{
+ return d->mDelOldRdn;
+}
+
+QString Ldif::attr() const
+{
+ return d->mAttr;
+}
+
+QByteArray Ldif::value() const
+{
+ return d->mValue;
+}
+
+bool Ldif::isUrl() const
+{
+ return d->mUrl;
+}
+
+bool Ldif::isCritical() const
+{
+ return d->mCritical;
+}
+
+QString Ldif::oid() const
+{
+ return d->mOid;
+}
+
+uint Ldif::lineNumber() const
+{
+ return d->mLineNumber;
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QByteArray>
+#include <QString>
+
+#include "kldap_export.h"
+#include "ldapdn.h"
+
+// clazy:excludeall=copyable-polymorphic
+
+namespace KLDAP
+{
+/**
+ * Ldif
+ *
+ * Ldif implements an RFC 2849 compliant Ldif parser. Ldif files are used to
+ * represent directory information on LDAP-based servers, or to describe a set
+ * of changes which are to be applied to a directory.
+ */
+
+class KLDAP_EXPORT Ldif
+{
+public:
+ using ParseValue = enum { None, NewEntry, EndEntry, Item, Control, Err, MoreData };
+
+ using EntryType = enum { Entry_None, Entry_Add, Entry_Del, Entry_Mod, Entry_Modrdn };
+
+ using ModType = enum { Mod_None, Mod_Add, Mod_Replace, Mod_Del };
+
+ Ldif();
+
+ Ldif(const Ldif &that);
+ Ldif &operator=(const Ldif &that);
+
+ ~Ldif();
+
+ /**
+ * Assembles fieldname and value into a valid Ldif line, BASE64 encodes the
+ * value if necessary and optionally splits into more lines.
+ * @param fieldname The name of the entry.
+ * @param value The value of the entry.
+ * @param linelen Maximum length of the lines in the result.
+ * @param url If true, encode value as url ( use :< ).
+ */
+ Q_REQUIRED_RESULT static QByteArray assembleLine(const QString &fieldname, const QByteArray &value, uint linelen = 0, bool url = false);
+ /**
+ * This is the same as the above function, the only difference that
+ * this accepts QString as the value.
+ */
+ Q_REQUIRED_RESULT static QByteArray assembleLine(const QString &fieldname, const QString &value, uint linelen = 0, bool url = false);
+
+ /**
+ * Splits one line from an Ldif file to attribute and value components.
+ * @return true if value is an URL, false otherwise
+ */
+ Q_REQUIRED_RESULT static bool splitLine(const QByteArray &line, QString &fieldname, QByteArray &value);
+
+ /**
+ * Splits a control specification (without the "control:" directive)
+ * @param line is the control directive
+ * @param oid will contain the OID
+ * @param critical will contain the criticality of control
+ * @param value is the control value
+ */
+ Q_REQUIRED_RESULT static bool splitControl(const QByteArray &line, QString &oid, bool &critical, QByteArray &value);
+
+ /**
+ * Starts the parsing of a new Ldif
+ */
+ void startParsing();
+
+ /**
+ * Process one Ldif line
+ */
+ Q_REQUIRED_RESULT ParseValue processLine();
+
+ /**
+ * Process the Ldif until a complete item can be returned
+ * @return NewEntry if a new DN encountered, Item if a new item returned,
+ * Err if the Ldif contains error, EndEntry if the parser reached the end
+ * of the current entry and MoreData if the parser encountered the end of
+ * the current chunk of the Ldif.
+ *
+ * If you want to finish the parsing after receiving MoreData, then call
+ * endLdif(), so the parser can safely flush the current entry.
+ */
+ Q_REQUIRED_RESULT ParseValue nextItem();
+
+ /**
+ * Sets a chunk of Ldif. Call before startParsing(), or if nextItem()
+ * returned MoreData.
+ * @param ldif the Ldif chunk to set
+ */
+ void setLdif(const QByteArray &ldif);
+
+ /**
+ * Indicates the end of the Ldif file/stream. Call if nextItem() returned
+ * MoreData, but actually you don't have more data.
+ */
+ void endLdif();
+
+ /**
+ * Returns the requested LDAP operation extracted from the current entry.
+ */
+ Q_REQUIRED_RESULT EntryType entryType() const;
+
+ /**
+ * Returns the LDAP modify request type if entryType() returned Entry_Mod.
+ */
+ Q_REQUIRED_RESULT int modType() const;
+
+ /**
+ * Returns the Distinguished Name of the current entry.
+ */
+ Q_REQUIRED_RESULT LdapDN dn() const;
+
+ /**
+ * Returns the new Relative Distinguished Name if modType() returned
+ * Entry_Modrdn.
+ */
+ Q_REQUIRED_RESULT QString newRdn() const;
+
+ /**
+ * Returns the new parent of the entry if modType() returned Entry_Modrdn.
+ */
+ QString newSuperior() const;
+
+ /**
+ * Returns if the delete of the old RDN is required.
+ */
+ Q_REQUIRED_RESULT bool delOldRdn() const;
+
+ /**
+ * Returns the attribute name.
+ */
+ Q_REQUIRED_RESULT QString attr() const;
+
+ /**
+ * Returns the attribute value.
+ */
+ Q_REQUIRED_RESULT QByteArray value() const;
+
+ /**
+ * Returns if val() is an url
+ */
+ Q_REQUIRED_RESULT bool isUrl() const;
+
+ /**
+ * Returns the criticality level when modType() returned Control.
+ */
+ Q_REQUIRED_RESULT bool isCritical() const;
+
+ /**
+ * Returns the OID when modType() returned Control.
+ */
+ Q_REQUIRED_RESULT QString oid() const;
+
+ /**
+ * Returns the line number which the parser processes.
+ */
+ Q_REQUIRED_RESULT uint lineNumber() const;
+
+private:
+ class LdifPrivate;
+ std::unique_ptr<LdifPrivate> const d;
+};
+}
--- /dev/null
+// krazy:excludeall=style
+/* w32-ldap-help.h - Map utf8 based API into a wchar_t API.
+
+ SPDX-FileCopyrightText: 2010 Andre Heinecke <aheinecke@intevation.de>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+
+#include <windows.h>
+#ifdef UNICODE
+#undef UNICODE
+#include <winber.h>
+#include <winldap.h>
+#define UNICODE
+#else
+#include <winber.h>
+#include <winldap.h>
+#endif // UNICODE
+
+/*
+ * From the openldap manpage:
+ * ber_len_t is an unsigned integer of at least 32 bits used to represent
+ * a length. It is commonly equivalent to a size_t. ber_slen_t is the
+ * signed variant to ber_len_t.
+ */
+typedef ULONG ber_len_t;
+
+#ifndef timeval
+#define timeval l_timeval
+#endif
+
+/* Redirect used ldap functions to functions with win_ prefix
+ * to further redirect those depending on the Windows Flavour */
+//#define ldap_err2string(a) win_ldap_err2string(a)
+#define ldap_init(a, b) win_ldap_init(a, b)
+#define ldap_sasl_bind(a, b, c, d, e, f, g) win_ldap_sasl_bind(a, b, c, d, e, f, g)
+#define ldap_sasl_bind_s(a, b, c, d, e, f, g) win_ldap_sasl_bind_s(a, b, c, d, e, f, g)
+#define ldap_parse_sasl_bind_result (a, b, c, d, e) win_ldap_parse_sasl_bind_result((a), (b), (c), (d), (e))
+#define ldap_get_dn(a, b) win_ldap_get_dn(a, b)
+#define ldap_memfree(a) win_ldap_memfree(a)
+#define ldap_mods_free(a, b) win_ldap_mods_free(a, b)
+#define ldap_first_attribute(a, b, c) win_ldap_first_attribute(a, b, c)
+#define ldap_get_values_len(a, b, c) win_ldap_get_values_len(a, b, c)
+#define ldap_next_attribute(a, b, c) win_ldap_next_attribute(a, b, c)
+#define ldap_parse_result(a, b, c, d, e, f, g, h) win_ldap_parse_result(a, b, c, d, e, f, g, h)
+#define ldap_parse_extended_result(a, b, c, d, e) win_ldap_parse_extended_result(a, b, c, d, e)
+#define ldap_add_ext(a, b, c, d, e, f) win_ldap_add_ext((a), (b), (c), (d), (e), (f))
+#define ldap_add_ext_s(a, b, c, d, e) win_ldap_add_ext_s((a), (b), (c), (d), (e))
+#define ldap_compare_ext_s(a, b, c, d, e, f) win_ldap_compare_ext_s((a), (b), (c), (d), (e), (f))
+#define ldap_compare_ext(a, b, c, d, e, f, g) win_ldap_compare_ext((a), (b), (c), (d), (e), (f), (g))
+#define ldap_modify_ext_s(a, b, c, d, e) win_ldap_modify_ext_s((a), (b), (c), (d), (e))
+#define ldap_search_ext(a, b, c, d, e, f, g, h, i, j, k) win_ldap_search_ext((a), (b), (c), (d), (e), (f), (g), (h), (i), (j), (k))
+#define ldap_rename_ext(a, b, c, d, e, f, g, h) win_ldap_rename_ext((a), (b), (c), (d), (e), (f), (g), (h))
+#define ldap_rename(a, b, c, d, e, f, g, h) ldap_rename_ext((a), (b), (c), (d), (e), (f), (g), (h))
+#define ldap_delete_ext(a, b, c, d, e) win_ldap_delete_ext((a), (b), (c), (d), (e))
+#define ldap_modify_ext(a, b, c, d, e, f) win_ldap_modify_ext((a), (b), (c), (d), (e), (f))
+#define ldap_abandon_ext(a, b, c, d) win_ldap_abandon_ext((a), (b), (c), (d))
+#define ldap_controls_free(a) win_ldap_controls_free(a)
+
+// Use the functions that are available on the platform
+// or redirect to wrapper functions
+
+/* Windows offers ASCII variants of most LDAP functions
+ * we only have to ensure that those are used */
+#define LDAPControl LDAPControlA
+#define LDAPMod LDAPModA
+#define win_ldap_init(a, b) ldap_initA((a), (b))
+#define win_ldap_simple_bind_s(a, b, c) ldap_simple_bind_sA((a), (b), (c))
+#define win_ldap_sasl_bind(a, b, c, d, e, f, g) ldap_sasl_bindA(a, b, c, d, e, f, g)
+#define win_ldap_sasl_bind_s(a, b, c, d, e, f, g) ldap_sasl_bind_sA(a, b, c, d, e, f, g)
+#define win_ldap_search_st(a, b, c, d, e, f, g, h) ldap_search_stA((a), (b), (c), (d), (e), (f), (g), (h))
+#define win_ldap_search_ext(a, b, c, d, e, f, g, h, i, j, k) my_win_ldap_search_ext((a), (b), (c), (d), (e), (f), (g), (h), (i), (j), (k))
+#define win_ldap_get_dn(a, b) ldap_get_dnA((a), (b))
+#define win_ldap_first_attribute(a, b, c) ldap_first_attributeA((a), (b), (c))
+#define win_ldap_next_attribute(a, b, c) ldap_next_attributeA((a), (b), (c))
+#define win_ldap_get_values_len(a, b, c) ldap_get_values_lenA((a), (b), (c))
+#define win_ldap_memfree(a) ldap_memfreeA((a))
+#define win_ldap_err2string(a) ldap_err2stringA((a))
+#define win_ldap_controls_free(a) ldap_controls_freeA((a))
+#define win_ldap_mods_free(a, b) ldap_mods_freeA((a), (b))
+#define win_ldap_add_ext(a, b, c, d, e, f) ldap_add_extA((a), (b), (c), (d), (e), ((ulong *)f))
+#define win_ldap_add_ext_s(a, b, c, d, e) ldap_add_ext_sA((a), (b), (c), (d), (e))
+#define win_ldap_parse_extended_result(a, b, c, d, e) ldap_parse_extended_resultA((*a), (b), (c), (d), (e))
+#define win_ldap_parse_result(a, b, c, d, e, f, g, h) ldap_parse_resultA((a), (b), ((ulong *)c), (d), (e), (f), (g), (h))
+#define win_ldap_modify_ext_s(a, b, c, d, e) ldap_modify_ext_sW((a), (b), (c), (d), (e))
+#define win_ldap_compare_ext_s(a, b, c, d, e, f) ldap_compare_ext_sA((a), (b), (c), (d), (e), (f))
--- /dev/null
+#cmakedefine01 HAVE_LDAP_EXTENDED_OPERATION
+#cmakedefine01 HAVE_LDAP_EXTENDED_OPERATION_S
+#cmakedefine01 LDAP_FOUND
+#cmakedefine01 HAVE_WINLDAP_H
+#cmakedefine01 HAVE_SYS_TIME_H
+#cmakedefine01 HAVE_LDAP_START_TLS_S
+#cmakedefine01 HAVE_LDAP_INITIALIZE
+#cmakedefine01 HAVE_BER_MEMFREE
+#cmakedefine01 HAVE_LDAP_UNBIND_EXT
--- /dev/null
+/*
+ This file is part of libkldap.
+
+ SPDX-FileCopyrightText: 2002-2010 Tobias Koenig <tokoe@kde.org>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "addhostdialog.h"
+
+#include <KAcceleratorManager>
+#include <KConfigGroup>
+#include <KLocalizedString>
+#include <KSharedConfig>
+#include <QDialogButtonBox>
+#include <QHBoxLayout>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <kldap/ldapconfigwidget.h>
+#include <kldap/ldapserver.h>
+
+using namespace KLDAP;
+class KLDAP::AddHostDialogPrivate
+{
+public:
+ AddHostDialogPrivate(AddHostDialog *qq)
+ : q(qq)
+ {
+ }
+
+ ~AddHostDialogPrivate()
+ {
+ writeConfig();
+ }
+
+ void readConfig();
+ void writeConfig();
+ KLDAP::LdapConfigWidget *mCfg = nullptr;
+ KLDAP::LdapServer *mServer = nullptr;
+ QPushButton *mOkButton = nullptr;
+ AddHostDialog *const q;
+};
+
+void AddHostDialogPrivate::readConfig()
+{
+ KConfigGroup group(KSharedConfig::openStateConfig(), "AddHostDialog");
+ const QSize size = group.readEntry("Size", QSize(600, 400));
+ if (size.isValid()) {
+ q->resize(size);
+ }
+}
+
+void AddHostDialogPrivate::writeConfig()
+{
+ KConfigGroup group(KSharedConfig::openStateConfig(), "AddHostDialog");
+ group.writeEntry("Size", q->size());
+ group.sync();
+}
+
+AddHostDialog::AddHostDialog(KLDAP::LdapServer *server, QWidget *parent)
+ : QDialog(parent)
+ , d(new KLDAP::AddHostDialogPrivate(this))
+{
+ setWindowTitle(i18nc("@title:window", "Add Host"));
+ auto mainLayout = new QVBoxLayout(this);
+ auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
+ d->mOkButton = buttonBox->button(QDialogButtonBox::Ok);
+ d->mOkButton->setDefault(true);
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ d->mOkButton->setShortcut(Qt::CTRL | Qt::Key_Return);
+#else
+ d->mOkButton->setShortcut({Qt::CTRL, Qt::Key_Return});
+#endif
+ connect(buttonBox, &QDialogButtonBox::rejected, this, &AddHostDialog::reject);
+
+ setModal(true);
+
+ d->mServer = server;
+
+ auto page = new QWidget(this);
+ mainLayout->addWidget(page);
+ mainLayout->addWidget(buttonBox);
+ auto layout = new QHBoxLayout(page);
+ layout->setContentsMargins(0, 0, 0, 0);
+
+ d->mCfg = new KLDAP::LdapConfigWidget(KLDAP::LdapConfigWidget::W_USER | KLDAP::LdapConfigWidget::W_PASS | KLDAP::LdapConfigWidget::W_BINDDN
+ | KLDAP::LdapConfigWidget::W_REALM | KLDAP::LdapConfigWidget::W_HOST | KLDAP::LdapConfigWidget::W_PORT
+ | KLDAP::LdapConfigWidget::W_VER | KLDAP::LdapConfigWidget::W_TIMELIMIT | KLDAP::LdapConfigWidget::W_SIZELIMIT
+ | KLDAP::LdapConfigWidget::W_PAGESIZE | KLDAP::LdapConfigWidget::W_DN | KLDAP::LdapConfigWidget::W_FILTER
+ | KLDAP::LdapConfigWidget::W_SECBOX | KLDAP::LdapConfigWidget::W_AUTHBOX,
+ page);
+
+ layout->addWidget(d->mCfg);
+ d->mCfg->setHost(d->mServer->host());
+ d->mCfg->setPort(d->mServer->port());
+ d->mCfg->setDn(d->mServer->baseDn());
+ d->mCfg->setUser(d->mServer->user());
+ d->mCfg->setBindDn(d->mServer->bindDn());
+ d->mCfg->setPassword(d->mServer->password());
+ d->mCfg->setTimeLimit(d->mServer->timeLimit());
+ d->mCfg->setSizeLimit(d->mServer->sizeLimit());
+ d->mCfg->setPageSize(d->mServer->pageSize());
+ d->mCfg->setVersion(d->mServer->version());
+ d->mCfg->setFilter(d->mServer->filter());
+ switch (d->mServer->security()) {
+ case KLDAP::LdapServer::TLS:
+ d->mCfg->setSecurity(KLDAP::LdapConfigWidget::TLS);
+ break;
+ case KLDAP::LdapServer::SSL:
+ d->mCfg->setSecurity(KLDAP::LdapConfigWidget::SSL);
+ break;
+ default:
+ d->mCfg->setSecurity(KLDAP::LdapConfigWidget::None);
+ }
+
+ switch (d->mServer->auth()) {
+ case KLDAP::LdapServer::Simple:
+ d->mCfg->setAuth(KLDAP::LdapConfigWidget::Simple);
+ break;
+ case KLDAP::LdapServer::SASL:
+ d->mCfg->setAuth(KLDAP::LdapConfigWidget::SASL);
+ break;
+ default:
+ d->mCfg->setAuth(KLDAP::LdapConfigWidget::Anonymous);
+ }
+ d->mCfg->setMech(d->mServer->mech());
+
+ KAcceleratorManager::manage(this);
+ connect(d->mCfg, &KLDAP::LdapConfigWidget::hostNameChanged, this, &AddHostDialog::slotHostEditChanged);
+ connect(d->mOkButton, &QPushButton::clicked, this, &AddHostDialog::slotOk);
+ d->mOkButton->setEnabled(!d->mServer->host().isEmpty());
+ d->readConfig();
+}
+
+AddHostDialog::~AddHostDialog() = default;
+
+void AddHostDialog::slotHostEditChanged(const QString &text)
+{
+ d->mOkButton->setEnabled(!text.isEmpty());
+}
+
+void AddHostDialog::slotOk()
+{
+ d->mServer->setHost(d->mCfg->host());
+ d->mServer->setPort(d->mCfg->port());
+ d->mServer->setBaseDn(d->mCfg->dn());
+ d->mServer->setUser(d->mCfg->user());
+ d->mServer->setBindDn(d->mCfg->bindDn());
+ d->mServer->setPassword(d->mCfg->password());
+ d->mServer->setTimeLimit(d->mCfg->timeLimit());
+ d->mServer->setSizeLimit(d->mCfg->sizeLimit());
+ d->mServer->setPageSize(d->mCfg->pageSize());
+ d->mServer->setVersion(d->mCfg->version());
+ d->mServer->setFilter(d->mCfg->filter());
+ switch (d->mCfg->security()) {
+ case KLDAP::LdapConfigWidget::TLS:
+ d->mServer->setSecurity(KLDAP::LdapServer::TLS);
+ break;
+ case KLDAP::LdapConfigWidget::SSL:
+ d->mServer->setSecurity(KLDAP::LdapServer::SSL);
+ break;
+ default:
+ d->mServer->setSecurity(KLDAP::LdapServer::None);
+ }
+ switch (d->mCfg->auth()) {
+ case KLDAP::LdapConfigWidget::Simple:
+ d->mServer->setAuth(KLDAP::LdapServer::Simple);
+ break;
+ case KLDAP::LdapConfigWidget::SASL:
+ d->mServer->setAuth(KLDAP::LdapServer::SASL);
+ break;
+ default:
+ d->mServer->setAuth(KLDAP::LdapServer::Anonymous);
+ }
+ d->mServer->setMech(d->mCfg->mech());
+ QDialog::accept();
+}
+
+#include "moc_addhostdialog.cpp"
--- /dev/null
+/*
+ This file is part of libkldap.
+
+ SPDX-FileCopyrightText: 2002-2010 Tobias Koenig <tokoe@kde.org>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include "kldap_export.h"
+#include <QDialog>
+
+namespace KLDAP
+{
+class LdapServer;
+class AddHostDialogPrivate;
+/**
+ * @brief The AddHostDialog class
+ * @author Laurent Montel <montel@kde.org>
+ */
+class KLDAP_EXPORT AddHostDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit AddHostDialog(KLDAP::LdapServer *server, QWidget *parent = nullptr);
+ ~AddHostDialog() override;
+
+Q_SIGNALS:
+ void changed(bool);
+
+private Q_SLOTS:
+ void slotHostEditChanged(const QString &);
+ void slotOk();
+
+private:
+ std::unique_ptr<AddHostDialogPrivate> const d;
+};
+}
--- /dev/null
+/* kldapclient.cpp - LDAP access
+ * SPDX-FileCopyrightText: 2002 Klarälvdalens Datakonsult AB
+ * SPDX-FileContributor: Steffen Hansen <hansen@kde.org>
+ *
+ * Ported to KABC by Daniel Molkentin <molkentin@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapclient.h"
+#include "ldapclient_debug.h"
+
+#include <kldap/ldapobject.h>
+#include <kldap/ldapserver.h>
+#include <kldap/ldapurl.h>
+#include <kldap/ldif.h>
+
+#include <KIO/Job>
+
+#include <QPointer>
+
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN LdapClient::LdapClientPrivate
+{
+public:
+ LdapClientPrivate(LdapClient *qq)
+ : q(qq)
+ {
+ }
+
+ ~LdapClientPrivate()
+ {
+ cancelQuery();
+ }
+
+ void cancelQuery();
+
+ void startParseLDIF();
+ void parseLDIF(const QByteArray &data);
+ void endParseLDIF();
+ void finishCurrentObject();
+
+ void slotData(KIO::Job *, const QByteArray &data);
+ void slotInfoMessage(KJob *, const QString &info, const QString &);
+ void slotDone();
+
+ LdapClient *const q;
+
+ KLDAP::LdapServer mServer;
+ QString mScope;
+ QStringList mAttrs;
+
+ QPointer<KJob> mJob = nullptr;
+ bool mActive = false;
+
+ KLDAP::LdapObject mCurrentObject;
+ KLDAP::Ldif mLdif;
+ int mClientNumber = 0;
+ int mCompletionWeight = 0;
+};
+
+LdapClient::LdapClient(int clientNumber, QObject *parent)
+ : QObject(parent)
+ , d(new LdapClientPrivate(this))
+{
+ d->mClientNumber = clientNumber;
+ d->mCompletionWeight = 50 - d->mClientNumber;
+}
+
+LdapClient::~LdapClient() = default;
+
+bool LdapClient::isActive() const
+{
+ return d->mActive;
+}
+
+void LdapClient::setServer(const KLDAP::LdapServer &server)
+{
+ d->mServer = server;
+}
+
+const KLDAP::LdapServer LdapClient::server() const
+{
+ return d->mServer;
+}
+
+void LdapClient::setAttributes(const QStringList &attrs)
+{
+ d->mAttrs = attrs;
+ d->mAttrs << QStringLiteral("objectClass"); // via objectClass we detect distribution lists
+}
+
+QStringList LdapClient::attributes() const
+{
+ return d->mAttrs;
+}
+
+void LdapClient::setScope(const QString &scope)
+{
+ d->mScope = scope;
+}
+
+void LdapClient::startQuery(const QString &filter)
+{
+ cancelQuery();
+ KLDAP::LdapUrl url{d->mServer.url()};
+
+ url.setAttributes(d->mAttrs);
+ url.setScope(d->mScope == QLatin1String("one") ? KLDAP::LdapUrl::One : KLDAP::LdapUrl::Sub);
+ const QString userFilter = url.filter();
+ QString finalFilter = filter;
+ // combine the filter set by the user in the config dialog (url.filter()) and the filter from this query
+ if (!userFilter.isEmpty()) {
+ finalFilter = QLatin1String("&(") + finalFilter + QLatin1String(")(") + userFilter + QLatin1Char(')');
+ }
+ url.setFilter(QLatin1Char('(') + finalFilter + QLatin1Char(')'));
+
+ qCDebug(LDAPCLIENT_LOG) << "LdapClient: Doing query:" << url.toDisplayString();
+
+ d->startParseLDIF();
+ d->mActive = true;
+ KIO::TransferJob *transfertJob = KIO::get(url, KIO::NoReload, KIO::HideProgressInfo);
+ d->mJob = transfertJob;
+ connect(transfertJob, &KIO::TransferJob::data, this, [this](KIO::Job *job, const QByteArray &data) {
+ d->slotData(job, data);
+ });
+ connect(d->mJob.data(), &KIO::TransferJob::infoMessage, this, [this](KJob *job, const QString &str, const QString &val) {
+ d->slotInfoMessage(job, str, val);
+ });
+ connect(d->mJob.data(), &KIO::TransferJob::result, this, [this]() {
+ d->slotDone();
+ });
+}
+
+void LdapClient::cancelQuery()
+{
+ d->cancelQuery();
+}
+
+void LdapClient::LdapClientPrivate::cancelQuery()
+{
+ if (mJob) {
+ mJob->kill();
+ mJob = nullptr;
+ }
+
+ mActive = false;
+}
+
+void LdapClient::LdapClientPrivate::slotData(KIO::Job *, const QByteArray &data)
+{
+ parseLDIF(data);
+}
+
+void LdapClient::LdapClientPrivate::slotInfoMessage(KJob *, const QString &info, const QString &)
+{
+ qCDebug(LDAPCLIENT_LOG) << "Job said :" << info;
+}
+
+void LdapClient::LdapClientPrivate::slotDone()
+{
+ endParseLDIF();
+ mActive = false;
+ if (!mJob) {
+ return;
+ }
+ int err = mJob->error();
+ if (err && err != KIO::ERR_USER_CANCELED) {
+ Q_EMIT q->error(mJob->errorString());
+ }
+ Q_EMIT q->done();
+}
+
+void LdapClient::LdapClientPrivate::startParseLDIF()
+{
+ mCurrentObject.clear();
+ mLdif.startParsing();
+}
+
+void LdapClient::LdapClientPrivate::endParseLDIF()
+{
+}
+
+void LdapClient::LdapClientPrivate::finishCurrentObject()
+{
+ mCurrentObject.setDn(mLdif.dn());
+ KLDAP::LdapAttrValue objectclasses;
+ const KLDAP::LdapAttrMap::ConstIterator end = mCurrentObject.attributes().constEnd();
+ for (KLDAP::LdapAttrMap::ConstIterator it = mCurrentObject.attributes().constBegin(); it != end; ++it) {
+ if (it.key().toLower() == QLatin1String("objectclass")) {
+ objectclasses = it.value();
+ break;
+ }
+ }
+
+ bool groupofnames = false;
+ const KLDAP::LdapAttrValue::ConstIterator endValue(objectclasses.constEnd());
+ for (KLDAP::LdapAttrValue::ConstIterator it = objectclasses.constBegin(); it != endValue; ++it) {
+ const QByteArray sClass = (*it).toLower();
+ if (sClass == "groupofnames" || sClass == "kolabgroupofnames") {
+ groupofnames = true;
+ }
+ }
+
+ if (groupofnames) {
+ KLDAP::LdapAttrMap::ConstIterator it = mCurrentObject.attributes().find(QStringLiteral("mail"));
+ if (it == mCurrentObject.attributes().end()) {
+ // No explicit mail address found so far?
+ // Fine, then we use the address stored in the DN.
+ QString sMail;
+ const QStringList lMail = mCurrentObject.dn().toString().split(QStringLiteral(",dc="), Qt::SkipEmptyParts);
+ const int n = lMail.count();
+ if (n) {
+ if (lMail.first().startsWith(QLatin1String("cn="), Qt::CaseInsensitive)) {
+ sMail = lMail.first().simplified().mid(3);
+ if (1 < n) {
+ sMail.append(QLatin1Char('@'));
+ }
+ for (int i = 1; i < n; ++i) {
+ sMail.append(lMail.at(i));
+ if (i < n - 1) {
+ sMail.append(QLatin1Char('.'));
+ }
+ }
+ mCurrentObject.addValue(QStringLiteral("mail"), sMail.toUtf8());
+ }
+ }
+ }
+ }
+ Q_EMIT q->result(*q, mCurrentObject);
+ mCurrentObject.clear();
+}
+
+void LdapClient::LdapClientPrivate::parseLDIF(const QByteArray &data)
+{
+ // qCDebug(LDAPCLIENT_LOG) <<"LdapClient::parseLDIF(" << QCString(data.data(), data.size()+1) <<" )";
+ if (!data.isEmpty()) {
+ mLdif.setLdif(data);
+ } else {
+ mLdif.endLdif();
+ }
+ KLDAP::Ldif::ParseValue ret;
+ QString name;
+ do {
+ ret = mLdif.nextItem();
+ switch (ret) {
+ case KLDAP::Ldif::Item: {
+ name = mLdif.attr();
+ const QByteArray value = mLdif.value();
+ mCurrentObject.addValue(name, value);
+ break;
+ }
+ case KLDAP::Ldif::EndEntry:
+ finishCurrentObject();
+ break;
+ default:
+ break;
+ }
+ } while (ret != KLDAP::Ldif::MoreData);
+}
+
+int LdapClient::clientNumber() const
+{
+ return d->mClientNumber;
+}
+
+int LdapClient::completionWeight() const
+{
+ return d->mCompletionWeight;
+}
+
+void LdapClient::setCompletionWeight(int weight)
+{
+ d->mCompletionWeight = weight;
+}
+
+#include "moc_ldapclient.cpp"
--- /dev/null
+/* kldapclient.h - LDAP access
+ * SPDX-FileCopyrightText: 2002 Klarälvdalens Datakonsult AB
+ * SPDX-FileContributor: Steffen Hansen <hansen@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "kldap_export.h"
+#include <QObject>
+#include <QStringList>
+#include <memory>
+
+namespace KLDAP
+{
+class LdapObject;
+class LdapServer;
+
+/**
+ * @short An object that represents a configured LDAP server.
+ *
+ * This class represents a client that to an LDAP server that
+ * can be used for LDAP lookups. Every client is identified by
+ * a unique numeric id.
+ *
+ * @since 4.5
+ */
+class KLDAP_EXPORT LdapClient : public QObject
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Creates a new ldap client.
+ *
+ * @param clientNumber The unique number of this client.
+ * @param parent The parent object.
+ */
+ explicit LdapClient(int clientNumber, QObject *parent = nullptr);
+
+ /**
+ * Destroys the ldap client.
+ */
+ ~LdapClient() override;
+
+ /**
+ * Returns the number of this client.
+ */
+ int clientNumber() const;
+
+ /**
+ * Returns whether this client is currently running
+ * a search query.
+ */
+ bool isActive() const;
+
+ /**
+ * Sets the completion @p weight of this client.
+ *
+ * This value will be used to sort the results of this
+ * client when used for auto completion.
+ */
+ void setCompletionWeight(int weight);
+
+ /**
+ * Returns the completion weight of this client.
+ */
+ int completionWeight() const;
+
+ /**
+ * Sets the LDAP @p server information that shall be
+ * used by this client.
+ */
+ void setServer(const KLDAP::LdapServer &server);
+
+ /**
+ * Returns the ldap server information that are used
+ * by this client.
+ */
+ const KLDAP::LdapServer server() const;
+
+ /**
+ * Sets the LDAP @p attributes that should be returned
+ * in the query result.
+ *
+ * Pass an empty list to include all available attributes.
+ */
+ void setAttributes(const QStringList &attributes);
+
+ /**
+ * Returns the LDAP attributes that should be returned
+ * in the query result.
+ */
+ QStringList attributes() const;
+
+ /**
+ * Sets the @p scope of the LDAP query.
+ *
+ * Valid values are 'one' or 'sub'.
+ */
+ void setScope(const QString &scope);
+
+ /**
+ * Starts the query with the given @p filter.
+ */
+ void startQuery(const QString &filter);
+
+ /**
+ * Cancels a running query.
+ */
+ void cancelQuery();
+
+Q_SIGNALS:
+ /**
+ * This signal is emitted when the query has finished.
+ */
+ void done();
+
+ /**
+ * This signal is emitted in case of an error.
+ *
+ * @param message A message that describes the error.
+ */
+ void error(const QString &message);
+
+ /**
+ * This signal is emitted once for each object that is
+ * returned from the query
+ */
+ void result(const KLDAP::LdapClient &client, const KLDAP::LdapObject &);
+
+private:
+ //@cond PRIVATE
+ class LdapClientPrivate;
+ std::unique_ptr<LdapClientPrivate> const d;
+ //@endcond
+};
+}
--- /dev/null
+/* kldapclient.cpp - LDAP access
+ * SPDX-FileCopyrightText: 2002 Klarälvdalens Datakonsult AB
+ * SPDX-FileContributor: Steffen Hansen <hansen@kde.org>
+ *
+ * Ported to KABC by Daniel Molkentin <molkentin@kde.org>
+ *
+ * SPDX-FileCopyrightText: 2013-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapclientsearch.h"
+#include "ldapclient_debug.h"
+#include "ldapclientsearchconfig.h"
+#include "ldapsearchclientreadconfigserverjob.h"
+
+#include "ldapclient.h"
+
+#include <kldap/ldapserver.h>
+#include <kldap/ldapurl.h>
+#include <kldap/ldif.h>
+
+#include <KConfig>
+#include <KConfigGroup>
+#include <KDirWatch>
+#include <KProtocolInfo>
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+#include <Kdelibs4ConfigMigrator>
+#endif
+
+#include <KIO/Job>
+
+#include <QStandardPaths>
+#include <QTimer>
+
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN LdapClientSearch::LdapClientSearchPrivate
+{
+public:
+ LdapClientSearchPrivate(LdapClientSearch *qq)
+ : q(qq)
+ {
+ }
+
+ ~LdapClientSearchPrivate() = default;
+
+ void readWeighForClient(LdapClient *client, const KConfigGroup &config, int clientNumber);
+ void readConfig();
+ void finish();
+ void makeSearchData(QStringList &ret, LdapResult::List &resList);
+
+ void slotLDAPResult(const KLDAP::LdapClient &client, const KLDAP::LdapObject &);
+ void slotLDAPError(const QString &);
+ void slotLDAPDone();
+ void slotDataTimer();
+ void slotFileChanged(const QString &);
+ void init(const QStringList &attributes);
+
+ LdapClientSearch *const q;
+ QList<LdapClient *> mClients;
+ QStringList mAttributes;
+ QString mSearchText;
+ QString mFilter;
+ QTimer mDataTimer;
+ int mActiveClients = 0;
+ bool mNoLDAPLookup = false;
+ LdapResultObject::List mResults;
+ QString mConfigFile;
+};
+
+LdapClientSearch::LdapClientSearch(QObject *parent)
+ : QObject(parent)
+ , d(new LdapClientSearchPrivate(this))
+{
+ d->init(LdapClientSearch::defaultAttributes());
+}
+
+LdapClientSearch::LdapClientSearch(const QStringList &attr, QObject *parent)
+ : QObject(parent)
+ , d(new LdapClientSearchPrivate(this))
+{
+ d->init(attr);
+}
+
+LdapClientSearch::~LdapClientSearch() = default;
+
+void LdapClientSearch::LdapClientSearchPrivate::init(const QStringList &attributes)
+{
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ Kdelibs4ConfigMigrator migrate(QStringLiteral("ldapsettings"));
+ migrate.setConfigFiles(QStringList() << QStringLiteral("kabldaprc"));
+ migrate.migrate();
+#endif
+
+ if (!KProtocolInfo::isKnownProtocol(QUrl(QStringLiteral("ldap://localhost")))) {
+ mNoLDAPLookup = true;
+ return;
+ }
+
+ mAttributes = attributes;
+
+ // Set the filter, to make sure old usage (before 4.14) of this object still works.
+ mFilter = QStringLiteral(
+ "&(|(objectclass=person)(objectclass=groupOfNames)(mail=*))"
+ "(|(cn=%1*)(mail=%1*)(givenName=%1*)(sn=%1*))");
+
+ readConfig();
+ q->connect(KDirWatch::self(), &KDirWatch::dirty, q, [this](const QString &filename) {
+ slotFileChanged(filename);
+ });
+}
+
+void LdapClientSearch::LdapClientSearchPrivate::readWeighForClient(LdapClient *client, const KConfigGroup &config, int clientNumber)
+{
+ const int completionWeight = config.readEntry(QStringLiteral("SelectedCompletionWeight%1").arg(clientNumber), -1);
+ if (completionWeight != -1) {
+ client->setCompletionWeight(completionWeight);
+ }
+}
+
+void LdapClientSearch::updateCompletionWeights()
+{
+ KConfigGroup config(KLDAP::LdapClientSearchConfig::config(), "LDAP");
+ for (int i = 0, total = d->mClients.size(); i < total; ++i) {
+ d->readWeighForClient(d->mClients[i], config, i);
+ }
+}
+
+QList<LdapClient *> LdapClientSearch::clients() const
+{
+ return d->mClients;
+}
+
+QString LdapClientSearch::filter() const
+{
+ return d->mFilter;
+}
+
+void LdapClientSearch::setFilter(const QString &filter)
+{
+ d->mFilter = filter;
+}
+
+QStringList LdapClientSearch::attributes() const
+{
+ return d->mAttributes;
+}
+
+void LdapClientSearch::setAttributes(const QStringList &attrs)
+{
+ if (attrs != d->mAttributes) {
+ d->mAttributes = attrs;
+ d->readConfig();
+ }
+}
+
+QStringList LdapClientSearch::defaultAttributes()
+{
+ const QStringList attr{QStringLiteral("cn"), QStringLiteral("mail"), QStringLiteral("givenname"), QStringLiteral("sn")};
+ return attr;
+}
+
+void LdapClientSearch::LdapClientSearchPrivate::readConfig()
+{
+ q->cancelSearch();
+ qDeleteAll(mClients);
+ mClients.clear();
+
+ // stolen from KAddressBook
+ KConfigGroup config(KLDAP::LdapClientSearchConfig::config(), "LDAP");
+ const int numHosts = config.readEntry("NumSelectedHosts", 0);
+ if (!numHosts) {
+ mNoLDAPLookup = true;
+ } else {
+ for (int j = 0; j < numHosts; ++j) {
+ auto ldapClient = new LdapClient(j, q);
+ auto job = new LdapSearchClientReadConfigServerJob;
+ job->setCurrentIndex(j);
+ job->setActive(true);
+ job->setConfig(config);
+ job->setLdapClient(ldapClient);
+ job->start();
+
+ mNoLDAPLookup = false;
+ readWeighForClient(ldapClient, config, j);
+
+ ldapClient->setAttributes(mAttributes);
+
+ q->connect(ldapClient, &LdapClient::result, q, [this](const LdapClient &client, const KLDAP::LdapObject &obj) {
+ slotLDAPResult(client, obj);
+ });
+ q->connect(ldapClient, &LdapClient::done, q, [this]() {
+ slotLDAPDone();
+ });
+ q->connect(ldapClient, qOverload<const QString &>(&LdapClient::error), q, [this](const QString &str) {
+ slotLDAPError(str);
+ });
+
+ mClients.append(ldapClient);
+ }
+
+ q->connect(&mDataTimer, &QTimer::timeout, q, [this]() {
+ slotDataTimer();
+ });
+ }
+ mConfigFile = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/kabldaprc");
+ KDirWatch::self()->addFile(mConfigFile);
+}
+
+void LdapClientSearch::LdapClientSearchPrivate::slotFileChanged(const QString &file)
+{
+ if (file == mConfigFile) {
+ readConfig();
+ }
+}
+
+void LdapClientSearch::startSearch(const QString &txt)
+{
+ if (d->mNoLDAPLookup) {
+ QMetaObject::invokeMethod(this, &LdapClientSearch::searchDone, Qt::QueuedConnection);
+ return;
+ }
+
+ cancelSearch();
+
+ int pos = txt.indexOf(QLatin1Char('\"'));
+ if (pos >= 0) {
+ ++pos;
+ const int pos2 = txt.indexOf(QLatin1Char('\"'), pos);
+ if (pos2 >= 0) {
+ d->mSearchText = txt.mid(pos, pos2 - pos);
+ } else {
+ d->mSearchText = txt.mid(pos);
+ }
+ } else {
+ d->mSearchText = txt;
+ }
+
+ const QString filter = d->mFilter.arg(d->mSearchText);
+
+ QList<LdapClient *>::Iterator it(d->mClients.begin());
+ const QList<LdapClient *>::Iterator end(d->mClients.end());
+ for (; it != end; ++it) {
+ (*it)->startQuery(filter);
+ qCDebug(LDAPCLIENT_LOG) << "LdapClientSearch::startSearch()" << filter;
+ ++d->mActiveClients;
+ }
+}
+
+void LdapClientSearch::cancelSearch()
+{
+ QList<LdapClient *>::Iterator it(d->mClients.begin());
+ const QList<LdapClient *>::Iterator end(d->mClients.end());
+ for (; it != end; ++it) {
+ (*it)->cancelQuery();
+ }
+
+ d->mActiveClients = 0;
+ d->mResults.clear();
+}
+
+void LdapClientSearch::LdapClientSearchPrivate::slotLDAPResult(const LdapClient &client, const KLDAP::LdapObject &obj)
+{
+ LdapResultObject result;
+ result.client = &client;
+ result.object = obj;
+
+ mResults.append(result);
+ if (!mDataTimer.isActive()) {
+ mDataTimer.setSingleShot(true);
+ mDataTimer.start(500);
+ }
+}
+
+void LdapClientSearch::LdapClientSearchPrivate::slotLDAPError(const QString &)
+{
+ slotLDAPDone();
+}
+
+void LdapClientSearch::LdapClientSearchPrivate::slotLDAPDone()
+{
+ if (--mActiveClients > 0) {
+ return;
+ }
+
+ finish();
+}
+
+void LdapClientSearch::LdapClientSearchPrivate::slotDataTimer()
+{
+ QStringList lst;
+ LdapResult::List reslist;
+
+ Q_EMIT q->searchData(mResults);
+
+ makeSearchData(lst, reslist);
+ if (!lst.isEmpty()) {
+ Q_EMIT q->searchData(lst);
+ }
+ if (!reslist.isEmpty()) {
+ Q_EMIT q->searchData(reslist);
+ }
+}
+
+void LdapClientSearch::LdapClientSearchPrivate::finish()
+{
+ mDataTimer.stop();
+
+ slotDataTimer(); // Q_EMIT final bunch of data
+ Q_EMIT q->searchDone();
+}
+
+void LdapClientSearch::LdapClientSearchPrivate::makeSearchData(QStringList &ret, LdapResult::List &resList)
+{
+ LdapResultObject::List::ConstIterator it1(mResults.constBegin());
+ const LdapResultObject::List::ConstIterator end1(mResults.constEnd());
+ for (; it1 != end1; ++it1) {
+ QString name;
+ QString mail;
+ QString givenname;
+ QString sn;
+ QStringList mails;
+ bool isDistributionList = false;
+ bool wasCN = false;
+ bool wasDC = false;
+
+ // qCDebug(LDAPCLIENT_LOG) <<"\n\nLdapClientSearch::makeSearchData()";
+
+ KLDAP::LdapAttrMap::ConstIterator it2;
+ for (it2 = (*it1).object.attributes().constBegin(); it2 != (*it1).object.attributes().constEnd(); ++it2) {
+ QByteArray val = (*it2).first();
+ int len = val.size();
+ if (len > 0 && '\0' == val[len - 1]) {
+ --len;
+ }
+ const QString tmp = QString::fromUtf8(val.constData(), len);
+ // qCDebug(LDAPCLIENT_LOG) <<" key: \"" << it2.key() <<"\" value: \"" << tmp <<"\"";
+ if (it2.key() == QLatin1String("cn")) {
+ name = tmp;
+ if (mail.isEmpty()) {
+ mail = tmp;
+ } else {
+ if (wasCN) {
+ mail.prepend(QLatin1Char('.'));
+ } else {
+ mail.prepend(QLatin1Char('@'));
+ }
+ mail.prepend(tmp);
+ }
+ wasCN = true;
+ } else if (it2.key() == QLatin1String("dc")) {
+ if (mail.isEmpty()) {
+ mail = tmp;
+ } else {
+ if (wasDC) {
+ mail.append(QLatin1Char('.'));
+ } else {
+ mail.append(QLatin1Char('@'));
+ }
+ mail.append(tmp);
+ }
+ wasDC = true;
+ } else if (it2.key() == QLatin1String("mail")) {
+ mail = tmp;
+ KLDAP::LdapAttrValue::ConstIterator it3 = it2.value().constBegin();
+ for (; it3 != it2.value().constEnd(); ++it3) {
+ mails.append(QString::fromUtf8((*it3).data(), (*it3).size()));
+ }
+ } else if (it2.key() == QLatin1String("givenName")) {
+ givenname = tmp;
+ } else if (it2.key() == QLatin1String("sn")) {
+ sn = tmp;
+ } else if (it2.key() == QLatin1String("objectClass") && (tmp == QLatin1String("groupOfNames") || tmp == QLatin1String("kolabGroupOfNames"))) {
+ isDistributionList = true;
+ }
+ }
+
+ if (mails.isEmpty()) {
+ if (!mail.isEmpty()) {
+ mails.append(mail);
+ }
+ if (isDistributionList) {
+ // qCDebug(LDAPCLIENT_LOG) <<"\n\nLdapClientSearch::makeSearchData() found a list:" << name;
+ ret.append(name);
+ // following lines commented out for bugfixing kolab issue #177:
+ //
+ // Unlike we thought previously we may NOT append the server name here.
+ //
+ // The right server is found by the SMTP server instead: Kolab users
+ // must use the correct SMTP server, by definition.
+ //
+ // mail = (*it1).client->base().simplified();
+ // mail.replace( ",dc=", ".", false );
+ // if( mail.startsWith("dc=", false) )
+ // mail.remove(0, 3);
+ // mail.prepend( '@' );
+ // mail.prepend( name );
+ // mail = name;
+ } else {
+ continue; // nothing, bad entry
+ }
+ } else if (name.isEmpty()) {
+ ret.append(mail);
+ } else {
+ ret.append(QStringLiteral("%1 <%2>").arg(name, mail));
+ }
+
+ LdapResult sr;
+ sr.dn = (*it1).object.dn();
+ sr.clientNumber = (*it1).client->clientNumber();
+ sr.completionWeight = (*it1).client->completionWeight();
+ sr.name = name;
+ sr.email = mails;
+ resList.append(sr);
+ }
+
+ mResults.clear();
+}
+
+bool LdapClientSearch::isAvailable() const
+{
+ return !d->mNoLDAPLookup;
+}
+
+#include "moc_ldapclientsearch.cpp"
--- /dev/null
+/* kldapclient.h - LDAP access
+ * SPDX-FileCopyrightText: 2002 Klarälvdalens Datakonsult AB
+ * SPDX-FileContributor: Steffen Hansen <hansen@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "kldap_export.h"
+
+#include <QObject>
+#include <QStringList>
+#include <kldap/ldapobject.h>
+
+namespace KLDAP
+{
+class LdapClient;
+
+/**
+ * Describes the result returned by an LdapClientSearch query.
+ *
+ * @since 4.14
+ */
+struct LdapResultObject {
+ using List = QVector<LdapResultObject>;
+ const LdapClient *client = nullptr;
+ KLDAP::LdapObject object;
+};
+
+/**
+ * Describes the result returned by an LdapClientSearch query.
+ *
+ * @since 4.5
+ */
+struct LdapResult {
+ /**
+ * A list of LdapResult objects.
+ */
+ using List = QVector<LdapResult>;
+
+ LdapDN dn;
+ QString name; ///< The full name of the contact.
+ QStringList email; ///< The list of emails of the contact.
+ int clientNumber; ///< The client the contact comes from (used for sorting in a ldap-only lookup).
+ int completionWeight; ///< The weight of the contact (used for sorting in a completion list).
+};
+
+/**
+ * @since 4.5
+ */
+class KLDAP_EXPORT LdapClientSearch : public QObject
+{
+ Q_OBJECT
+
+public:
+ /**
+ * Creates a new ldap client search object.
+ *
+ * @param parent The parent object.
+ */
+ explicit LdapClientSearch(QObject *parent = nullptr);
+
+ /**
+ * Creates a new ldap client search object.
+ *
+ * @param attr The attributes.
+ * @param parent The parent object.
+ */
+ explicit LdapClientSearch(const QStringList &attr, QObject *parent = nullptr);
+
+ /**
+ * Destroys the ldap client search object.
+ */
+ ~LdapClientSearch() override;
+
+ /**
+ * Starts the LDAP search on all configured LDAP clients with the given search @p query.
+ */
+ void startSearch(const QString &query);
+
+ /**
+ * Cancels the currently running search query.
+ */
+ void cancelSearch();
+
+ /**
+ * Returns whether LDAP search is possible at all.
+ *
+ * @note This method can return @c false if either no LDAP is configured
+ * or the system does not support the KIO LDAP protocol.
+ */
+ bool isAvailable() const;
+
+ /**
+ * Updates the completion weights for the configured LDAP clients from
+ * the configuration file.
+ */
+ void updateCompletionWeights();
+
+ /**
+ * Returns the list of configured LDAP clients.
+ */
+ QList<LdapClient *> clients() const;
+
+ /**
+ * Returns the filter for the Query
+ *
+ * @since 4.14
+ */
+ QString filter() const;
+
+ /**
+ * Sets the filter for the Query
+ *
+ * @since 4.14
+ */
+ void setFilter(const QString &);
+
+ /**
+ * Returns the attributes, that are queried the LDAP Server.
+ *
+ * @since 4.14
+ */
+ QStringList attributes() const;
+
+ /**
+ * Sets the attributes, that are queried the LDAP Server.
+ *
+ * @since 4.14
+ */
+ void setAttributes(const QStringList &);
+
+ Q_REQUIRED_RESULT static QStringList defaultAttributes();
+
+Q_SIGNALS:
+ /**
+ * This signal is emitted whenever new contacts have been found
+ * during the lookup.
+ *
+ * @param results The contacts in the form "Full Name <email>"
+ */
+ void searchData(const QStringList &results);
+
+ /**
+ * This signal is emitted whenever new contacts have been found
+ * during the lookup.
+ *
+ * @param results The list of found contacts.
+ */
+ void searchData(const KLDAP::LdapResult::List &results);
+
+ /**
+ * This signal is emitted whenever new contacts have been found
+ * during the lookup.
+ *
+ * @param results The list of found contacts.
+ */
+ void searchData(const KLDAP::LdapResultObject::List &results);
+
+ /**
+ * This signal is emitted whenever the lookup is complete or the
+ * user has canceled the query.
+ */
+ void searchDone();
+
+private:
+ //@cond PRIVATE
+ class LdapClientSearchPrivate;
+ std::unique_ptr<LdapClientSearchPrivate> const d;
+ //@endcond
+};
+}
+Q_DECLARE_TYPEINFO(KLDAP::LdapResult, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(KLDAP::LdapResultObject, Q_MOVABLE_TYPE);
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2013-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapclientsearchconfig.h"
+#include "ldapclient_debug.h"
+#include <kldap/ldapserver.h>
+
+#include <KConfig>
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+#include <qt5keychain/keychain.h>
+#else
+#include <qt6keychain/keychain.h>
+#endif
+using namespace QKeychain;
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN LdapClientSearchConfig::LdapClientSearchConfigPrivate
+{
+public:
+ LdapClientSearchConfigPrivate() = default;
+
+ ~LdapClientSearchConfigPrivate() = default;
+};
+
+Q_GLOBAL_STATIC_WITH_ARGS(KConfig, s_config, (QLatin1String("kabldaprc"), KConfig::NoGlobals))
+
+KConfig *LdapClientSearchConfig::config()
+{
+ return s_config;
+}
+
+LdapClientSearchConfig::LdapClientSearchConfig(QObject *parent)
+ : QObject(parent)
+ , d(new LdapClientSearchConfig::LdapClientSearchConfigPrivate())
+{
+}
+
+LdapClientSearchConfig::~LdapClientSearchConfig() = default;
+
+#if 0 // Port it
+void LdapClientSearchConfig::clearWalletPassword()
+{
+ if (!d->wallet) {
+ d->wallet = KWallet::Wallet::openWallet(KWallet::Wallet::LocalWallet(), 0);
+ }
+ if (d->wallet) {
+ d->useWallet = true;
+ if (d->wallet->hasFolder(QStringLiteral("ldapclient"))) {
+ //Recreate it.
+ d->wallet->removeFolder(QStringLiteral("ldapclient"));
+ d->wallet->createFolder(QStringLiteral("ldapclient"));
+ d->wallet->setFolder(QStringLiteral("ldapclient"));
+ }
+ }
+}
+#endif
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2013-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "kldap_export.h"
+
+#include <QObject>
+#include <memory>
+class KConfig;
+
+namespace KLDAP
+{
+class LdapClient;
+/**
+ * @brief The LdapClientSearchConfig class
+ * @author Laurent Montel <montel@kde.org>
+ */
+class KLDAP_EXPORT LdapClientSearchConfig : public QObject
+{
+ Q_OBJECT
+public:
+ explicit LdapClientSearchConfig(QObject *parent = nullptr);
+ ~LdapClientSearchConfig() override;
+
+ /**
+ * Returns the global config object, which stores the LdapClient configurations.
+ */
+ static KConfig *config();
+
+private:
+ //@cond PRIVATE
+ class LdapClientSearchConfigPrivate;
+ std::unique_ptr<LdapClientSearchConfigPrivate> const d;
+};
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapclientsearchconfigreadconfigjob.h"
+#include "ldapclient_debug.h"
+
+#include <KConfig>
+#include <KLocalizedString>
+#include <kldap/ldapdn.h>
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+#include <qt5keychain/keychain.h>
+#else
+#include <qt6keychain/keychain.h>
+#endif
+using namespace QKeychain;
+
+using namespace KLDAP;
+LdapClientSearchConfigReadConfigJob::LdapClientSearchConfigReadConfigJob(QObject *parent)
+ : QObject(parent)
+{
+}
+
+LdapClientSearchConfigReadConfigJob::~LdapClientSearchConfigReadConfigJob() = default;
+
+bool LdapClientSearchConfigReadConfigJob::canStart() const
+{
+ return mServerIndex != -1 && mConfig.isValid();
+}
+
+void LdapClientSearchConfigReadConfigJob::readLdapClientConfigFinished()
+{
+ Q_EMIT configLoaded(mServer);
+ deleteLater();
+}
+
+void LdapClientSearchConfigReadConfigJob::start()
+{
+ if (!canStart()) {
+ // Failed !
+ readLdapClientConfigFinished();
+ return;
+ }
+ readConfig();
+}
+
+bool LdapClientSearchConfigReadConfigJob::active() const
+{
+ return mActive;
+}
+
+void LdapClientSearchConfigReadConfigJob::setActive(bool newActive)
+{
+ mActive = newActive;
+}
+
+int LdapClientSearchConfigReadConfigJob::serverIndex() const
+{
+ return mServerIndex;
+}
+
+void LdapClientSearchConfigReadConfigJob::setServerIndex(int newServerIndex)
+{
+ mServerIndex = newServerIndex;
+}
+
+KConfigGroup LdapClientSearchConfigReadConfigJob::config() const
+{
+ return mConfig;
+}
+
+void LdapClientSearchConfigReadConfigJob::setConfig(const KConfigGroup &newConfig)
+{
+ mConfig = newConfig;
+}
+
+void LdapClientSearchConfigReadConfigJob::readConfig()
+{
+ QString prefix;
+ if (mActive) {
+ prefix = QStringLiteral("Selected");
+ }
+
+ const QString host = mConfig.readEntry(prefix + QStringLiteral("Host%1").arg(mServerIndex), QString()).trimmed();
+ if (!host.isEmpty()) {
+ mServer.setHost(host);
+ }
+
+ const int port = mConfig.readEntry(prefix + QStringLiteral("Port%1").arg(mServerIndex), 389);
+ mServer.setPort(port);
+
+ const QString base = mConfig.readEntry(prefix + QStringLiteral("Base%1").arg(mServerIndex), QString()).trimmed();
+ if (!base.isEmpty()) {
+ mServer.setBaseDn(KLDAP::LdapDN(base));
+ }
+
+ const QString user = mConfig.readEntry(prefix + QStringLiteral("User%1").arg(mServerIndex), QString()).trimmed();
+ if (!user.isEmpty()) {
+ mServer.setUser(user);
+ }
+
+ const QString bindDN = mConfig.readEntry(prefix + QStringLiteral("Bind%1").arg(mServerIndex), QString()).trimmed();
+ if (!bindDN.isEmpty()) {
+ mServer.setBindDn(bindDN);
+ }
+#if 0 // Port
+ const QString pwdBindBNEntry = prefix + QStringLiteral("PwdBind%1").arg(mServerIndex);
+ QString pwdBindDN = mConfig.readEntry(pwdBindBNEntry, QString());
+ if (!pwdBindDN.isEmpty()) {
+ if (d->askWallet && KMessageBox::Yes == KMessageBox::questionYesNo(nullptr, i18n("LDAP password is stored as clear text, do you want to store it in kwallet?"),
+ i18n("Store clear text password in Wallet"),
+ KStandardGuiItem::yes(),
+ KStandardGuiItem::no(),
+ QStringLiteral("DoAskToStoreToWallet"))) {
+ d->wallet = KWallet::Wallet::openWallet(KWallet::Wallet::LocalWallet(), 0);
+ if (d->wallet) {
+ connect(d->wallet, &KWallet::Wallet::walletClosed, this, &LdapClientSearchConfig::slotWalletClosed);
+ d->useWallet = true;
+ if (!d->wallet->hasFolder(QStringLiteral("ldapclient"))) {
+ d->wallet->createFolder(QStringLiteral("ldapclient"));
+ }
+ d->wallet->setFolder(QStringLiteral("ldapclient"));
+ d->wallet->writePassword(pwdBindBNEntry, pwdBindDN);
+ mConfig.deleteEntry(pwdBindBNEntry);
+ mConfig.sync();
+ }
+ }
+ mServer.setPassword(pwdBindDN);
+ } else if (d->askWallet) { //Look at in Wallet
+ //Move as async here.
+ d->wallet = KWallet::Wallet::openWallet(KWallet::Wallet::LocalWallet(), 0);
+ if (d->wallet) {
+ d->useWallet = true;
+ if (!d->wallet->setFolder(QStringLiteral("ldapclient"))) {
+ d->wallet->createFolder(QStringLiteral("ldapclient"));
+ d->wallet->setFolder(QStringLiteral("ldapclient"));
+ }
+ d->wallet->readPassword(pwdBindBNEntry, pwdBindDN);
+ if (!pwdBindDN.isEmpty()) {
+ mServer.setPassword(pwdBindDN);
+ }
+ } else {
+ d->useWallet = false;
+ }
+ }
+#endif
+ mServer.setTimeLimit(mConfig.readEntry(prefix + QStringLiteral("TimeLimit%1").arg(mServerIndex), 0));
+ mServer.setSizeLimit(mConfig.readEntry(prefix + QStringLiteral("SizeLimit%1").arg(mServerIndex), 0));
+ mServer.setPageSize(mConfig.readEntry(prefix + QStringLiteral("PageSize%1").arg(mServerIndex), 0));
+ mServer.setVersion(mConfig.readEntry(prefix + QStringLiteral("Version%1").arg(mServerIndex), 3));
+
+ QString tmp = mConfig.readEntry(prefix + QStringLiteral("Security%1").arg(mServerIndex), QStringLiteral("None"));
+ mServer.setSecurity(KLDAP::LdapServer::None);
+ if (tmp == QLatin1String("SSL")) {
+ mServer.setSecurity(KLDAP::LdapServer::SSL);
+ } else if (tmp == QLatin1String("TLS")) {
+ mServer.setSecurity(KLDAP::LdapServer::TLS);
+ }
+
+ tmp = mConfig.readEntry(prefix + QStringLiteral("Auth%1").arg(mServerIndex), QStringLiteral("Anonymous"));
+ mServer.setAuth(KLDAP::LdapServer::Anonymous);
+ if (tmp == QLatin1String("Simple")) {
+ mServer.setAuth(KLDAP::LdapServer::Simple);
+ } else if (tmp == QLatin1String("SASL")) {
+ mServer.setAuth(KLDAP::LdapServer::SASL);
+ }
+
+ mServer.setMech(mConfig.readEntry(prefix + QStringLiteral("Mech%1").arg(mServerIndex), QString()));
+ mServer.setFilter(mConfig.readEntry(prefix + QStringLiteral("UserFilter%1").arg(mServerIndex), QString()));
+ mServer.setCompletionWeight(mConfig.readEntry(prefix + QStringLiteral("CompletionWeight%1").arg(mServerIndex), -1));
+
+ const QString pwdBindBNEntry = prefix + QStringLiteral("PwdBind%1").arg(mServerIndex);
+
+ auto readJob = new ReadPasswordJob(QStringLiteral("ldapclient"), this);
+ connect(readJob, &Job::finished, this, &LdapClientSearchConfigReadConfigJob::readLdapPasswordFinished);
+ readJob->setKey(pwdBindBNEntry);
+ readJob->start();
+}
+
+void LdapClientSearchConfigReadConfigJob::readLdapPasswordFinished(QKeychain::Job *baseJob)
+{
+ auto job = qobject_cast<ReadPasswordJob *>(baseJob);
+ Q_ASSERT(job);
+ if (!job->error()) {
+ mServer.setPassword(job->textData());
+ } else {
+ qCWarning(LDAPCLIENT_LOG) << "We have an error during reading password " << job->errorString();
+ }
+ readLdapClientConfigFinished();
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+#include "kldap_export.h"
+#include <KConfigGroup>
+#include <KLDAP/LdapServer>
+#include <QObject>
+namespace QKeychain
+{
+class Job;
+}
+namespace KLDAP
+{
+class KLDAP_EXPORT LdapClientSearchConfigReadConfigJob : public QObject
+{
+ Q_OBJECT
+public:
+ explicit LdapClientSearchConfigReadConfigJob(QObject *parent = nullptr);
+ ~LdapClientSearchConfigReadConfigJob() override;
+
+ Q_REQUIRED_RESULT bool canStart() const;
+ void start();
+
+ Q_REQUIRED_RESULT bool active() const;
+ void setActive(bool newActive);
+
+ Q_REQUIRED_RESULT int serverIndex() const;
+ void setServerIndex(int newServerIndex);
+
+ Q_REQUIRED_RESULT KConfigGroup config() const;
+ void setConfig(const KConfigGroup &newConfig);
+
+Q_SIGNALS:
+ void configLoaded(const KLDAP::LdapServer &server);
+
+private:
+ void readLdapPasswordFinished(QKeychain::Job *baseJob);
+ void readLdapClientConfigFinished();
+ void readConfig();
+ int mServerIndex = -1;
+ KConfigGroup mConfig;
+ bool mActive = false;
+ KLDAP::LdapServer mServer;
+};
+
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapclientsearchconfigwriteconfigjob.h"
+#include "ldapclient_debug.h"
+
+#include <KConfig>
+#include <kldap/ldapdn.h>
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+#include <qt5keychain/keychain.h>
+#else
+#include <qt6keychain/keychain.h>
+#endif
+using namespace QKeychain;
+
+using namespace KLDAP;
+LdapClientSearchConfigWriteConfigJob::LdapClientSearchConfigWriteConfigJob(QObject *parent)
+ : QObject(parent)
+{
+}
+
+LdapClientSearchConfigWriteConfigJob::~LdapClientSearchConfigWriteConfigJob() = default;
+
+bool LdapClientSearchConfigWriteConfigJob::canStart() const
+{
+ return mServerIndex != -1 && mConfig.isValid();
+}
+
+void LdapClientSearchConfigWriteConfigJob::writeLdapClientConfigFinished()
+{
+ Q_EMIT configSaved();
+ deleteLater();
+}
+
+void LdapClientSearchConfigWriteConfigJob::start()
+{
+ if (!canStart()) {
+ // Failed !
+ writeLdapClientConfigFinished();
+ return;
+ }
+ writeConfig();
+}
+
+bool LdapClientSearchConfigWriteConfigJob::active() const
+{
+ return mActive;
+}
+
+void LdapClientSearchConfigWriteConfigJob::setActive(bool newActive)
+{
+ mActive = newActive;
+}
+
+int LdapClientSearchConfigWriteConfigJob::serverIndex() const
+{
+ return mServerIndex;
+}
+
+void LdapClientSearchConfigWriteConfigJob::setServerIndex(int newServerIndex)
+{
+ mServerIndex = newServerIndex;
+}
+
+KConfigGroup LdapClientSearchConfigWriteConfigJob::config() const
+{
+ return mConfig;
+}
+
+void LdapClientSearchConfigWriteConfigJob::setConfig(const KConfigGroup &newConfig)
+{
+ mConfig = newConfig;
+}
+
+void LdapClientSearchConfigWriteConfigJob::writeConfig()
+{
+ QString prefix;
+ if (mActive) {
+ prefix = QStringLiteral("Selected");
+ }
+
+ mConfig.writeEntry(prefix + QStringLiteral("Host%1").arg(mServerIndex), mServer.host());
+ mConfig.writeEntry(prefix + QStringLiteral("Port%1").arg(mServerIndex), mServer.port());
+ mConfig.writeEntry(prefix + QStringLiteral("Base%1").arg(mServerIndex), mServer.baseDn().toString());
+ mConfig.writeEntry(prefix + QStringLiteral("User%1").arg(mServerIndex), mServer.user());
+ mConfig.writeEntry(prefix + QStringLiteral("Bind%1").arg(mServerIndex), mServer.bindDn());
+
+ const QString passwordEntry = prefix + QStringLiteral("PwdBind%1").arg(mServerIndex);
+ const QString password = mServer.password();
+ if (!password.isEmpty()) {
+ auto writeJob = new WritePasswordJob(QStringLiteral("ldapclient"), this);
+ connect(writeJob, &Job::finished, this, [](QKeychain::Job *baseJob) {
+ if (baseJob->error()) {
+ qCWarning(LDAPCLIENT_LOG) << "Error writing password using QKeychain:" << baseJob->errorString();
+ }
+ });
+ writeJob->setKey(passwordEntry);
+ writeJob->setTextData(password);
+ writeJob->start();
+ }
+
+ mConfig.writeEntry(prefix + QStringLiteral("TimeLimit%1").arg(mServerIndex), mServer.timeLimit());
+ mConfig.writeEntry(prefix + QStringLiteral("SizeLimit%1").arg(mServerIndex), mServer.sizeLimit());
+ mConfig.writeEntry(prefix + QStringLiteral("PageSize%1").arg(mServerIndex), mServer.pageSize());
+ mConfig.writeEntry(prefix + QStringLiteral("Version%1").arg(mServerIndex), mServer.version());
+ QString tmp;
+ switch (mServer.security()) {
+ case KLDAP::LdapServer::TLS:
+ tmp = QStringLiteral("TLS");
+ break;
+ case KLDAP::LdapServer::SSL:
+ tmp = QStringLiteral("SSL");
+ break;
+ default:
+ tmp = QStringLiteral("None");
+ }
+ mConfig.writeEntry(prefix + QStringLiteral("Security%1").arg(mServerIndex), tmp);
+ switch (mServer.auth()) {
+ case KLDAP::LdapServer::Simple:
+ tmp = QStringLiteral("Simple");
+ break;
+ case KLDAP::LdapServer::SASL:
+ tmp = QStringLiteral("SASL");
+ break;
+ default:
+ tmp = QStringLiteral("Anonymous");
+ }
+ mConfig.writeEntry(prefix + QStringLiteral("Auth%1").arg(mServerIndex), tmp);
+ mConfig.writeEntry(prefix + QStringLiteral("Mech%1").arg(mServerIndex), mServer.mech());
+ mConfig.writeEntry(prefix + QStringLiteral("UserFilter%1").arg(mServerIndex), mServer.filter().trimmed());
+ if (mServer.completionWeight() > -1) {
+ mConfig.writeEntry(prefix + QStringLiteral("CompletionWeight%1").arg(mServerIndex), mServer.completionWeight());
+ }
+}
+
+KLDAP::LdapServer LdapClientSearchConfigWriteConfigJob::server() const
+{
+ return mServer;
+}
+
+void LdapClientSearchConfigWriteConfigJob::setServer(const KLDAP::LdapServer &server)
+{
+ mServer = server;
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+#include "kldap_export.h"
+#include <KConfigGroup>
+#include <KLDAP/LdapServer>
+#include <QObject>
+namespace QKeychain
+{
+class Job;
+}
+namespace KLDAP
+{
+class KLDAP_EXPORT LdapClientSearchConfigWriteConfigJob : public QObject
+{
+ Q_OBJECT
+public:
+ explicit LdapClientSearchConfigWriteConfigJob(QObject *parent = nullptr);
+ ~LdapClientSearchConfigWriteConfigJob() override;
+
+ Q_REQUIRED_RESULT bool canStart() const;
+ void start();
+
+ Q_REQUIRED_RESULT bool active() const;
+ void setActive(bool newActive);
+
+ Q_REQUIRED_RESULT int serverIndex() const;
+ void setServerIndex(int newServerIndex);
+
+ Q_REQUIRED_RESULT KConfigGroup config() const;
+ void setConfig(const KConfigGroup &newConfig);
+
+ Q_REQUIRED_RESULT KLDAP::LdapServer server() const;
+ void setServer(const KLDAP::LdapServer &server);
+
+Q_SIGNALS:
+ void configSaved();
+
+private:
+ void writeLdapClientConfigFinished();
+ void writeConfig();
+ int mServerIndex = -1;
+ KConfigGroup mConfig;
+ bool mActive = false;
+ KLDAP::LdapServer mServer;
+};
+
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2019-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapconfigurewidget.h"
+#include <QLabel>
+#include <QListWidget>
+#include <QListWidgetItem>
+#include <QPushButton>
+#include <QToolButton>
+#include <QVBoxLayout>
+
+#include <KConfig>
+#include <KConfigGroup>
+#include <KLocalizedString>
+#include <KMessageBox>
+#include <QDialogButtonBox>
+#include <QHBoxLayout>
+
+#include "ldapclientsearch.h"
+#include "ldapclientsearchconfig.h"
+#include "ldapclientsearchconfigwriteconfigjob.h"
+#include "ldapwidgetitem_p.h"
+#include "ldapwidgetitemreadconfigserverjob.h"
+#include <kldap/ldapserver.h>
+
+#include "addhostdialog.h"
+
+using namespace KLDAP;
+
+LdapConfigureWidget::LdapConfigureWidget(QWidget *parent)
+ : QWidget(parent)
+ , mClientSearchConfig(new KLDAP::LdapClientSearchConfig)
+{
+ initGUI();
+
+ connect(mHostListView, &QListWidget::currentItemChanged, this, &LdapConfigureWidget::slotSelectionChanged);
+ connect(mHostListView, &QListWidget::itemDoubleClicked, this, &LdapConfigureWidget::slotEditHost);
+ connect(mHostListView, &QListWidget::itemClicked, this, &LdapConfigureWidget::slotItemClicked);
+
+ connect(mUpButton, &QToolButton::clicked, this, &LdapConfigureWidget::slotMoveUp);
+ connect(mDownButton, &QToolButton::clicked, this, &LdapConfigureWidget::slotMoveDown);
+}
+
+LdapConfigureWidget::~LdapConfigureWidget()
+{
+ delete mClientSearchConfig;
+}
+
+void LdapConfigureWidget::slotSelectionChanged(QListWidgetItem *item)
+{
+ bool state = (item != nullptr);
+ mEditButton->setEnabled(state);
+ mRemoveButton->setEnabled(state);
+ mDownButton->setEnabled(item && (mHostListView->row(item) != (mHostListView->count() - 1)));
+ mUpButton->setEnabled(item && (mHostListView->row(item) != 0));
+}
+
+void LdapConfigureWidget::slotItemClicked(QListWidgetItem *item)
+{
+ auto ldapItem = dynamic_cast<LdapWidgetItem *>(item);
+ if (!ldapItem) {
+ return;
+ }
+
+ if ((ldapItem->checkState() == Qt::Checked) != ldapItem->isActive()) {
+ Q_EMIT changed(true);
+ ldapItem->setIsActive(ldapItem->checkState() == Qt::Checked);
+ }
+}
+
+void LdapConfigureWidget::slotAddHost()
+{
+ KLDAP::LdapServer server;
+ KLDAP::AddHostDialog dlg(&server, this);
+
+ if (dlg.exec() && !server.host().trimmed().isEmpty()) { // krazy:exclude=crashy
+ auto item = new LdapWidgetItem(mHostListView);
+ item->setServer(server);
+
+ Q_EMIT changed(true);
+ }
+}
+
+void LdapConfigureWidget::slotEditHost()
+{
+ auto item = dynamic_cast<LdapWidgetItem *>(mHostListView->currentItem());
+ if (!item) {
+ return;
+ }
+
+ KLDAP::LdapServer server = item->server();
+ KLDAP::AddHostDialog dlg(&server, this);
+ dlg.setWindowTitle(i18nc("@title:window", "Edit Host"));
+
+ if (dlg.exec() && !server.host().isEmpty()) { // krazy:exclude=crashy
+ item->setServer(server);
+
+ Q_EMIT changed(true);
+ }
+}
+
+void LdapConfigureWidget::slotRemoveHost()
+{
+ QListWidgetItem *item = mHostListView->currentItem();
+ if (!item) {
+ return;
+ }
+ auto ldapItem = dynamic_cast<LdapWidgetItem *>(item);
+ const int answer = KMessageBox::questionYesNo(this,
+ i18n("Do you want to remove setting for host \"%1\"?", ldapItem->server().host()),
+ i18n("Remove Host"),
+ KStandardGuiItem::remove(),
+ KStandardGuiItem::cancel());
+ if (answer == KMessageBox::No) {
+ return;
+ }
+
+ delete mHostListView->takeItem(mHostListView->currentRow());
+
+ slotSelectionChanged(mHostListView->currentItem());
+
+ Q_EMIT changed(true);
+}
+
+static void swapItems(LdapWidgetItem *item, LdapWidgetItem *other)
+{
+ KLDAP::LdapServer server = item->server();
+ bool isActive = item->isActive();
+ item->setServer(other->server());
+ item->setIsActive(other->isActive());
+ item->setCheckState(other->isActive() ? Qt::Checked : Qt::Unchecked);
+ other->setServer(server);
+ other->setIsActive(isActive);
+ other->setCheckState(isActive ? Qt::Checked : Qt::Unchecked);
+}
+
+void LdapConfigureWidget::slotMoveUp()
+{
+ const QList<QListWidgetItem *> selectedItems = mHostListView->selectedItems();
+ if (selectedItems.isEmpty()) {
+ return;
+ }
+
+ LdapWidgetItem *item = static_cast<LdapWidgetItem *>(mHostListView->selectedItems().first());
+ if (!item) {
+ return;
+ }
+
+ auto above = static_cast<LdapWidgetItem *>(mHostListView->item(mHostListView->row(item) - 1));
+ if (!above) {
+ return;
+ }
+
+ swapItems(item, above);
+
+ mHostListView->setCurrentItem(above);
+ above->setSelected(true);
+
+ Q_EMIT changed(true);
+}
+
+void LdapConfigureWidget::slotMoveDown()
+{
+ const QList<QListWidgetItem *> selectedItems = mHostListView->selectedItems();
+ if (selectedItems.isEmpty()) {
+ return;
+ }
+
+ LdapWidgetItem *item = static_cast<LdapWidgetItem *>(mHostListView->selectedItems().first());
+ if (!item) {
+ return;
+ }
+
+ auto below = static_cast<LdapWidgetItem *>(mHostListView->item(mHostListView->row(item) + 1));
+ if (!below) {
+ return;
+ }
+
+ swapItems(item, below);
+
+ mHostListView->setCurrentItem(below);
+ below->setSelected(true);
+
+ Q_EMIT changed(true);
+}
+
+void LdapConfigureWidget::load()
+{
+ mHostListView->clear();
+ KConfig *config = KLDAP::LdapClientSearchConfig::config();
+ KConfigGroup group(config, "LDAP");
+
+ int count = group.readEntry("NumSelectedHosts", 0);
+ for (int i = 0; i < count; ++i) {
+ auto item = new LdapWidgetItem(mHostListView, true);
+ item->setCheckState(Qt::Checked);
+ auto job = new LdapWidgetItemReadConfigServerJob(this);
+ job->setCurrentIndex(i);
+ job->setActive(true);
+ job->setConfig(group);
+ job->setLdapWidgetItem(item);
+ job->start();
+ }
+
+ count = group.readEntry("NumHosts", 0);
+ for (int i = 0; i < count; ++i) {
+ auto item = new LdapWidgetItem(mHostListView);
+ auto job = new LdapWidgetItemReadConfigServerJob(this);
+ job->setCurrentIndex(i);
+ job->setActive(false);
+ job->setConfig(group);
+ job->setLdapWidgetItem(item);
+ job->start();
+ }
+
+ Q_EMIT changed(false);
+}
+
+void LdapConfigureWidget::save()
+{
+ // mClientSearchConfig->clearWalletPassword();
+ KConfig *config = KLDAP::LdapClientSearchConfig::config();
+ config->deleteGroup("LDAP");
+
+ KConfigGroup group(config, "LDAP");
+
+ int selected = 0;
+ int unselected = 0;
+ for (int i = 0; i < mHostListView->count(); ++i) {
+ auto item = dynamic_cast<LdapWidgetItem *>(mHostListView->item(i));
+ if (!item) {
+ continue;
+ }
+
+ KLDAP::LdapServer server = item->server();
+ if (item->checkState() == Qt::Checked) {
+ auto job = new LdapClientSearchConfigWriteConfigJob;
+ job->setActive(true);
+ job->setConfig(group);
+ job->setServerIndex(selected);
+ job->setServer(server);
+ job->start();
+ selected++;
+ } else {
+ auto job = new LdapClientSearchConfigWriteConfigJob;
+ job->setActive(false);
+ job->setConfig(group);
+ job->setServerIndex(unselected);
+ job->setServer(server);
+ job->start();
+ unselected++;
+ }
+ }
+
+ group.writeEntry("NumSelectedHosts", selected);
+ group.writeEntry("NumHosts", unselected);
+ config->sync();
+
+ Q_EMIT changed(false);
+}
+
+void LdapConfigureWidget::initGUI()
+{
+ auto mainLayout = new QVBoxLayout(this);
+ mainLayout->setObjectName(QStringLiteral("layout"));
+ mainLayout->setContentsMargins(5, 5, 5, 5);
+
+ // Contents of the QVGroupBox: label and hbox
+ auto label = new QLabel(i18n("Check all servers that should be used:"));
+ mainLayout->addWidget(label);
+
+ auto hBox = new QWidget(this);
+ mainLayout->addWidget(hBox);
+
+ auto hBoxHBoxLayout = new QHBoxLayout(hBox);
+ hBoxHBoxLayout->setContentsMargins(0, 0, 0, 0);
+ hBoxHBoxLayout->setSpacing(6);
+ // Contents of the hbox: listview and up/down buttons on the right (vbox)
+ mHostListView = new QListWidget(hBox);
+ hBoxHBoxLayout->addWidget(mHostListView);
+ mHostListView->setSortingEnabled(false);
+
+ auto upDownBox = new QWidget(hBox);
+ auto upDownBoxVBoxLayout = new QVBoxLayout(upDownBox);
+ upDownBoxVBoxLayout->setContentsMargins(0, 0, 0, 0);
+ hBoxHBoxLayout->addWidget(upDownBox);
+ upDownBoxVBoxLayout->setSpacing(6);
+ mUpButton = new QToolButton(upDownBox);
+ upDownBoxVBoxLayout->addWidget(mUpButton);
+ mUpButton->setIcon(QIcon::fromTheme(QStringLiteral("go-up")));
+ mUpButton->setEnabled(false); // b/c no item is selected yet
+
+ mDownButton = new QToolButton(upDownBox);
+ upDownBoxVBoxLayout->addWidget(mDownButton);
+ mDownButton->setIcon(QIcon::fromTheme(QStringLiteral("go-down")));
+ mDownButton->setEnabled(false); // b/c no item is selected yet
+
+ auto spacer = new QWidget(upDownBox);
+ upDownBoxVBoxLayout->addWidget(spacer);
+ upDownBoxVBoxLayout->setStretchFactor(spacer, 100);
+
+ auto buttons = new QDialogButtonBox(this);
+ QPushButton *add = buttons->addButton(i18n("&Add Host..."), QDialogButtonBox::ActionRole);
+ connect(add, &QPushButton::clicked, this, &LdapConfigureWidget::slotAddHost);
+ mEditButton = buttons->addButton(i18n("&Edit Host..."), QDialogButtonBox::ActionRole);
+ connect(mEditButton, &QPushButton::clicked, this, &LdapConfigureWidget::slotEditHost);
+ mEditButton->setEnabled(false);
+ mRemoveButton = buttons->addButton(i18n("&Remove Host"), QDialogButtonBox::ActionRole);
+ connect(mRemoveButton, &QPushButton::clicked, this, &LdapConfigureWidget::slotRemoveHost);
+ mRemoveButton->setEnabled(false);
+
+ mainLayout->addWidget(buttons);
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2019-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "kldap_export.h"
+
+#include <QWidget>
+
+class QListWidget;
+class QPushButton;
+class QToolButton;
+class QListWidgetItem;
+
+namespace KLDAP
+{
+class LdapClientSearchConfig;
+/**
+ * @brief The LdapConfigureWidget class
+ * @author Laurent Montel <montel@kde.org>
+ */
+class KLDAP_EXPORT LdapConfigureWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit LdapConfigureWidget(QWidget *parent = nullptr);
+ ~LdapConfigureWidget() override;
+
+ void load();
+ void save();
+
+private Q_SLOTS:
+ void slotAddHost();
+ void slotEditHost();
+ void slotRemoveHost();
+ void slotSelectionChanged(QListWidgetItem *);
+ void slotItemClicked(QListWidgetItem *);
+ void slotMoveUp();
+ void slotMoveDown();
+
+Q_SIGNALS:
+ void changed(bool);
+
+private:
+ void initGUI();
+
+ QListWidget *mHostListView = nullptr;
+
+ QPushButton *mAddButton = nullptr;
+ QPushButton *mEditButton = nullptr;
+ QPushButton *mRemoveButton = nullptr;
+
+ QToolButton *mUpButton = nullptr;
+ QToolButton *mDownButton = nullptr;
+ KLDAP::LdapClientSearchConfig *const mClientSearchConfig;
+};
+}
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "ldapconfigwidget.h"
+#include "ldapsearch.h"
+
+#include "ldap_debug.h"
+#include <KAuthorized>
+#include <KLocalizedString>
+#include <KPasswordLineEdit>
+#include <QComboBox>
+#include <QProgressDialog>
+#include <kmessagebox.h>
+
+#include <QCheckBox>
+#include <QFormLayout>
+#include <QObject>
+#include <QPushButton>
+#include <QRadioButton>
+#include <QSpinBox>
+
+using namespace KLDAP;
+
+class Q_DECL_HIDDEN LdapConfigWidget::LdapConfigWidgetPrivate
+{
+public:
+ LdapConfigWidgetPrivate(LdapConfigWidget *parent)
+ : mParent(parent)
+ {
+ mainLayout = new QFormLayout(mParent);
+ mainLayout->setContentsMargins(10, 0, 10, 0);
+ }
+
+ void setLDAPPort();
+ void setLDAPSPort();
+ void setAnonymous(bool on);
+ void setSimple(bool on);
+ void setSASL(bool on);
+ void queryDNClicked();
+ void queryMechClicked();
+ void loadData(LdapSearch *search, const LdapObject &object);
+ void loadResult(LdapSearch *search);
+ void sendQuery();
+ void initWidget();
+
+ LdapConfigWidget *const mParent;
+ QStringList mQResult;
+ QString mAttr;
+
+ QLineEdit *mUser = nullptr;
+ KPasswordLineEdit *mPassword = nullptr;
+ QLineEdit *mHost = nullptr;
+ QSpinBox *mPort = nullptr;
+ QSpinBox *mVersion = nullptr;
+ QSpinBox *mSizeLimit = nullptr;
+ QSpinBox *mTimeLimit = nullptr;
+ QSpinBox *mPageSize = nullptr;
+ QLineEdit *mDn = nullptr;
+ QLineEdit *mBindDn = nullptr;
+ QLineEdit *mRealm = nullptr;
+ QLineEdit *mFilter = nullptr;
+ QRadioButton *mAnonymous = nullptr;
+ QRadioButton *mSimple = nullptr;
+ QRadioButton *mSASL = nullptr;
+ QCheckBox *mSubTree = nullptr;
+ QPushButton *mEditButton = nullptr;
+ QPushButton *mQueryMech = nullptr;
+ QRadioButton *mSecNo = nullptr;
+ QRadioButton *mSecTLS = nullptr;
+ QRadioButton *mSecSSL = nullptr;
+ QComboBox *mMech = nullptr;
+
+ QProgressDialog *mProg = nullptr;
+
+ QFormLayout *mainLayout = nullptr;
+ WinFlags mFeatures = W_ALL;
+ bool mCancelled = false;
+};
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::initWidget()
+{
+ if (mFeatures & W_USER) {
+ mUser = new QLineEdit(mParent);
+ mUser->setObjectName(QStringLiteral("kcfg_ldapuser"));
+
+ mainLayout->addRow(i18n("User:"), mUser);
+ }
+
+ if (mFeatures & W_BINDDN) {
+ mBindDn = new QLineEdit(mParent);
+ mBindDn->setObjectName(QStringLiteral("kcfg_ldapbinddn"));
+
+ mainLayout->addRow(i18n("Bind DN:"), mBindDn);
+ }
+
+ if (mFeatures & W_REALM) {
+ mRealm = new QLineEdit(mParent);
+ mRealm->setObjectName(QStringLiteral("kcfg_ldaprealm"));
+
+ mainLayout->addRow(i18n("Realm:"), mRealm);
+ }
+
+ if (mFeatures & W_PASS) {
+ mPassword = new KPasswordLineEdit(mParent);
+ mPassword->setObjectName(QStringLiteral("kcfg_ldappassword"));
+ mPassword->setRevealPasswordAvailable(KAuthorized::authorize(QStringLiteral("lineedit_reveal_password")));
+
+ mainLayout->addRow(i18n("Password:"), mPassword);
+ }
+
+ if (mFeatures & W_HOST) {
+ mHost = new QLineEdit(mParent);
+ mHost->setObjectName(QStringLiteral("kcfg_ldaphost"));
+ mParent->connect(mHost, &QLineEdit::textChanged, mParent, &LdapConfigWidget::hostNameChanged);
+ mainLayout->addRow(i18n("Host:"), mHost);
+ }
+
+ if (mFeatures & W_PORT) {
+ mPort = new QSpinBox(mParent);
+ mPort->setRange(0, 65535);
+ mPort->setObjectName(QStringLiteral("kcfg_ldapport"));
+ mPort->setValue(389);
+
+ mainLayout->addRow(i18n("Port:"), mPort);
+ }
+
+ if (mFeatures & W_VER) {
+ mVersion = new QSpinBox(mParent);
+ mVersion->setRange(2, 3);
+ mVersion->setObjectName(QStringLiteral("kcfg_ldapver"));
+ mVersion->setValue(3);
+ mainLayout->addRow(i18n("LDAP version:"), mVersion);
+ }
+
+ if (mFeatures & W_SIZELIMIT) {
+ mSizeLimit = new QSpinBox(mParent);
+ mSizeLimit->setRange(0, 9999999);
+ mSizeLimit->setObjectName(QStringLiteral("kcfg_ldapsizelimit"));
+ mSizeLimit->setValue(0);
+ mSizeLimit->setSpecialValueText(i18nc("default ldap size limit", "Default"));
+ mainLayout->addRow(i18n("Size limit:"), mSizeLimit);
+ }
+
+ if (mFeatures & W_TIMELIMIT) {
+ mTimeLimit = new QSpinBox(mParent);
+ mTimeLimit->setRange(0, 9999999);
+ mTimeLimit->setObjectName(QStringLiteral("kcfg_ldaptimelimit"));
+ mTimeLimit->setValue(0);
+ mTimeLimit->setSuffix(i18n(" sec"));
+ mTimeLimit->setSpecialValueText(i18nc("default ldap time limit", "Default"));
+ mainLayout->addRow(i18n("Time limit:"), mTimeLimit);
+ }
+
+ if (mFeatures & W_PAGESIZE) {
+ mPageSize = new QSpinBox(mParent);
+ mPageSize->setRange(0, 9999999);
+ mPageSize->setObjectName(QStringLiteral("kcfg_ldappagesize"));
+ mPageSize->setValue(0);
+ mPageSize->setSpecialValueText(i18n("No paging"));
+ mainLayout->addRow(i18n("Page size:"), mPageSize);
+ }
+
+ if (mFeatures & W_DN) {
+ auto horizontalLayout = new QHBoxLayout;
+ mDn = new QLineEdit(mParent);
+ mDn->setObjectName(QStringLiteral("kcfg_ldapdn"));
+ horizontalLayout->addWidget(mDn);
+
+ // without host query doesn't make sense
+ if (mHost) {
+ auto dnquery = new QPushButton(i18n("Query Server"), mParent);
+ dnquery->setEnabled(false);
+ connect(dnquery, &QPushButton::clicked, mParent, [this]() {
+ queryDNClicked();
+ });
+ connect(mDn, &QLineEdit::textChanged, mParent, [dnquery](const QString &text) {
+ dnquery->setEnabled(!text.trimmed().isEmpty());
+ });
+ horizontalLayout->addWidget(dnquery);
+ }
+ mainLayout->addRow(i18nc("Distinguished Name", "DN:"), horizontalLayout);
+ }
+
+ if (mFeatures & W_FILTER) {
+ mFilter = new QLineEdit(mParent);
+ mFilter->setObjectName(QStringLiteral("kcfg_ldapfilter"));
+
+ mainLayout->addRow(i18n("Filter:"), mFilter);
+ }
+
+ if (mFeatures & W_SECBOX) {
+ auto btgroup = new QWidget(mParent);
+ btgroup->setContentsMargins({0, 0, 0, 0});
+
+ auto hbox = new QHBoxLayout(btgroup);
+
+ mSecNo = new QRadioButton(i18nc("@option:radio set no security", "No"), btgroup);
+ mSecNo->setObjectName(QStringLiteral("kcfg_ldapnosec"));
+ hbox->addWidget(mSecNo);
+ mSecTLS = new QRadioButton(i18nc("@option:radio use TLS security", "TLS"), btgroup);
+ mSecTLS->setObjectName(QStringLiteral("kcfg_ldaptls"));
+ hbox->addWidget(mSecTLS);
+ mSecSSL = new QRadioButton(i18nc("@option:radio use SSL security", "SSL"), btgroup);
+ mSecSSL->setObjectName(QStringLiteral("kcfg_ldapssl"));
+ hbox->addWidget(mSecSSL);
+
+ connect(mSecNo, &QRadioButton::clicked, mParent, [this]() {
+ setLDAPPort();
+ });
+ connect(mSecTLS, &QRadioButton::clicked, mParent, [this]() {
+ setLDAPPort();
+ });
+ connect(mSecSSL, &QRadioButton::clicked, mParent, [this]() {
+ setLDAPSPort();
+ });
+
+ mSecNo->setChecked(true);
+ mainLayout->addRow(i18n("Security:"), btgroup);
+ }
+
+ if (mFeatures & W_AUTHBOX) {
+ // invisible QWidget for auto-exclusive radiobutton
+ auto authbox = new QWidget(mParent);
+ authbox->setContentsMargins({0, 0, 0, 0});
+
+ auto hbox = new QHBoxLayout(authbox);
+
+ mAnonymous = new QRadioButton(i18nc("@option:radio anonymous authentication", "Anonymous"), authbox);
+ mAnonymous->setObjectName(QStringLiteral("kcfg_ldapanon"));
+ hbox->addWidget(mAnonymous);
+ mSimple = new QRadioButton(i18nc("@option:radio simple authentication", "Simple"), authbox);
+ mSimple->setObjectName(QStringLiteral("kcfg_ldapsimple"));
+ hbox->addWidget(mSimple);
+ mSASL = new QRadioButton(i18nc("@option:radio SASL authentication", "SASL"), authbox);
+ mSASL->setObjectName(QStringLiteral("kcfg_ldapsasl"));
+ hbox->addWidget(mSASL);
+ mainLayout->addRow(i18n("Authentication:"), authbox);
+
+ hbox = new QHBoxLayout;
+ mMech = new QComboBox(mParent);
+ mMech->setObjectName(QStringLiteral("kcfg_ldapsaslmech"));
+ mMech->addItem(QStringLiteral("DIGEST-MD5"));
+ mMech->addItem(QStringLiteral("GSSAPI"));
+ mMech->addItem(QStringLiteral("PLAIN"));
+ hbox->addWidget(mMech);
+
+ // without host query doesn't make sense
+ if (mHost) {
+ mQueryMech = new QPushButton(i18n("Query Server"), authbox);
+ hbox->addWidget(mQueryMech);
+ connect(mQueryMech, &QPushButton::clicked, mParent, [this]() {
+ queryMechClicked();
+ });
+ }
+ mainLayout->addRow(i18n("SASL mechanism:"), hbox);
+
+ connect(mAnonymous, &QRadioButton::toggled, mParent, [this](bool b) {
+ setAnonymous(b);
+ });
+ connect(mSimple, &QRadioButton::toggled, mParent, [this](bool b) {
+ setSimple(b);
+ });
+ connect(mSASL, &QRadioButton::toggled, mParent, [this](bool b) {
+ setSASL(b);
+ });
+
+ mAnonymous->setChecked(true);
+ }
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::sendQuery()
+{
+ LdapServer _server(mParent->server());
+
+ mQResult.clear();
+ mCancelled = true;
+
+ if (mAttr == QLatin1String("supportedsaslmechanisms")) {
+ _server.setAuth(LdapServer::Anonymous);
+ }
+
+ LdapUrl _url(_server.url());
+
+ _url.setDn(LdapDN(QLatin1String("")));
+ _url.setAttributes(QStringList(mAttr));
+ _url.setScope(LdapUrl::Base);
+
+ qCDebug(LDAP_LOG) << "sendQuery url:" << _url.toDisplayString();
+
+ LdapSearch search;
+ connect(&search, &LdapSearch::data, mParent, [this](KLDAP::LdapSearch *s, const KLDAP::LdapObject &obj) {
+ loadData(s, obj);
+ });
+ connect(&search, &LdapSearch::result, mParent, [this](KLDAP::LdapSearch *s) {
+ loadResult(s);
+ });
+
+ if (!search.search(_url)) {
+ KMessageBox::error(mParent, search.errorString(), i18n("Check server"));
+ return;
+ }
+
+ if (!mProg) {
+ mProg = new QProgressDialog(mParent);
+ mProg->setWindowTitle(i18nc("@title:window", "LDAP Query"));
+ mProg->setModal(true);
+ }
+ mProg->setLabelText(_url.toDisplayString());
+ mProg->setMaximum(1);
+ mProg->setMinimum(0);
+ mProg->setValue(0);
+ mProg->exec();
+ if (mCancelled) {
+ qCDebug(LDAP_LOG) << "query canceled!";
+ search.abandon();
+ } else {
+ if (search.error()) {
+ if (search.errorString().isEmpty()) {
+ KMessageBox::error(mParent, i18nc("%1 is a url to ldap server", "Unknown error connecting %1", _url.toDisplayString()));
+ } else {
+ KMessageBox::error(mParent, search.errorString());
+ }
+ }
+ }
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::queryMechClicked()
+{
+ mAttr = QStringLiteral("supportedsaslmechanisms");
+ sendQuery();
+ if (!mQResult.isEmpty()) {
+ mQResult.sort();
+ mMech->clear();
+ mMech->addItems(mQResult);
+ }
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::queryDNClicked()
+{
+ mAttr = QStringLiteral("namingcontexts");
+ sendQuery();
+ if (!mQResult.isEmpty()) {
+ mDn->setText(mQResult.constFirst());
+ }
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::loadData(LdapSearch *, const LdapObject &object)
+{
+ qCDebug(LDAP_LOG) << "object:" << object.toString();
+ mProg->setValue(mProg->value() + 1);
+ LdapAttrMap::ConstIterator end(object.attributes().constEnd());
+ for (LdapAttrMap::ConstIterator it = object.attributes().constBegin(); it != end; ++it) {
+ LdapAttrValue::ConstIterator end2((*it).constEnd());
+ for (LdapAttrValue::ConstIterator it2 = (*it).constBegin(); it2 != end2; ++it2) {
+ mQResult.push_back(QString::fromUtf8(*it2));
+ }
+ }
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::loadResult(LdapSearch *search)
+{
+ Q_UNUSED(search)
+ mCancelled = false;
+ mProg->close();
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::setAnonymous(bool on)
+{
+ if (!on) {
+ return;
+ }
+ if (mUser) {
+ mUser->setEnabled(false);
+ }
+ if (mPassword) {
+ mPassword->setEnabled(false);
+ }
+ if (mBindDn) {
+ mBindDn->setEnabled(false);
+ }
+ if (mRealm) {
+ mRealm->setEnabled(false);
+ }
+ if (mMech) {
+ mMech->setEnabled(false);
+ }
+ if (mQueryMech) {
+ mQueryMech->setEnabled(false);
+ }
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::setSimple(bool on)
+{
+ if (!on) {
+ return;
+ }
+ if (mUser) {
+ mUser->setEnabled(false);
+ }
+ if (mPassword) {
+ mPassword->setEnabled(true);
+ }
+ if (mBindDn) {
+ mBindDn->setEnabled(true);
+ }
+ if (mRealm) {
+ mRealm->setEnabled(false);
+ }
+ if (mMech) {
+ mMech->setEnabled(false);
+ }
+ if (mQueryMech) {
+ mQueryMech->setEnabled(false);
+ }
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::setSASL(bool on)
+{
+ if (!on) {
+ return;
+ }
+ if (mUser) {
+ mUser->setEnabled(true);
+ }
+ if (mPassword) {
+ mPassword->setEnabled(true);
+ }
+ if (mBindDn) {
+ mBindDn->setEnabled(true);
+ }
+ if (mRealm) {
+ mRealm->setEnabled(true);
+ }
+ if (mMech) {
+ mMech->setEnabled(true);
+ }
+ if (mQueryMech) {
+ mQueryMech->setEnabled(true);
+ }
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::setLDAPPort()
+{
+ if (mPort) {
+ mPort->setValue(389);
+ }
+}
+
+void LdapConfigWidget::LdapConfigWidgetPrivate::setLDAPSPort()
+{
+ if (mPort) {
+ mPort->setValue(636);
+ }
+}
+
+LdapConfigWidget::LdapConfigWidget(QWidget *parent, Qt::WindowFlags fl)
+ : QWidget(parent, fl)
+ , d(new LdapConfigWidgetPrivate(this))
+{
+}
+
+LdapConfigWidget::LdapConfigWidget(LdapConfigWidget::WinFlags flags, QWidget *parent, Qt::WindowFlags fl)
+ : QWidget(parent, fl)
+ , d(new LdapConfigWidgetPrivate(this))
+{
+ d->mFeatures = flags;
+
+ d->initWidget();
+}
+
+LdapConfigWidget::~LdapConfigWidget() = default;
+
+LdapUrl LdapConfigWidget::url() const
+{
+ return server().url();
+}
+
+void LdapConfigWidget::setUrl(const LdapUrl &url)
+{
+ LdapServer _server;
+ _server.setUrl(url);
+ setServer(_server);
+}
+
+LdapServer LdapConfigWidget::server() const
+{
+ LdapServer _server;
+ if (d->mSecSSL && d->mSecSSL->isChecked()) {
+ _server.setSecurity(LdapServer::SSL);
+ } else if (d->mSecTLS && d->mSecTLS->isChecked()) {
+ _server.setSecurity(LdapServer::TLS);
+ } else {
+ _server.setSecurity(LdapServer::None);
+ }
+
+ if (d->mUser) {
+ _server.setUser(d->mUser->text());
+ }
+ if (d->mBindDn) {
+ _server.setBindDn(d->mBindDn->text());
+ }
+ if (d->mPassword) {
+ _server.setPassword(d->mPassword->password());
+ }
+ if (d->mRealm) {
+ _server.setRealm(d->mRealm->text());
+ }
+ if (d->mHost) {
+ _server.setHost(d->mHost->text());
+ }
+ if (d->mPort) {
+ _server.setPort(d->mPort->value());
+ }
+ if (d->mDn) {
+ _server.setBaseDn(LdapDN(d->mDn->text()));
+ }
+ if (d->mFilter) {
+ _server.setFilter(d->mFilter->text());
+ }
+ if (d->mVersion) {
+ _server.setVersion(d->mVersion->value());
+ }
+ if (d->mSizeLimit && d->mSizeLimit->value() != 0) {
+ _server.setSizeLimit(d->mSizeLimit->value());
+ }
+ if (d->mTimeLimit && d->mTimeLimit->value() != 0) {
+ _server.setTimeLimit(d->mTimeLimit->value());
+ }
+ if (d->mPageSize && d->mPageSize->value() != 0) {
+ _server.setPageSize(d->mPageSize->value());
+ }
+ if (d->mAnonymous && d->mAnonymous->isChecked()) {
+ _server.setAuth(LdapServer::Anonymous);
+ } else if (d->mSimple && d->mSimple->isChecked()) {
+ _server.setAuth(LdapServer::Simple);
+ } else if (d->mSASL && d->mSASL->isChecked()) {
+ _server.setAuth(LdapServer::SASL);
+ _server.setMech(d->mMech->currentText());
+ }
+ return _server;
+}
+
+void LdapConfigWidget::setServer(const LdapServer &server)
+{
+ switch (server.security()) {
+ case LdapServer::SSL:
+ if (d->mSecSSL) {
+ d->mSecSSL->setChecked(true);
+ }
+ break;
+ case LdapServer::TLS:
+ if (d->mSecTLS) {
+ d->mSecTLS->setChecked(true);
+ }
+ break;
+ case LdapServer::None:
+ if (d->mSecNo) {
+ d->mSecNo->setChecked(true);
+ }
+ break;
+ }
+
+ switch (server.auth()) {
+ case LdapServer::Anonymous:
+ if (d->mAnonymous) {
+ d->mAnonymous->setChecked(true);
+ }
+ break;
+ case LdapServer::Simple:
+ if (d->mSimple) {
+ d->mSimple->setChecked(true);
+ }
+ break;
+ case LdapServer::SASL:
+ if (d->mSASL) {
+ d->mSASL->setChecked(true);
+ }
+ break;
+ }
+
+ setUser(server.user());
+ setBindDn(server.bindDn());
+ setPassword(server.password());
+ setRealm(server.realm());
+ setHost(server.host());
+ setPort(server.port());
+ setFilter(server.filter());
+ setDn(server.baseDn());
+ setVersion(server.version());
+ setSizeLimit(server.sizeLimit());
+ setTimeLimit(server.timeLimit());
+ setPageSize(server.pageSize());
+ setMech(server.mech());
+}
+
+void LdapConfigWidget::setUser(const QString &user)
+{
+ if (d->mUser) {
+ d->mUser->setText(user);
+ }
+}
+
+QString LdapConfigWidget::user() const
+{
+ return d->mUser ? d->mUser->text() : QString();
+}
+
+void LdapConfigWidget::setPassword(const QString &password)
+{
+ if (d->mPassword) {
+ d->mPassword->setPassword(password);
+ }
+}
+
+QString LdapConfigWidget::password() const
+{
+ return d->mPassword ? d->mPassword->password() : QString();
+}
+
+void LdapConfigWidget::setBindDn(const QString &binddn)
+{
+ if (d->mBindDn) {
+ d->mBindDn->setText(binddn);
+ }
+}
+
+QString LdapConfigWidget::bindDn() const
+{
+ return d->mBindDn ? d->mBindDn->text() : QString();
+}
+
+void LdapConfigWidget::setRealm(const QString &realm)
+{
+ if (d->mRealm) {
+ d->mRealm->setText(realm);
+ }
+}
+
+QString LdapConfigWidget::realm() const
+{
+ return d->mRealm ? d->mRealm->text() : QString();
+}
+
+void LdapConfigWidget::setHost(const QString &host)
+{
+ if (d->mHost) {
+ d->mHost->setText(host);
+ }
+}
+
+QString LdapConfigWidget::host() const
+{
+ return d->mHost ? d->mHost->text() : QString();
+}
+
+void LdapConfigWidget::setPort(int port)
+{
+ if (d->mPort) {
+ d->mPort->setValue(port);
+ }
+}
+
+int LdapConfigWidget::port() const
+{
+ return d->mPort ? d->mPort->value() : 389;
+}
+
+void LdapConfigWidget::setVersion(int version)
+{
+ if (d->mVersion) {
+ d->mVersion->setValue(version);
+ }
+}
+
+int LdapConfigWidget::version() const
+{
+ return d->mVersion ? d->mVersion->value() : 3;
+}
+
+void LdapConfigWidget::setDn(const LdapDN &dn)
+{
+ if (d->mDn) {
+ d->mDn->setText(dn.toString());
+ }
+}
+
+LdapDN LdapConfigWidget::dn() const
+{
+ return d->mDn ? LdapDN(d->mDn->text()) : LdapDN();
+}
+
+void LdapConfigWidget::setFilter(const QString &filter)
+{
+ if (d->mFilter) {
+ d->mFilter->setText(filter);
+ }
+}
+
+QString LdapConfigWidget::filter() const
+{
+ return d->mFilter ? d->mFilter->text() : QString();
+}
+
+void LdapConfigWidget::setMech(const QString &mech)
+{
+ if (d->mMech == nullptr) {
+ return;
+ }
+ if (!mech.isEmpty()) {
+ int i = 0;
+ while (i < d->mMech->count()) {
+ if (d->mMech->itemText(i) == mech) {
+ break;
+ }
+ i++;
+ }
+ if (i == d->mMech->count()) {
+ d->mMech->addItem(mech);
+ }
+ d->mMech->setCurrentIndex(i);
+ }
+}
+
+QString LdapConfigWidget::mech() const
+{
+ return d->mMech ? d->mMech->currentText() : QString();
+}
+
+void LdapConfigWidget::setSecurity(Security security)
+{
+ switch (security) {
+ case None:
+ d->mSecNo->setChecked(true);
+ break;
+ case SSL:
+ d->mSecSSL->setChecked(true);
+ break;
+ case TLS:
+ d->mSecTLS->setChecked(true);
+ break;
+ }
+}
+
+LdapConfigWidget::Security LdapConfigWidget::security() const
+{
+ if (d->mSecTLS->isChecked()) {
+ return TLS;
+ }
+ if (d->mSecSSL->isChecked()) {
+ return SSL;
+ }
+ return None;
+}
+
+void LdapConfigWidget::setAuth(Auth auth)
+{
+ switch (auth) {
+ case Anonymous:
+ d->mAnonymous->setChecked(true);
+ break;
+ case Simple:
+ d->mSimple->setChecked(true);
+ break;
+ case SASL:
+ d->mSASL->setChecked(true);
+ break;
+ }
+}
+
+LdapConfigWidget::Auth LdapConfigWidget::auth() const
+{
+ if (d->mSimple->isChecked()) {
+ return Simple;
+ }
+ if (d->mSASL->isChecked()) {
+ return SASL;
+ }
+ return Anonymous;
+}
+
+void LdapConfigWidget::setSizeLimit(int sizelimit)
+{
+ if (d->mSizeLimit) {
+ d->mSizeLimit->setValue(sizelimit);
+ }
+}
+
+int LdapConfigWidget::sizeLimit() const
+{
+ return d->mSizeLimit ? d->mSizeLimit->value() : 0;
+}
+
+void LdapConfigWidget::setTimeLimit(int timelimit)
+{
+ if (d->mTimeLimit) {
+ d->mTimeLimit->setValue(timelimit);
+ }
+}
+
+int LdapConfigWidget::timeLimit() const
+{
+ return d->mTimeLimit ? d->mTimeLimit->value() : 0;
+}
+
+void LdapConfigWidget::setPageSize(int pagesize)
+{
+ if (d->mPageSize) {
+ d->mPageSize->setValue(pagesize);
+ }
+}
+
+int LdapConfigWidget::pageSize() const
+{
+ return d->mPageSize ? d->mPageSize->value() : 0;
+}
+
+LdapConfigWidget::WinFlags LdapConfigWidget::features() const
+{
+ return d->mFeatures;
+}
+
+void LdapConfigWidget::setFeatures(LdapConfigWidget::WinFlags features)
+{
+ d->mFeatures = features;
+
+ // First delete all the child widgets.
+ // FIXME: I hope it's correct
+ QList<QObject *> ch = children();
+ const int numberOfChild(ch.count());
+ for (int i = 0; i < numberOfChild; ++i) {
+ QWidget *widget = qobject_cast<QWidget *>(ch[i]);
+ if (widget && widget->parent() == this) {
+ delete (widget);
+ }
+ }
+
+ // Re-create child widgets according to the new flags
+ d->initWidget();
+}
+
+#include "moc_ldapconfigwidget.cpp"
--- /dev/null
+/*
+ This file is part of libkldap.
+ SPDX-FileCopyrightText: 2004-2006 Szombathelyi György <gyurco@freemail.hu>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QString>
+#include <QWidget>
+
+#include "kldap_export.h"
+#include "ldapdn.h"
+#include "ldapobject.h"
+#include "ldapserver.h"
+#include "ldapurl.h"
+
+namespace KLDAP
+{
+/**
+ @brief LDAP Configuration widget
+
+ This class can be used to query the user for LDAP connection parameters.
+ It's KConfigXT compatible, using widget names starting with kcfg_
+*/
+
+class KLDAP_EXPORT LdapConfigWidget : public QWidget
+{
+ Q_OBJECT
+ Q_FLAGS(WinFlags)
+ Q_PROPERTY(WinFlags features READ features WRITE setFeatures)
+ Q_PROPERTY(QString user READ user WRITE setUser)
+ Q_PROPERTY(QString bindDn READ bindDn WRITE setBindDn)
+ Q_PROPERTY(QString realm READ realm WRITE setRealm)
+ Q_PROPERTY(QString password READ password WRITE setPassword)
+ Q_PROPERTY(QString host READ host WRITE setHost)
+ Q_PROPERTY(int port READ port WRITE setPort)
+ Q_PROPERTY(int version READ version WRITE setVersion)
+ Q_PROPERTY(LdapDN dn READ dn WRITE setDn)
+ Q_PROPERTY(QString filter READ filter WRITE setFilter)
+ Q_PROPERTY(QString mech READ mech WRITE setMech)
+ Q_PROPERTY(Security security READ security WRITE setSecurity)
+ Q_PROPERTY(Auth auth READ auth WRITE setAuth)
+ Q_PROPERTY(int sizeLimit READ sizeLimit WRITE setSizeLimit)
+ Q_PROPERTY(int timeLimit READ timeLimit WRITE setTimeLimit)
+ Q_PROPERTY(int pageSize READ pageSize WRITE setPageSize)
+
+public:
+ enum WinFlag {
+ W_USER = 0x1,
+ W_BINDDN = 0x2,
+ W_REALM = 0x4,
+ W_PASS = 0x8,
+ W_HOST = 0x10,
+ W_PORT = 0x20,
+ W_VER = 0x40,
+ W_DN = 0x80,
+ W_FILTER = 0x100,
+ W_SECBOX = 0x200,
+ W_AUTHBOX = 0x400,
+ W_TIMELIMIT = 0x800,
+ W_SIZELIMIT = 0x1000,
+ W_PAGESIZE = 0x2000,
+ W_ALL = 0x2fff
+ };
+ Q_DECLARE_FLAGS(WinFlags, WinFlag)
+
+ enum Security { None, SSL, TLS };
+ Q_ENUM(Security)
+
+ enum Auth { Anonymous, Simple, SASL };
+ Q_ENUM(Auth)
+
+ /** Constructs an empty configuration widget.
+ * You need to call setFlags() after this.
+ * @param parent the QWidget parent
+ * @param fl the window flags to set
+ */
+ explicit LdapConfigWidget(QWidget *parent = nullptr, Qt::WindowFlags fl = {});
+ /** Constructs a configuration widget */
+ explicit LdapConfigWidget(WinFlags flags, QWidget *parent = nullptr, Qt::WindowFlags fl = {});
+ /** Destructs a configuration widget */
+ ~LdapConfigWidget() override;
+
+ /** Sets the user name. Kconfig widget name: kcfg_ldapuser
+ * @param user the user name to set
+ */
+ void setUser(const QString &user);
+ /** Gets the user name. Kconfig widget name: kcfg_ldapuser */
+ Q_REQUIRED_RESULT QString user() const;
+
+ /** Sets the password. Kconfig widget name: kcfg_ldappassword
+ * @param password the password to set
+ */
+ void setPassword(const QString &password);
+ /** Gets the password. Kconfig widget name: kcfg_ldappassword */
+ Q_REQUIRED_RESULT QString password() const;
+
+ /**
+ * Sets the bind dn.
+ * Kconfig widget name: kcfg_ldapbinddn
+ * @param binddn the LDAP Bind DN to set
+ */
+ void setBindDn(const QString &binddn);
+ /** Gets the bind dn. Kconfig widget name: kcfg_ldapbinddn*/
+ Q_REQUIRED_RESULT QString bindDn() const;
+
+ /** Sets the SASL realm. Kconfig widget name: kcfg_ldaprealm
+ * @param realm the SASL realm to set
+ */
+ void setRealm(const QString &realm);
+ /** Gets the SASL realm. Kconfig widget name: kcfg_ldaprealm */
+ Q_REQUIRED_RESULT QString realm() const;
+
+ /** Sets the host name. Kconfig widget name: kcfg_ldaphost
+ * @param host the LDAP host to set
+ */
+ void setHost(const QString &host);
+ /** Gets the host name. Kconfig widget name: kcfg_ldaphost */
+ Q_REQUIRED_RESULT QString host() const;
+
+ /** Sets the LDAP port. Kconfig widget name: kcfg_ldapport
+ * @param port the LDAP port to set
+ */
+ void setPort(int port);
+ /** Gets the LDAP port. Kconfig widget name: kcfg_ldapport */
+ Q_REQUIRED_RESULT int port() const;
+
+ /** Sets the LDAP protocol version. Kconfig widget name: kcfg_ldapver
+ * @param version the LDAP protocol version to set
+ */
+ void setVersion(int version);
+ /** Gets the LDAP protocol version. Kconfig widget name: kcfg_ldapver */
+ Q_REQUIRED_RESULT int version() const;
+
+ /** Sets the LDAP Base DN. Kconfig widget name: kcfg_ldapdn
+ * @param dn the LDAP Base DN to set
+ */
+ void setDn(const LdapDN &dn);
+ /** Gets the LDAP Base DN. Kconfig widget name: kcfg_ldapdn */
+ Q_REQUIRED_RESULT LdapDN dn() const;
+
+ /** Sets the LDAP Filter. Kconfig widget name: kcfg_ldapfilter
+ * @param filter the LDAP Filter to set
+ */
+ void setFilter(const QString &filter);
+ /** Gets the LDAP Filter. Kconfig widget name: kcfg_ldapfilter */
+ Q_REQUIRED_RESULT QString filter() const;
+
+ /** Sets the SASL Mechanism. Kconfig widget name: kcfg_ldapsaslmech
+ * @param mech the SASL Mechanism to set
+ */
+ void setMech(const QString &mech);
+ /** Gets the SASL Mechanism. Kconfig widget name: kcfg_ldapsaslmech */
+ Q_REQUIRED_RESULT QString mech() const;
+
+ /**
+ * Sets the security type (None, SSL, TLS).
+ * Kconfig widget names: kcfg_ldapnosec, kcfg_ldaptls, kcfg_ldapssl
+ * @param security the security type to set
+ */
+ void setSecurity(Security security);
+ /**
+ * Returns the security type.
+ * Kconfig widget names: kcfg_ldapnosec, kcfg_ldaptls, kcfg_ldapssl
+ * @param security the security type to set
+ */
+ Q_REQUIRED_RESULT Security security() const;
+
+ /**
+ * Sets the authentication type (Anonymous, Simple, SASL).
+ * Kconfig widget names: kcfg_ldapanon, kcfg_ldapsimple, kcfg_ldapsasl
+ * @param auth the authentication type to set
+ */
+ void setAuth(Auth auth);
+ /**
+ * Returns the authentication type.
+ * Kconfig widget names: kcfg_ldapanon, kcfg_ldapsimple, kcfg_ldapsasl
+ * @param auth the authentication type to set
+ */
+ Q_REQUIRED_RESULT Auth auth() const;
+
+ /**
+ * Sets the size limit.
+ * KConfig widget name: kcfg_ldapsizelimit
+ * @param sizelimit the size limit to set
+ */
+ void setSizeLimit(int sizelimit);
+ /**
+ * Returns the size limit.
+ * KConfig widget name: kcfg_ldapsizelimit
+ */
+ Q_REQUIRED_RESULT int sizeLimit() const;
+
+ /**
+ * Sets the time limit.
+ * KConfig widget name: kcfg_ldaptimelimit
+ * @param timelimit the time limit to set
+ */
+ void setTimeLimit(int timelimit);
+ /**
+ * Returns the time limit.
+ * KConfig widget name: kcfg_ldaptimelimit
+ */
+ Q_REQUIRED_RESULT int timeLimit() const;
+
+ /**
+ * Sets the page size.
+ * KConfig widget name: kcfg_ldappagesize
+ * @param pagesize the page size to set
+ */
+ void setPageSize(int pagesize);
+ /**
+ * Returns the page size.
+ * KConfig widget name: kcfg_ldappagesize
+ */
+ Q_REQUIRED_RESULT int pageSize() const;
+
+ Q_REQUIRED_RESULT WinFlags features() const;
+ void setFeatures(WinFlags features);
+
+ /**
+ * Returns a LDAP Url constructed from the settings given.
+ * Extensions are filled for use in the LDAP ioslave
+ */
+ Q_REQUIRED_RESULT LdapUrl url() const;
+ /**
+ * Set up the widget via an LDAP Url.
+ * @param url the LDAP Url to set
+ */
+ void setUrl(const LdapUrl &url);
+
+ /**
+ * Returns an LdapServer object constructed from the settings given.
+ */
+ Q_REQUIRED_RESULT LdapServer server() const;
+ /**
+ * Set up the widget via an LdapServer object.
+ * @param server the LdapServer object to set
+ */
+ void setServer(const LdapServer &server);
+
+Q_SIGNALS:
+ /**
+ * @since 4.13
+ */
+ void hostNameChanged(const QString &);
+
+private:
+ class LdapConfigWidgetPrivate;
+ std::unique_ptr<LdapConfigWidgetPrivate> const d;
+};
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(LdapConfigWidget::WinFlags)
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapsearchclientreadconfigserverjob.h"
+#include "ldapclient.h"
+#include "ldapclient_debug.h"
+#include "ldapclientsearchconfigreadconfigjob.h"
+using namespace KLDAP;
+LdapSearchClientReadConfigServerJob::LdapSearchClientReadConfigServerJob(QObject *parent)
+ : QObject(parent)
+{
+}
+
+LdapSearchClientReadConfigServerJob::~LdapSearchClientReadConfigServerJob() = default;
+
+void LdapSearchClientReadConfigServerJob::start()
+{
+ if (!canStart()) {
+ qCWarning(LDAPCLIENT_LOG) << " Impossible to start LdapSearchClientReadConfigServerJob";
+ deleteLater();
+ return;
+ }
+ auto job = new LdapClientSearchConfigReadConfigJob(this);
+ connect(job, &LdapClientSearchConfigReadConfigJob::configLoaded, this, &LdapSearchClientReadConfigServerJob::slotConfigLoaded);
+ job->setActive(mActive);
+ job->setConfig(mConfig);
+ job->setServerIndex(mCurrentIndex);
+ job->start();
+}
+
+bool LdapSearchClientReadConfigServerJob::canStart() const
+{
+ return mCurrentIndex != -1 && mConfig.isValid();
+}
+
+void LdapSearchClientReadConfigServerJob::slotConfigLoaded(const KLDAP::LdapServer &server)
+{
+ mLdapClient->setServer(server);
+ deleteLater();
+}
+
+LdapClient *LdapSearchClientReadConfigServerJob::ldapClient() const
+{
+ return mLdapClient;
+}
+
+void LdapSearchClientReadConfigServerJob::setLdapClient(LdapClient *ldapClient)
+{
+ mLdapClient = ldapClient;
+}
+
+int LdapSearchClientReadConfigServerJob::currentIndex() const
+{
+ return mCurrentIndex;
+}
+
+void LdapSearchClientReadConfigServerJob::setCurrentIndex(int currentIndex)
+{
+ mCurrentIndex = currentIndex;
+}
+
+bool LdapSearchClientReadConfigServerJob::active() const
+{
+ return mActive;
+}
+
+void LdapSearchClientReadConfigServerJob::setActive(bool active)
+{
+ mActive = active;
+}
+
+KConfigGroup LdapSearchClientReadConfigServerJob::config() const
+{
+ return mConfig;
+}
+
+void LdapSearchClientReadConfigServerJob::setConfig(const KConfigGroup &config)
+{
+ mConfig = config;
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "kldap_export.h"
+#include <KConfigGroup>
+#include <QObject>
+namespace KLDAP
+{
+class LdapClient;
+class LdapServer;
+class KLDAP_EXPORT LdapSearchClientReadConfigServerJob : public QObject
+{
+ Q_OBJECT
+public:
+ explicit LdapSearchClientReadConfigServerJob(QObject *parent = nullptr);
+ ~LdapSearchClientReadConfigServerJob() override;
+
+ void start();
+ Q_REQUIRED_RESULT bool canStart() const;
+
+ Q_REQUIRED_RESULT int currentIndex() const;
+ void setCurrentIndex(int currentIndex);
+
+ Q_REQUIRED_RESULT bool active() const;
+ void setActive(bool active);
+
+ Q_REQUIRED_RESULT KConfigGroup config() const;
+ void setConfig(const KConfigGroup &config);
+
+ LdapClient *ldapClient() const;
+ void setLdapClient(LdapClient *ldapClient);
+
+private:
+ void slotConfigLoaded(const KLDAP::LdapServer &server);
+ LdapClient *mLdapClient = nullptr;
+ KConfigGroup mConfig;
+ int mCurrentIndex = -1;
+ bool mActive = false;
+};
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapwidgetitem_p.h"
+using namespace KLDAP;
+
+LdapWidgetItem::LdapWidgetItem(QListWidget *parent, bool isActive)
+ : QListWidgetItem(parent, QListWidgetItem::UserType)
+ , mIsActive(isActive)
+{
+ setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
+ setCheckState(isActive ? Qt::Checked : Qt::Unchecked);
+}
+
+void LdapWidgetItem::setServer(const KLDAP::LdapServer &server)
+{
+ mServer = server;
+ setText(mServer.host());
+}
+
+const KLDAP::LdapServer &LdapWidgetItem::server() const
+{
+ return mServer;
+}
+
+void LdapWidgetItem::setIsActive(bool isActive)
+{
+ mIsActive = isActive;
+}
+
+bool LdapWidgetItem::isActive() const
+{
+ return mIsActive;
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+
+#include <QListWidget>
+#include <kldap/ldapserver.h>
+namespace KLDAP
+{
+class LdapWidgetItem : public QListWidgetItem
+{
+public:
+ explicit LdapWidgetItem(QListWidget *parent, bool isActive = false);
+
+ void setServer(const KLDAP::LdapServer &server);
+
+ const KLDAP::LdapServer &server() const;
+
+ void setIsActive(bool isActive);
+
+ Q_REQUIRED_RESULT bool isActive() const;
+
+private:
+ KLDAP::LdapServer mServer;
+ bool mIsActive = false;
+};
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include "ldapwidgetitemreadconfigserverjob.h"
+#include "ldapclientsearchconfigreadconfigjob.h"
+#include "ldapwidgetitem_p.h"
+using namespace KLDAP;
+LdapWidgetItemReadConfigServerJob::LdapWidgetItemReadConfigServerJob(QObject *parent)
+ : QObject(parent)
+{
+}
+
+LdapWidgetItemReadConfigServerJob::~LdapWidgetItemReadConfigServerJob() = default;
+
+void LdapWidgetItemReadConfigServerJob::start()
+{
+ auto job = new LdapClientSearchConfigReadConfigJob(this);
+ connect(job, &LdapClientSearchConfigReadConfigJob::configLoaded, this, &LdapWidgetItemReadConfigServerJob::slotConfigLoaded);
+ job->setActive(mActive);
+ job->setConfig(mConfig);
+ job->setServerIndex(mCurrentIndex);
+ job->start();
+}
+
+void LdapWidgetItemReadConfigServerJob::slotConfigLoaded(const KLDAP::LdapServer &server)
+{
+ mLdapWidgetItem->setServer(server);
+ deleteLater();
+}
+
+LdapWidgetItem *LdapWidgetItemReadConfigServerJob::ldapWidgetItem() const
+{
+ return mLdapWidgetItem;
+}
+
+void LdapWidgetItemReadConfigServerJob::setLdapWidgetItem(LdapWidgetItem *ldapWidgetItem)
+{
+ mLdapWidgetItem = ldapWidgetItem;
+}
+
+int LdapWidgetItemReadConfigServerJob::currentIndex() const
+{
+ return mCurrentIndex;
+}
+
+void LdapWidgetItemReadConfigServerJob::setCurrentIndex(int currentIndex)
+{
+ mCurrentIndex = currentIndex;
+}
+
+bool LdapWidgetItemReadConfigServerJob::active() const
+{
+ return mActive;
+}
+
+void LdapWidgetItemReadConfigServerJob::setActive(bool active)
+{
+ mActive = active;
+}
+
+KConfigGroup LdapWidgetItemReadConfigServerJob::config() const
+{
+ return mConfig;
+}
+
+void LdapWidgetItemReadConfigServerJob::setConfig(const KConfigGroup &config)
+{
+ mConfig = config;
+}
--- /dev/null
+/*
+ * SPDX-FileCopyrightText: 2020-2022 Laurent Montel <montel@kde.org>
+ *
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#pragma once
+
+#include <KConfigGroup>
+#include <QObject>
+namespace KLDAP
+{
+class LdapWidgetItem;
+class LdapServer;
+class LdapWidgetItemReadConfigServerJob : public QObject
+{
+ Q_OBJECT
+public:
+ explicit LdapWidgetItemReadConfigServerJob(QObject *parent = nullptr);
+ ~LdapWidgetItemReadConfigServerJob() override;
+
+ void start();
+
+ LdapWidgetItem *ldapWidgetItem() const;
+ void setLdapWidgetItem(LdapWidgetItem *ldapWidgetItem);
+
+ Q_REQUIRED_RESULT int currentIndex() const;
+ void setCurrentIndex(int currentIndex);
+
+ Q_REQUIRED_RESULT bool active() const;
+ void setActive(bool active);
+
+ Q_REQUIRED_RESULT KConfigGroup config() const;
+ void setConfig(const KConfigGroup &config);
+
+private:
+ void slotConfigLoaded(const KLDAP::LdapServer &server);
+ LdapWidgetItem *mLdapWidgetItem = nullptr;
+ KConfigGroup mConfig;
+ int mCurrentIndex = -1;
+ bool mActive = false;
+};
+}
--- /dev/null
+# SPDX-FileCopyrightText: none
+# SPDX-License-Identifier: BSD-3-Clause
+########## next target ###############
+add_executable(testldapclient testldapclient.cpp)
+
+target_link_libraries(testldapclient KF5::I18n KF5::Completion KF5::Ldap KF5::CoreAddons)
+
+#ldapclientsearchconfigreadconfigjobtest.cpp
--- /dev/null
+/* This file is part of the KDE project
+ SPDX-FileCopyrightText: 2005 David Faure <faure@kde.org>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "testldapclient.h"
+
+#include <QDebug>
+
+#include <kldap/ldapobject.h>
+
+#include <QEventLoop>
+
+#include <QApplication>
+#include <QCommandLineParser>
+#include <QStandardPaths>
+#include <cstdlib>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ QStandardPaths::setTestModeEnabled(true);
+ QCommandLineParser parser;
+ parser.addVersionOption();
+ parser.addHelpOption();
+ parser.process(app);
+
+ TestLDAPClient test;
+ test.setup();
+ test.runAll();
+ test.cleanup();
+ qDebug() << "All tests OK.";
+ return 0;
+}
+
+TestLDAPClient::TestLDAPClient() = default;
+
+void TestLDAPClient::setup()
+{
+}
+
+void TestLDAPClient::runAll()
+{
+ testIntevation();
+}
+
+bool TestLDAPClient::check(const QString &txt, QString a, QString b)
+{
+ if (a.isEmpty()) {
+ a.clear();
+ }
+
+ if (b.isEmpty()) {
+ b.clear();
+ }
+
+ if (a == b) {
+ qDebug() << txt << " : checking '" << a << "' against expected value '" << b << "'..."
+ << "ok";
+ } else {
+ qDebug() << txt << " : checking '" << a << "' against expected value '" << b << "'..."
+ << "KO !";
+ cleanup();
+ exit(1);
+ }
+
+ return true;
+}
+
+void TestLDAPClient::cleanup()
+{
+ mClient = nullptr;
+}
+
+void TestLDAPClient::testIntevation()
+{
+ qDebug();
+ mClient = new KLDAP::LdapClient(0, this);
+
+#if 0
+ mClient->setHost("ca.intevation.de");
+ mClient->setPort("389");
+ mClient->setBase("o=Intevation GmbH,c=de");
+#endif
+
+ // Same list as in kaddressbook's ldapsearchdialog
+ QStringList attrs;
+ attrs << QStringLiteral("l") << QStringLiteral("Company") << QStringLiteral("co") << QStringLiteral("department") << QStringLiteral("description")
+ << QStringLiteral("mail") << QStringLiteral("facsimileTelephoneNumber") << QStringLiteral("cn") << QStringLiteral("homePhone")
+ << QStringLiteral("mobile") << QStringLiteral("o") << QStringLiteral("pager") << QStringLiteral("postalAddress") << QStringLiteral("st")
+ << QStringLiteral("street") << QStringLiteral("title") << QStringLiteral("uid") << QStringLiteral("telephoneNumber") << QStringLiteral("postalCode")
+ << QStringLiteral("objectClass");
+ // the list from ldapclient.cpp
+ // attrs << "cn" << "mail" << "givenname" << "sn" << "objectClass";
+ mClient->setAttributes(attrs);
+
+ // Taken from LdapSearch
+ /*
+ QString mSearchText = QString::fromUtf8( "Till" );
+ QString filter = QString( "&(|(objectclass=person)(objectclass=groupOfNames)(mail=*))"
+ "(|(cn=%1*)(mail=%2*)(givenName=%3*)(sn=%4*))" )
+ .arg( mSearchText ).arg( mSearchText ).arg( mSearchText ).arg( mSearchText );
+ */
+
+ // For some reason a fromUtf8 broke the search for me (no results).
+ // But this certainly looks fishy, it might break on non-utf8 systems.
+ QString filter = QStringLiteral(
+ "&(|(objectclass=person)(objectclass=groupofnames)(mail=*))"
+ "(|(cn=*Ägypten MDK*)(sn=*Ägypten MDK*))");
+
+ connect(mClient, &KLDAP::LdapClient::result, this, &TestLDAPClient::slotLDAPResult);
+ connect(mClient, &KLDAP::LdapClient::done, this, &TestLDAPClient::slotLDAPDone);
+ connect(mClient, &KLDAP::LdapClient::error, this, &TestLDAPClient::slotLDAPError);
+ mClient->startQuery(filter);
+
+ QEventLoop eventLoop;
+ connect(this, &TestLDAPClient::leaveModality, &eventLoop, &QEventLoop::quit);
+ eventLoop.exec(QEventLoop::ExcludeUserInputEvents);
+
+ delete mClient;
+ mClient = nullptr;
+}
+
+// from kaddressbook... ugly though...
+static QString asUtf8(const QByteArray &val)
+{
+ if (val.isEmpty()) {
+ return {};
+ }
+
+ const char *data = val.data();
+
+ // QString::fromUtf8() bug workaround
+ if (data[val.size() - 1] == '\0') {
+ return QString::fromUtf8(data, val.size() - 1);
+ } else {
+ return QString::fromUtf8(data, val.size());
+ }
+}
+
+static QString join(const KLDAP::LdapAttrValue &lst, const QString &sep)
+{
+ QString res;
+ bool already = false;
+ for (KLDAP::LdapAttrValue::ConstIterator it = lst.begin(); it != lst.end(); ++it) {
+ if (already) {
+ res += sep;
+ }
+
+ already = true;
+ res += asUtf8(*it);
+ }
+
+ return res;
+}
+
+void TestLDAPClient::slotLDAPResult(const KLDAP::LdapClient &, const KLDAP::LdapObject &obj)
+{
+ QString cn = join(obj.attributes()[QStringLiteral("cn")], QStringLiteral(", "));
+ qDebug() << " cn:" << cn;
+ Q_ASSERT(!obj.attributes()[QStringLiteral("mail")].isEmpty());
+ QString mail = join(obj.attributes()[QStringLiteral("mail")], QStringLiteral(", "));
+ qDebug() << " mail:" << mail;
+ Q_ASSERT(mail.contains(QLatin1Char('@')));
+}
+
+void TestLDAPClient::slotLDAPError(const QString &err)
+{
+ qDebug() << err;
+ ::exit(1);
+}
+
+void TestLDAPClient::slotLDAPDone()
+{
+ qDebug();
+ Q_EMIT leaveModality();
+}
--- /dev/null
+/* This file is part of the KDE project
+ SPDX-FileCopyrightText: 2005 David Faure <faure@kde.org>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QObject>
+
+#include "widgets/ldapclient.h"
+
+namespace KLDAP
+{
+class LdapClient;
+class LdapObject;
+}
+
+class TestLDAPClient : public QObject
+{
+ Q_OBJECT
+
+public:
+ TestLDAPClient();
+ void setup();
+ void runAll();
+ void cleanup();
+
+ // tests
+ void testIntevation();
+
+Q_SIGNALS:
+ void leaveModality();
+
+private Q_SLOTS:
+ void slotLDAPResult(const KLDAP::LdapClient &, const KLDAP::LdapObject &);
+ void slotLDAPError(const QString &);
+ void slotLDAPDone();
+
+private:
+ bool check(const QString &, QString, QString);
+
+ KLDAP::LdapClient *mClient = nullptr;
+};