From 3b5ae32a26779766ae35b9b9e55fa29df388b4f7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sandro=20Knau=C3=9F?= Date: Mon, 4 Feb 2019 14:56:59 +0000 Subject: [PATCH 1/1] Import kldap_18.08.3.orig.tar.xz [dgit import orig kldap_18.08.3.orig.tar.xz] --- .arcconfig | 3 + .gitignore | 21 + CMakeLists.txt | 102 + COPYING.LIB | 510 ++ KF5LdapConfig.cmake.in | 3 + README.md | 3 + autotests/CMakeLists.txt | 7 + autotests/testkldap.cpp | 448 + autotests/testkldap.h | 59 + autotests/testurl.txt.tmpl | 1 + cmake/FindLdap.cmake | 121 + kioslave/.krazy | 1 + kioslave/CMakeLists.txt | 4 + kioslave/doc/CMakeLists.txt | 1 + kioslave/doc/ldap/CMakeLists.txt | 3 + kioslave/doc/ldap/index.docbook | 30 + kioslave/kdepimlibs-kioslave.categories | 5 + kioslave/src/CMakeLists.txt | 1 + kioslave/src/common.h | 55 + kioslave/src/ldap/CMakeLists.txt | 17 + kioslave/src/ldap/Messages.sh | 2 + kioslave/src/ldap/kio_ldap.cpp | 816 ++ kioslave/src/ldap/kio_ldap.h | 70 + kioslave/src/ldap/ldap.protocol | 17 + kioslave/src/ldap/ldaps.protocol | 17 + kldap.categories | 3 + kldap.renamecategories | 2 + metainfo.yaml | 18 + po/ar/kio_ldap.po | 67 + po/ar/libkldap5.po | 304 + po/ast/kio_ldap.po | 62 + po/ast/libkldap5.po | 269 + po/bg/kio_ldap.po | 66 + po/bs/kio_ldap.po | 69 + po/bs/libkldap5.po | 283 + po/ca/docs/kioslave5/ldap/index.docbook | 40 + po/ca/kio_ldap.po | 71 + po/ca/libkldap5.po | 285 + po/ca@valencia/kio_ldap.po | 71 + po/ca@valencia/libkldap5.po | 282 + po/cs/kio_ldap.po | 66 + po/cs/libkldap5.po | 277 + po/da/kio_ldap.po | 68 + po/da/libkldap5.po | 300 + po/de/docs/kioslave5/ldap/index.docbook | 54 + po/de/kio_ldap.po | 64 + po/de/libkldap5.po | 467 ++ po/el/kio_ldap.po | 67 + po/el/libkldap5.po | 301 + po/en_GB/kio_ldap.po | 76 + po/en_GB/libkldap5.po | 276 + po/eo/kio_ldap.po | 61 + po/eo/libkldap5.po | 283 + po/es/docs/kioslave5/ldap/index.docbook | 68 + po/es/kio_ldap.po | 70 + po/es/libkldap5.po | 281 + po/et/docs/kioslave5/ldap/index.docbook | 54 + po/et/kio_ldap.po | 78 + po/et/libkldap5.po | 300 + po/eu/kio_ldap.po | 67 + po/fa/kio_ldap.po | 67 + po/fi/kio_ldap.po | 67 + po/fi/libkldap5.po | 280 + po/fr/kio_ldap.po | 72 + po/fr/libkldap5.po | 310 + po/ga/kio_ldap.po | 66 + po/ga/libkldap5.po | 285 + po/gl/kio_ldap.po | 72 + po/gl/libkldap5.po | 288 + po/he/kio_ldap.po | 79 + po/hi/kio_ldap.po | 66 + po/hi/libkldap5.po | 304 + po/hu/kio_ldap.po | 62 + po/hu/libkldap5.po | 301 + po/ia/kio_ldap.po | 66 + po/ia/libkldap5.po | 279 + po/is/kio_ldap.po | 80 + po/it/docs/kioslave5/ldap/index.docbook | 54 + po/it/kio_ldap.po | 65 + po/it/libkldap5.po | 283 + po/ja/kio_ldap.po | 69 + po/ja/libkldap5.po | 277 + po/kk/kio_ldap.po | 66 + po/kk/libkldap5.po | 278 + po/km/kio_ldap.po | 66 + po/km/libkldap5.po | 278 + po/ko/kio_ldap.po | 65 + po/ko/libkldap5.po | 275 + po/lt/kio_ldap.po | 67 + po/lt/libkldap5.po | 272 + po/lv/kio_ldap.po | 68 + po/lv/libkldap5.po | 283 + po/mr/kio_ldap.po | 62 + po/mr/libkldap5.po | 272 + po/nb/kio_ldap.po | 68 + po/nb/libkldap5.po | 277 + po/nds/kio_ldap.po | 65 + po/nds/libkldap5.po | 282 + po/nl/docs/kioslave5/ldap/index.docbook | 40 + po/nl/kio_ldap.po | 66 + po/nl/libkldap5.po | 472 ++ po/nn/kio_ldap.po | 70 + po/nn/libkldap5.po | 278 + po/pa/kio_ldap.po | 69 + po/pa/libkldap5.po | 294 + po/pl/kio_ldap.po | 66 + po/pl/libkldap5.po | 280 + po/pt/docs/kioslave5/ldap/index.docbook | 54 + po/pt/kio_ldap.po | 66 + po/pt/libkldap5.po | 276 + po/pt_BR/docs/kioslave5/ldap/index.docbook | 68 + po/pt_BR/kio_ldap.po | 67 + po/pt_BR/libkldap5.po | 278 + po/ro/kio_ldap.po | 67 + po/ro/libkldap5.po | 299 + po/ru/docs/kioslave5/ldap/index.docbook | 54 + po/ru/kio_ldap.po | 83 + po/ru/libkldap5.po | 8741 ++++++++++++++++++++ po/sk/kio_ldap.po | 65 + po/sk/libkldap5.po | 278 + po/sl/kio_ldap.po | 68 + po/sl/libkldap5.po | 285 + po/sr/docs/kioslave5/ldap/index.docbook | 56 + po/sr/kio_ldap.po | 69 + po/sr/libkldap5.po | 291 + po/sv/docs/kioslave5/ldap/index.docbook | 54 + po/sv/kio_ldap.po | 66 + po/sv/libkldap5.po | 468 ++ po/tr/kio_ldap.po | 72 + po/tr/libkldap5.po | 302 + po/ug/kio_ldap.po | 64 + po/ug/libkldap5.po | 268 + po/uk/docs/kioslave5/ldap/index.docbook | 54 + po/uk/kio_ldap.po | 69 + po/uk/libkldap5.po | 475 ++ po/zh_CN/kio_ldap.po | 65 + po/zh_CN/libkldap5.po | 275 + po/zh_TW/kio_ldap.po | 67 + po/zh_TW/libkldap5.po | 275 + src/CMakeLists.txt | 119 + src/Messages.sh | 3 + src/ber.cpp | 451 + src/ber.h | 131 + src/kldap_config.h.cmake | 13 + src/ldapattributeproxymodel.cpp | 159 + src/ldapattributeproxymodel.h | 95 + src/ldapconfigwidget.cpp | 901 ++ src/ldapconfigwidget.h | 282 + src/ldapconnection.cpp | 468 ++ src/ldapconnection.h | 146 + src/ldapcontrol.cpp | 157 + src/ldapcontrol.h | 120 + src/ldapdefs.h | 161 + src/ldapdn.cpp | 210 + src/ldapdn.h | 88 + src/ldapmodel.cpp | 319 + src/ldapmodel.h | 214 + src/ldapmodel_p.cpp | 210 + src/ldapmodel_p.h | 121 + src/ldapmodelnode_p.cpp | 132 + src/ldapmodelnode_p.h | 152 + src/ldapobject.cpp | 151 + src/ldapobject.h | 119 + src/ldapoperation.cpp | 1323 +++ src/ldapoperation.h | 300 + src/ldapsearch.cpp | 355 + src/ldapsearch.h | 150 + src/ldapserver.cpp | 432 + src/ldapserver.h | 334 + src/ldapstructureproxymodel.cpp | 156 + src/ldapstructureproxymodel.h | 94 + src/ldapurl.cpp | 294 + src/ldapurl.h | 186 + src/ldif.cpp | 452 + src/ldif.h | 205 + src/w32-ldap-help.h | 132 + 176 files changed, 38432 insertions(+) create mode 100644 .arcconfig create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 COPYING.LIB create mode 100644 KF5LdapConfig.cmake.in create mode 100644 README.md create mode 100644 autotests/CMakeLists.txt create mode 100644 autotests/testkldap.cpp create mode 100644 autotests/testkldap.h create mode 100644 autotests/testurl.txt.tmpl create mode 100644 cmake/FindLdap.cmake create mode 100644 kioslave/.krazy create mode 100644 kioslave/CMakeLists.txt create mode 100644 kioslave/doc/CMakeLists.txt create mode 100644 kioslave/doc/ldap/CMakeLists.txt create mode 100644 kioslave/doc/ldap/index.docbook create mode 100644 kioslave/kdepimlibs-kioslave.categories create mode 100644 kioslave/src/CMakeLists.txt create mode 100644 kioslave/src/common.h create mode 100644 kioslave/src/ldap/CMakeLists.txt create mode 100644 kioslave/src/ldap/Messages.sh create mode 100644 kioslave/src/ldap/kio_ldap.cpp create mode 100644 kioslave/src/ldap/kio_ldap.h create mode 100644 kioslave/src/ldap/ldap.protocol create mode 100644 kioslave/src/ldap/ldaps.protocol create mode 100644 kldap.categories create mode 100644 kldap.renamecategories create mode 100644 metainfo.yaml create mode 100644 po/ar/kio_ldap.po create mode 100644 po/ar/libkldap5.po create mode 100644 po/ast/kio_ldap.po create mode 100644 po/ast/libkldap5.po create mode 100644 po/bg/kio_ldap.po create mode 100644 po/bs/kio_ldap.po create mode 100644 po/bs/libkldap5.po create mode 100644 po/ca/docs/kioslave5/ldap/index.docbook create mode 100644 po/ca/kio_ldap.po create mode 100644 po/ca/libkldap5.po create mode 100644 po/ca@valencia/kio_ldap.po create mode 100644 po/ca@valencia/libkldap5.po create mode 100644 po/cs/kio_ldap.po create mode 100644 po/cs/libkldap5.po create mode 100644 po/da/kio_ldap.po create mode 100644 po/da/libkldap5.po create mode 100644 po/de/docs/kioslave5/ldap/index.docbook create mode 100644 po/de/kio_ldap.po create mode 100644 po/de/libkldap5.po create mode 100644 po/el/kio_ldap.po create mode 100644 po/el/libkldap5.po create mode 100644 po/en_GB/kio_ldap.po create mode 100644 po/en_GB/libkldap5.po create mode 100644 po/eo/kio_ldap.po create mode 100644 po/eo/libkldap5.po create mode 100644 po/es/docs/kioslave5/ldap/index.docbook create mode 100644 po/es/kio_ldap.po create mode 100644 po/es/libkldap5.po create mode 100644 po/et/docs/kioslave5/ldap/index.docbook create mode 100644 po/et/kio_ldap.po create mode 100644 po/et/libkldap5.po create mode 100644 po/eu/kio_ldap.po create mode 100644 po/fa/kio_ldap.po create mode 100644 po/fi/kio_ldap.po create mode 100644 po/fi/libkldap5.po create mode 100644 po/fr/kio_ldap.po create mode 100644 po/fr/libkldap5.po create mode 100644 po/ga/kio_ldap.po create mode 100644 po/ga/libkldap5.po create mode 100644 po/gl/kio_ldap.po create mode 100644 po/gl/libkldap5.po create mode 100644 po/he/kio_ldap.po create mode 100644 po/hi/kio_ldap.po create mode 100644 po/hi/libkldap5.po create mode 100644 po/hu/kio_ldap.po create mode 100644 po/hu/libkldap5.po create mode 100644 po/ia/kio_ldap.po create mode 100644 po/ia/libkldap5.po create mode 100644 po/is/kio_ldap.po create mode 100644 po/it/docs/kioslave5/ldap/index.docbook create mode 100644 po/it/kio_ldap.po create mode 100644 po/it/libkldap5.po create mode 100644 po/ja/kio_ldap.po create mode 100644 po/ja/libkldap5.po create mode 100644 po/kk/kio_ldap.po create mode 100644 po/kk/libkldap5.po create mode 100644 po/km/kio_ldap.po create mode 100644 po/km/libkldap5.po create mode 100644 po/ko/kio_ldap.po create mode 100644 po/ko/libkldap5.po create mode 100644 po/lt/kio_ldap.po create mode 100644 po/lt/libkldap5.po create mode 100644 po/lv/kio_ldap.po create mode 100644 po/lv/libkldap5.po create mode 100644 po/mr/kio_ldap.po create mode 100644 po/mr/libkldap5.po create mode 100644 po/nb/kio_ldap.po create mode 100644 po/nb/libkldap5.po create mode 100644 po/nds/kio_ldap.po create mode 100644 po/nds/libkldap5.po create mode 100644 po/nl/docs/kioslave5/ldap/index.docbook create mode 100644 po/nl/kio_ldap.po create mode 100644 po/nl/libkldap5.po create mode 100644 po/nn/kio_ldap.po create mode 100644 po/nn/libkldap5.po create mode 100644 po/pa/kio_ldap.po create mode 100644 po/pa/libkldap5.po create mode 100644 po/pl/kio_ldap.po create mode 100644 po/pl/libkldap5.po create mode 100644 po/pt/docs/kioslave5/ldap/index.docbook create mode 100644 po/pt/kio_ldap.po create mode 100644 po/pt/libkldap5.po create mode 100644 po/pt_BR/docs/kioslave5/ldap/index.docbook create mode 100644 po/pt_BR/kio_ldap.po create mode 100644 po/pt_BR/libkldap5.po create mode 100644 po/ro/kio_ldap.po create mode 100644 po/ro/libkldap5.po create mode 100644 po/ru/docs/kioslave5/ldap/index.docbook create mode 100644 po/ru/kio_ldap.po create mode 100644 po/ru/libkldap5.po create mode 100644 po/sk/kio_ldap.po create mode 100644 po/sk/libkldap5.po create mode 100644 po/sl/kio_ldap.po create mode 100644 po/sl/libkldap5.po create mode 100644 po/sr/docs/kioslave5/ldap/index.docbook create mode 100644 po/sr/kio_ldap.po create mode 100644 po/sr/libkldap5.po create mode 100644 po/sv/docs/kioslave5/ldap/index.docbook create mode 100644 po/sv/kio_ldap.po create mode 100644 po/sv/libkldap5.po create mode 100644 po/tr/kio_ldap.po create mode 100644 po/tr/libkldap5.po create mode 100644 po/ug/kio_ldap.po create mode 100644 po/ug/libkldap5.po create mode 100644 po/uk/docs/kioslave5/ldap/index.docbook create mode 100644 po/uk/kio_ldap.po create mode 100644 po/uk/libkldap5.po create mode 100644 po/zh_CN/kio_ldap.po create mode 100644 po/zh_CN/libkldap5.po create mode 100644 po/zh_TW/kio_ldap.po create mode 100644 po/zh_TW/libkldap5.po create mode 100644 src/CMakeLists.txt create mode 100644 src/Messages.sh create mode 100644 src/ber.cpp create mode 100644 src/ber.h create mode 100644 src/kldap_config.h.cmake create mode 100644 src/ldapattributeproxymodel.cpp create mode 100644 src/ldapattributeproxymodel.h create mode 100644 src/ldapconfigwidget.cpp create mode 100644 src/ldapconfigwidget.h create mode 100644 src/ldapconnection.cpp create mode 100644 src/ldapconnection.h create mode 100644 src/ldapcontrol.cpp create mode 100644 src/ldapcontrol.h create mode 100644 src/ldapdefs.h create mode 100644 src/ldapdn.cpp create mode 100644 src/ldapdn.h create mode 100644 src/ldapmodel.cpp create mode 100644 src/ldapmodel.h create mode 100644 src/ldapmodel_p.cpp create mode 100644 src/ldapmodel_p.h create mode 100644 src/ldapmodelnode_p.cpp create mode 100644 src/ldapmodelnode_p.h create mode 100644 src/ldapobject.cpp create mode 100644 src/ldapobject.h create mode 100644 src/ldapoperation.cpp create mode 100644 src/ldapoperation.h create mode 100644 src/ldapsearch.cpp create mode 100644 src/ldapsearch.h create mode 100644 src/ldapserver.cpp create mode 100644 src/ldapserver.h create mode 100644 src/ldapstructureproxymodel.cpp create mode 100644 src/ldapstructureproxymodel.h create mode 100644 src/ldapurl.cpp create mode 100644 src/ldapurl.h create mode 100644 src/ldif.cpp create mode 100644 src/ldif.h create mode 100644 src/w32-ldap-help.h diff --git a/.arcconfig b/.arcconfig new file mode 100644 index 0000000..3ff2b47 --- /dev/null +++ b/.arcconfig @@ -0,0 +1,3 @@ +{ + "phabricator.uri": "https://phabricator.kde.org/project/profile/34/" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7032c32 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# Ignore the following files +*~ +*.[oa] +*.diff +*.kate-swp +*.kdev4 +.kdev_include_paths +*.kdevelop.pcs +*.moc +*.moc.cpp +*.orig +*.user +.*.swp +.swp.* +Doxyfile +Makefile +avail +random_seed +/build/ +CMakeLists.txt.user* +*.unc-backup* diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..09128b9 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,102 @@ +cmake_minimum_required(VERSION 3.0) +set(PIM_VERSION "5.9.3") + +project(KLdap VERSION ${PIM_VERSION}) + +# ECM setup +set(KF5_VERSION "5.47.0") + +find_package(ECM ${KF5_VERSION} CONFIG REQUIRED) +set(CMAKE_MODULE_PATH ${KLdap_SOURCE_DIR}/cmake ${ECM_MODULE_PATH}) + +include(GenerateExportHeader) +include(ECMGenerateHeaders) +include(ECMGeneratePriFile) +include(CMakePackageConfigHelpers) +include(ECMSetupVersion) +include(FeatureSummary) +include(KDEInstallDirs) +include(KDECMakeSettings) +include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) +include(ECMQtDeclareLoggingCategory) +include(ECMCoverageOption) + +set(KLDAP_LIB_VERSION ${PIM_VERSION}) + +find_package(KF5KIO ${KF5_VERSION} CONFIG REQUIRED) +find_package(KF5I18n ${KF5_VERSION} CONFIG REQUIRED) +find_package(KF5DocTools ${KF5_VERSION} CONFIG REQUIRED) +add_definitions("-DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII") +add_definitions(-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT) + +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 +) + +########### Find packages ########### +find_package(KF5Completion ${KF5_VERSION} CONFIG REQUIRED) +find_package(KF5WidgetsAddons ${KF5_VERSION} CONFIG REQUIRED) + + +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 OPTIONAL) + +if (Ldap_FOUND) + set(LDAP_FOUND 1) +endif() + +if (Sasl2_FOUND) + set(SASL2_FOUND 1) +endif() + +add_definitions("-DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII") +add_definitions(-DTRANSLATION_DOMAIN=\"libkldap5\") +add_definitions(-DQT_NO_URL_CAST_FROM_STRING) +add_definitions(-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT) + +########### 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_KF5} + COMPONENT Devel +) + +########### Targets ########### +add_subdirectory(src) +add_subdirectory(kioslave) +if(BUILD_TESTING) + add_subdirectory(autotests) +endif() + +install( FILES kldap.renamecategories kldap.categories DESTINATION ${KDE_INSTALL_CONFDIR} ) + +feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) +ki18n_install(po) +if (KF5DocTools_FOUND) + kdoctools_install(po) +endif() diff --git a/COPYING.LIB b/COPYING.LIB new file mode 100644 index 0000000..2d2d780 --- /dev/null +++ b/COPYING.LIB @@ -0,0 +1,510 @@ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 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 Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + 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 Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations +below. + + When we speak of free software, we are referring to freedom of use, +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 and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +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 other code 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. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes a de-facto standard. To achieve this, non-free programs must +be allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + 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, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser 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 combine 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) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) 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. + + d) 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. + + e) 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 materials to be 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 with +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 Lesser 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. + + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser 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. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/KF5LdapConfig.cmake.in b/KF5LdapConfig.cmake.in new file mode 100644 index 0000000..79dd9b6 --- /dev/null +++ b/KF5LdapConfig.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/KF5LdapTargets.cmake") diff --git a/README.md b/README.md new file mode 100644 index 0000000..7496795 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# KLDAP # + +Allows LDAP accessing with a convenient Qt style C++ API. diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt new file mode 100644 index 0000000..1ac6183 --- /dev/null +++ b/autotests/CMakeLists.txt @@ -0,0 +1,7 @@ +include(ECMAddTests) + +find_package(Qt5Test CONFIG REQUIRED) + +if(Ldap_FOUND) + ecm_add_tests(testkldap.cpp NAME_PREFIX "kldap-" LINK_LIBRARIES KF5::Ldap Qt5::Test) +endif() diff --git a/autotests/testkldap.cpp b/autotests/testkldap.cpp new file mode 100644 index 0000000..fe51d6b --- /dev/null +++ b/autotests/testkldap.cpp @@ -0,0 +1,448 @@ +/* + This file is part of libkdepim. + + Copyright (c) 2004 Tobias Koenig + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "testkldap.h" + +#include "ldif.h" +#include "ldapdn.h" +#include "ldapurl.h" +#include "ldapserver.h" +#include "ldapconnection.h" +#include "ldapmodel.h" +#include "ldapoperation.h" +#include "ldapsearch.h" +#include "ber.h" + +#include +#include +#include +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! + */ + 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; + + /* Let's also create an LdapModel object */ + m_model = new LdapModel(this); +} + +void KLdapTest::testBer() +{ + Ber ber1, ber2, ber3, ber4, ber5, ber6, ber7; + Ber bber; + + int ainteger; + QByteArray aoctetString1, aoctetString2, aoctetString3; + QList alist1, alist2; + + int binteger; + QByteArray boctetString1, boctetString2, boctetString3; + QList blist1, 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; + delete m_model; +} + +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(QString::fromUtf8("(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); + bool success = m_search->search(url); + while (QCoreApplication::hasPendingEvents()) { + qApp->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(); + 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() +{ + QString strDN(QStringLiteral("uid=Test\\+Person+ou=accounts\\,outgoing,dc=kde,dc=org")); + 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); + + // Let's use this connection with the model + m_model->setConnection(conn); + + while (QCoreApplication::hasPendingEvents()) { + qApp->processEvents(); + } + + QModelIndex rootIndex = QModelIndex(); + QVariant data = m_model->data(rootIndex, Qt::DisplayRole); + qDebug() << "Root Item Distinguished Name =" << data.toString(); + + QVERIFY(m_model->hasChildren(rootIndex) == true); + QVERIFY(m_model->canFetchMore(rootIndex) == false); +} + +/* + 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 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(); +*/ +/* + } +*/ diff --git a/autotests/testkldap.h b/autotests/testkldap.h new file mode 100644 index 0000000..5467789 --- /dev/null +++ b/autotests/testkldap.h @@ -0,0 +1,59 @@ +/* + Copyright (c) 2006 Volker Krause + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef TESTKLDAP_H +#define TESTKLDAP_H + +#include +#include +#include +#include + +using namespace KLDAP; + +class KLdapTest : public QObject +{ + Q_OBJECT +public: + explicit KLdapTest(QObject *parent = nullptr); + ~KLdapTest() = 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; + LdapModel *m_model = nullptr; +}; + +#endif diff --git a/autotests/testurl.txt.tmpl b/autotests/testurl.txt.tmpl new file mode 100644 index 0000000..2cdc6a8 --- /dev/null +++ b/autotests/testurl.txt.tmpl @@ -0,0 +1 @@ +ldap://cn=admin,dc=kde,dc=org:password@ldap.kde.org:389/ou=people,dc=kde,dc=org?cn,mail,loginShell?sub?(uid=*) diff --git a/cmake/FindLdap.cmake b/cmake/FindLdap.cmake new file mode 100644 index 0000000..79e9e6d --- /dev/null +++ b/cmake/FindLdap.cmake @@ -0,0 +1,121 @@ +#.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 +# +#============================================================================= +# Copyright 2006 Szombathelyi György +# Copyright 2007-2018 Laurent Montel +# +# +# 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 copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. +#============================================================================= + +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 "http://www.openldap.org/" + DESCRIPTION "LDAP (Lightweight Directory Access Protocol) libraries." +) diff --git a/kioslave/.krazy b/kioslave/.krazy new file mode 100644 index 0000000..0b16e7f --- /dev/null +++ b/kioslave/.krazy @@ -0,0 +1 @@ +SKIP /tests/ diff --git a/kioslave/CMakeLists.txt b/kioslave/CMakeLists.txt new file mode 100644 index 0000000..0bc3169 --- /dev/null +++ b/kioslave/CMakeLists.txt @@ -0,0 +1,4 @@ +add_definitions("-DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII") +add_subdirectory(src) +add_subdirectory(doc) + diff --git a/kioslave/doc/CMakeLists.txt b/kioslave/doc/CMakeLists.txt new file mode 100644 index 0000000..181669e --- /dev/null +++ b/kioslave/doc/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(ldap) diff --git a/kioslave/doc/ldap/CMakeLists.txt b/kioslave/doc/ldap/CMakeLists.txt new file mode 100644 index 0000000..d77d09f --- /dev/null +++ b/kioslave/doc/ldap/CMakeLists.txt @@ -0,0 +1,3 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/ldap) + diff --git a/kioslave/doc/ldap/index.docbook b/kioslave/doc/ldap/index.docbook new file mode 100644 index 0000000..2cd0aac --- /dev/null +++ b/kioslave/doc/ldap/index.docbook @@ -0,0 +1,30 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; + + + + +ldap is the lightweight directory access +protocol. It provides access to an X.500 directory, or to a stand-alone +LDAP server. + +You can use the ldap kioslave as follows: + +ldap://host:port/ou=People,o=where,c=de??sub +for a subtree-query + +or +ldap://host:port/cn=MM,ou=People,o=where,c=de??base +for a complete branch. + +
diff --git a/kioslave/kdepimlibs-kioslave.categories b/kioslave/kdepimlibs-kioslave.categories new file mode 100644 index 0000000..f5262f5 --- /dev/null +++ b/kioslave/kdepimlibs-kioslave.categories @@ -0,0 +1,5 @@ +log_kldap kioslave (kldap) +log_sieve kioslave (sieve) +log_smtp kioslave (smtp) +log_pop3 kioslave (pop3) + diff --git a/kioslave/src/CMakeLists.txt b/kioslave/src/CMakeLists.txt new file mode 100644 index 0000000..181669e --- /dev/null +++ b/kioslave/src/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(ldap) diff --git a/kioslave/src/common.h b/kioslave/src/common.h new file mode 100644 index 0000000..0b581e2 --- /dev/null +++ b/kioslave/src/common.h @@ -0,0 +1,55 @@ +/* This file is part of the KDE project + Copyright (C) 2008 Jarosław Staniek + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef _KIOSLAVE_COMMON_H +#define _KIOSLAVE_COMMON_H + +#include +#include +#include +#include + +extern "C" { +#include +} + +inline bool initSASL() +{ +#ifdef Q_OS_WIN //krazy:exclude=cpp + for (const auto &path : QCoreApplication::libraryPaths()) { + QDir dir(path); + if (dir.exists(QStringLiteral("sasl2"))) { + auto libInstallPath = QFile::encodeName(dir.absoluteFilePath(QStringLiteral("sasl2"))); + if (sasl_set_path(SASL_PATH_TYPE_PLUGIN, libInstallPath.data()) != SASL_OK) { + fprintf(stderr, "SASL path initialization failed!\n"); + return false; + } + break; + } + } +#endif + + if (sasl_client_init(NULL) != SASL_OK) { + fprintf(stderr, "SASL library initialization failed!\n"); + return false; + } + return true; +} + +#endif diff --git a/kioslave/src/ldap/CMakeLists.txt b/kioslave/src/ldap/CMakeLists.txt new file mode 100644 index 0000000..f3a584e --- /dev/null +++ b/kioslave/src/ldap/CMakeLists.txt @@ -0,0 +1,17 @@ + +set(kio_ldap_PART_SRCS kio_ldap.cpp) +ecm_qt_declare_logging_category(kio_ldap_PART_SRCS HEADER kldap_debug.h IDENTIFIER KLDAP_LOG CATEGORY_NAME org.kde.pim.kldap) + +add_library(kio_ldap MODULE ${kio_ldap_PART_SRCS}) + +target_link_libraries(kio_ldap Qt5::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}/kf5/kio) + + +########### install files ############### + +install( FILES ldap.protocol ldaps.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) diff --git a/kioslave/src/ldap/Messages.sh b/kioslave/src/ldap/Messages.sh new file mode 100644 index 0000000..bb14723 --- /dev/null +++ b/kioslave/src/ldap/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kio_ldap.pot diff --git a/kioslave/src/ldap/kio_ldap.cpp b/kioslave/src/ldap/kio_ldap.cpp new file mode 100644 index 0000000..4672db9 --- /dev/null +++ b/kioslave/src/ldap/kio_ldap.cpp @@ -0,0 +1,816 @@ +/* + Copyright (c) 2004-2007 Szombathelyi György + + 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 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 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. + +*/ + +#include "kio_ldap.h" +#include "kldap_debug.h" + +#include +#include + +#include +#include +#include + +#ifdef Q_OS_WIN +#include +#else +#include +#include +#endif +#include + +using namespace KIO; +using namespace KLDAP; + +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" << endl; + 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 << "'" << endl; + 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_COULD_NOT_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_COULD_NOT_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: + error(ERR_SLAVE_DEFINED, + i18n("LDAP server returned the error: %1 %2\nThe LDAP URL was: %3", + LdapConnection::errorString(err), extramsg, mServer.url().toDisplayString())); + } +} + +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()) << endl; + 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()) << endl; + 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.insert(KIO::UDSEntry::UDS_NAME, name); + + // the file type + entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, dir ? S_IFDIR : S_IFREG); + + // the mimetype + if (!dir) { + entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("text/plain")); + } + + entry.insert(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.insert(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]" << endl; +} + +void LDAPProtocol::openConnection() +{ + if (mConnected) { + return; + } + + mConn.setServer(mServer); + if (mConn.connect() != 0) { + error(ERR_COULD_NOT_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; + int retval; + + while (true) { + 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 { + bool ok = firstauth ? + openPasswordDialog(info) : + openPasswordDialog(info, i18n("Invalid authorization information.")); + if (!ok) { + error(ERR_USER_CANCELED, i18n("LDAP connection canceled.")); + 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); + int ret, id; + + changeCheck(usrc); + if (!mConnected) { + return; + } + + LdapControls serverctrls, 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); + + 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, saveatt; + LdapUrl usrc(_url); + int ret, 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, ret; + + changeCheck(usrc); + if (!mConnected) { + return; + } + + LdapControls serverctrls, 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, 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() << endl; + 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().size() > 0) { + 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: + error(ERR_SLAVE_DEFINED, + i18n("Invalid Ldif file in line %1.", ldif.lineNumber())); + return; + } + } while (ret != Ldif::MoreData); + } while (result > 0); + + finished(); +} + +/** + * List the contents of a directory. + */ +void LDAPProtocol::listDir(const QUrl &_url) +{ + int ret, ret2, id, id2; + unsigned long total = 0; + QStringList att, saveatt; + LdapUrl usrc(_url), 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); + } + + 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; + + 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(); +} diff --git a/kioslave/src/ldap/kio_ldap.h b/kioslave/src/ldap/kio_ldap.h new file mode 100644 index 0000000..cbe1ccf --- /dev/null +++ b/kioslave/src/ldap/kio_ldap.h @@ -0,0 +1,70 @@ +/* + Copyright (c) 2004-2007 Szombathelyi György + + 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 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 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. +*/ + +#ifndef __LDAP_H__ +#define __LDAP_H__ + +#include +#include + +#include +#include +#include +#include +#include +#include + +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); + int asyncSearch(KLDAP::LdapUrl &usrc, const QByteArray &cookie = ""); + + void LDAPErr(int err = KLDAP_SUCCESS); + void changeCheck(const KLDAP::LdapUrl &url); +}; + +#endif diff --git a/kioslave/src/ldap/ldap.protocol b/kioslave/src/ldap/ldap.protocol new file mode 100644 index 0000000..670ef7d --- /dev/null +++ b/kioslave/src/ldap/ldap.protocol @@ -0,0 +1,17 @@ +[Protocol] +exec=kf5/kio/ldap +protocol=ldap +input=none +output=filesystem +listing=Name, +reading=true +source=true +writing=true +#makedir=true +deleting=true +#linking=true +#moving=true +mimetype=text/plain +determineMimetypeFromExtension=false +X-DocPath=kioslave5/ldap/index.html +Icon=office-address-book diff --git a/kioslave/src/ldap/ldaps.protocol b/kioslave/src/ldap/ldaps.protocol new file mode 100644 index 0000000..1952e81 --- /dev/null +++ b/kioslave/src/ldap/ldaps.protocol @@ -0,0 +1,17 @@ +[Protocol] +exec=kf5/kio/ldap +protocol=ldaps +input=none +output=filesystem +listing=Name, +reading=true +source=true +writing=true +#makedir=true +deleting=true +#linking=true +#moving=true +mimetype=text/plain +determineMimetypeFromExtension=false +X-DocPath=kioslave5/ldap/index.html +Icon=office-address-book diff --git a/kldap.categories b/kldap.categories new file mode 100644 index 0000000..b357138 --- /dev/null +++ b/kldap.categories @@ -0,0 +1,3 @@ +org.kde.pim.kldap kioslave (kldap) +org.kde.pim.ldap kldaplib (kldap) + diff --git a/kldap.renamecategories b/kldap.renamecategories new file mode 100644 index 0000000..b48f8ad --- /dev/null +++ b/kldap.renamecategories @@ -0,0 +1,2 @@ +log_kldap org.kde.pim.kldap +log_ldap org.kde.pim.ldap diff --git a/metainfo.yaml b/metainfo.yaml new file mode 100644 index 0000000..298c919 --- /dev/null +++ b/metainfo.yaml @@ -0,0 +1,18 @@ +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 +platforms: + - name: Linux diff --git a/po/ar/kio_ldap.po b/po/ar/kio_ldap.po new file mode 100644 index 0000000..6de4dd2 --- /dev/null +++ b/po/ar/kio_ldap.po @@ -0,0 +1,67 @@ +# translation of kio_ldap.po to +# محمد سعد Mohamed SAAD , 2006. +# Youssef Chahibi , 2007. +# Safa Alfulaij , 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2018-01-31 00:40+0300\n" +"Last-Translator: Safa Alfulaij \n" +"Language-Team: Arabic \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"المعلومات الإضافيّة: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "الولوج إلى LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "الموقع:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "معلومات الاستيثاق غير صالحة." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "أُلغي الاتّصال بِ‍ LDAP" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "فشل محلّل Ldif." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "ملفّ Ldif غير صالح في سطر %1." diff --git a/po/ar/libkldap5.po b/po/ar/libkldap5.po new file mode 100644 index 0000000..f6b2178 --- /dev/null +++ b/po/ar/libkldap5.po @@ -0,0 +1,304 @@ +# 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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2007-10-14 15:58+0000\n" +"Last-Translator: Youssef Chahibi \n" +"Language-Team: \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "" + +#: ldapconfigwidget.cpp:113 +#, fuzzy, kde-format +msgid "User:" +msgstr "المستخدم:" + +#: ldapconfigwidget.cpp:123 +#, fuzzy, kde-format +msgid "Bind DN:" +msgstr "" +"يربط :: يوثق :: يقيّد :: يعوق عن الحركة :: يُلزِم :: يحْزم :: يعْصب :: يضمّد :: " +"يجعله متماسكاً :: يَعقِل :: يُجلّد :: يقي :: يُمتّن :: يتماسك :: يصبح صلباً :: " +"رِباط :: رَبْط :: ارتباط :: مأزق DN:" + +#: ldapconfigwidget.cpp:133 +#, fuzzy, kde-format +msgid "Realm:" +msgstr "المملكة:" + +#: ldapconfigwidget.cpp:143 +#, fuzzy, kde-format +msgid "Password:" +msgstr "كلمة المرور:" + +#: ldapconfigwidget.cpp:153 +#, fuzzy, kde-format +msgid "Host:" +msgstr "المضيف:" + +#: ldapconfigwidget.cpp:164 +#, fuzzy, kde-format +msgid "Port:" +msgstr "المنفذ:" + +#: ldapconfigwidget.cpp:177 +#, fuzzy, kde-format +msgid "LDAP version:" +msgstr "إصدارة LDAP :" + +#: ldapconfigwidget.cpp:192 +#, fuzzy, kde-format +msgid "Size limit:" +msgstr "حدّ الحجم:" + +#: ldapconfigwidget.cpp:198 +#, fuzzy, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "افتراضي" + +#: ldapconfigwidget.cpp:205 +#, fuzzy, kde-format +msgid "Time limit:" +msgstr "حد الوقت:" + +#: ldapconfigwidget.cpp:211 +#, fuzzy, kde-format +msgid " sec" +msgstr " ثانية" + +#: ldapconfigwidget.cpp:212 +#, fuzzy, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "افتراضي" + +#: ldapconfigwidget.cpp:221 +#, fuzzy, kde-format +msgid "Page size:" +msgstr "حجم الصفحة:" + +#: ldapconfigwidget.cpp:227 +#, fuzzy, kde-format +msgid "No paging" +msgstr "لا انتقال صفحات الذاكرة من وإلى القرص الثابت" + +#: ldapconfigwidget.cpp:233 +#, fuzzy, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, fuzzy, kde-format +msgid "Query Server" +msgstr "استعلام الخادِم" + +#: ldapconfigwidget.cpp:249 +#, fuzzy, kde-format +msgid "Filter:" +msgstr "المرشح:" + +#: ldapconfigwidget.cpp:259 +#, fuzzy, kde-format +msgid "Security" +msgstr "الأمن" + +#: ldapconfigwidget.cpp:262 +#, fuzzy, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "لا" + +#: ldapconfigwidget.cpp:265 +#, fuzzy, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, fuzzy, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, fuzzy, kde-format +msgid "Authentication" +msgstr "التّوثيق" + +#: ldapconfigwidget.cpp:291 +#, fuzzy, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "مجهول" + +#: ldapconfigwidget.cpp:295 +#, fuzzy, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "بسيط" + +#: ldapconfigwidget.cpp:299 +#, fuzzy, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, fuzzy, kde-format +msgid "SASL mechanism:" +msgstr "آلية SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, fuzzy, kde-format +msgid "LDAP Query" +msgstr "استعلام LDAP " + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, fuzzy, kde-format +msgid "No LDAP Support..." +msgstr "لا LDAP دعم." + +#: ldapconnection.cpp:160 +#, fuzzy, kde-format +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 أو متوافق عميل أو إلى التوزيعة." + +#: ldapconnection.cpp:270 +#, fuzzy, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "أداة تعريف خطأ اتصال." + +#: ldapconnection.cpp:277 +#, fuzzy, kde-format +msgid "Cannot set protocol version to %1." +msgstr "" +"لا يستطيع set مراسم\n" +"ميفاق النسخة إلى." + +#: ldapconnection.cpp:288 +#, 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] "غير قادر على تعيين حدّ للوقت." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +msgid "Could not initialize new TLS context." +msgstr "" +"لا يستطيع يهيئ\n" +"يُبدِء التشغيلئ SASL عميل." + +#: ldapconnection.cpp:347 +#, fuzzy, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "TLS دعم ليس متوفّر بوصة LDAP عميل." + +#: ldapconnection.cpp:357 +#, fuzzy, kde-format +msgid "Cannot set size limit." +msgstr "غير قادر على تعيين حدّ للحجم." + +#: ldapconnection.cpp:367 +#, fuzzy, kde-format +msgid "Cannot set time limit." +msgstr "غير قادر على تعيين حدّ للوقت." + +#: ldapconnection.cpp:377 +#, fuzzy, kde-format +msgid "Cannot initialize the SASL client." +msgstr "" +"لا يستطيع يهيئ\n" +"يُبدِء التشغيلئ SASL عميل." + +#: ldapconnection.cpp:456 +#, 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 دعم ليس بوصة رجاء مع أو متوافق عميل أو إلى التوزيعة." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "" + +#, fuzzy +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP عمليات خطأ" + +#, fuzzy +#~ msgid "Add Host" +#~ msgstr "المضيف:" + +#, fuzzy +#~ msgid "LDAP Server Settings" +#~ msgstr "إصدارة LDAP :" + +#, fuzzy +#~ msgid "LDAP Servers" +#~ msgstr "إصدارة LDAP :" + +#, fuzzy +#~ msgid "User ID" +#~ msgstr "المستخدم:" diff --git a/po/ast/kio_ldap.po b/po/ast/kio_ldap.po new file mode 100644 index 0000000..506d94a --- /dev/null +++ b/po/ast/kio_ldap.po @@ -0,0 +1,62 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# enolp , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2016-12-19 02:58+0100\n" +"Last-Translator: enolp \n" +"Language-Team: Asturian \n" +"Language: ast\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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" + +#: kio_ldap.cpp:179 +#, kde-format +msgid "" +"LDAP server returned the error: %1 %2\n" +"The LDAP URL was: %3" +msgstr "" + +#: kio_ldap.cpp:331 +#, kde-format +msgid "LDAP Login" +msgstr "" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sitiu:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "" diff --git a/po/ast/libkldap5.po b/po/ast/libkldap5.po new file mode 100644 index 0000000..4c433c0 --- /dev/null +++ b/po/ast/libkldap5.po @@ -0,0 +1,269 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# enolp , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2016-12-19 03:03+0100\n" +"Last-Translator: enolp \n" +"Language-Team: Asturian \n" +"Language: ast\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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atributu" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr "" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "" + +#: ldapconnection.cpp:160 +#, kde-format +msgid "" +"SASL support is not available. Please recompile libkldap with the Cyrus-SASL " +"(or compatible) client libraries, or complain to your distribution packagers." +msgstr "" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "" + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "" +msgstr[1] "" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "" + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "" + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "" + +#: ldapconnection.cpp:456 +#, 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 "" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "" diff --git a/po/bg/kio_ldap.po b/po/bg/kio_ldap.po new file mode 100644 index 0000000..cd92608 --- /dev/null +++ b/po/bg/kio_ldap.po @@ -0,0 +1,66 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Zlatko Popov , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-06-03 16:50+0000\n" +"Last-Translator: Zlatko Popov \n" +"Language-Team: Bulgarian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Допълнителна информация: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Включване в LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "страна:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Невалидна информация за оторизация." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Връзката с LDAP е отменена." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Грешка при граматичен анализ на LDIF." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Невалиден файл LDIF, грешка на ред %1." diff --git a/po/bs/kio_ldap.po b/po/bs/kio_ldap.po new file mode 100644 index 0000000..d1a7532 --- /dev/null +++ b/po/bs/kio_ldap.po @@ -0,0 +1,69 @@ +# 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 , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kdepimlibs\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2012-09-03 14:47+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Dodatne informacije: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP prijava" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sajt:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Neispravne informacije o identitetu." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP konekcija otkazana." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldif parser nije uspio." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Nevažeća Ldif datoteka u liniji %1." diff --git a/po/bs/libkldap5.po b/po/bs/libkldap5.po new file mode 100644 index 0000000..8e70fd1 --- /dev/null +++ b/po/bs/libkldap5.po @@ -0,0 +1,283 @@ +# 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 , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kdepimlibs\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2012-09-03 15:44+0000\n" +"Last-Translator: Launchpad Translations Administrators \n" +"Language-Team: Bosnian \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Osobina" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Vrijednost" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Korisnik" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Vezani DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Svijet:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Lozinka" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Računar:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Verzija LDAPa:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Ograničenje veličine:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Podrazumjevano" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Vremensko ograničenje:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Podrazumjevano" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Veličina stranice:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Bez straničenja" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Server za upite" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Sigurnost" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "nema" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Provjera identiteta" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonimno" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Jednostavno" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL mehanizam:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP upit" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Nema podrške za LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Došlo je do greške prilikom inicijaliziranja konekcije." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Ne može se postavit verzija protokola na %1." + +#: ldapconnection.cpp:288 +#, 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" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Ne može se inicijalizirati SASL klijent." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "TLS podrška nije dostupna u LDAP klijent bibliotekama." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Ne mogu podesiti ograničenje na veličinu." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Ne mogu podesiti ograničenje vremena." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Ne može se inicijalizirati SASL klijent." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Ne mogu pristupiti serveru. Molimo podesite." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Istaknuto ime." + +#~ msgid "LDAP Operations error" +#~ msgstr "Greška sa LDAP Operacijama" diff --git a/po/ca/docs/kioslave5/ldap/index.docbook b/po/ca/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..52524cd --- /dev/null +++ b/po/ca/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,40 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; +&traductor.Antoni.Bella; + + + +ldap és un lleuger protocol per accedir als directoris. Proporciona accés a un directori X.500 o a un servidor LDAP autònom. + +Podeu utilitzar el kioslave ldap del següent mode: + +ldap://màquina:port/ou=Gent,o=on,c=de??sub per a una petició subarbrada. + +o ldap://màquina:port/cn=MM,ou=Gent,o=on,c=de??base per obtenir una branca completa. + +
diff --git a/po/ca/kio_ldap.po b/po/ca/kio_ldap.po new file mode 100644 index 0000000..ca3fd74 --- /dev/null +++ b/po/ca/kio_ldap.po @@ -0,0 +1,71 @@ +# 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 , 2004. +# Albert Astals Cid , 2005. +# Josep Ma. Ferrer , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-06-02 11:53+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Informació addicional: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Connexió LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "lloc:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Informació d'autorització no vàlida." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "S'ha cancel·lat la connexió LDAP." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ha fallat l'analitzador LDIF." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Fitxer LDIF no vàlid a la línia %1." diff --git a/po/ca/libkldap5.po b/po/ca/libkldap5.po new file mode 100644 index 0000000..e89a5af --- /dev/null +++ b/po/ca/libkldap5.po @@ -0,0 +1,285 @@ +# Translation of libkldap5.po to Catalan +# Copyright (C) 2014-2018 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 Ma. Ferrer , 2007, 2008, 2009, 2016. +# Manuel Tortosa Moreno , 2010. +# Antoni Bella Pérez , 2014, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: libkldap5\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-03-22 18:43+0100\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \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 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atribut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Usuari:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "DN d'enllaç:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Domini:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Contrasenya:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Màquina:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Versió del LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Límit d'ocupació:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Valor per defecte" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Límit de temps:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Valor per defecte" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Mida de la pàgina:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Sense paginació" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Servidor de consultes" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtre:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Seguretat" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "No" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autenticació" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anònim" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Senzilla" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mecanisme SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Comprova el servidor" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Consulta LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Error desconegut en connectar %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "No admet el LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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 és disponible la implementació del SASL. Torneu a compilar la «libkldap» " +"amb les biblioteques del client Cyrus-SASL (o compatible), o reclameu als " +"empaquetadors de la vostra distribució." + +#: ldapconnection.cpp:270 +#, 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ó." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "No s'ha pogut establir la versió del protocol a %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "No s'ha pogut establir el fitxer del certificat de la CA." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "El mode de certificat requerit pel TLS no és vàlid." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "No s'ha pogut establir el mode de certificat requerit pel TLS." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "No s'ha pogut inicialitzar el nou context TLS." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "No s'ha pogut establir el límit d'ocupació." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "No s'ha pogut establir el límit de temps." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "No s'ha pogut inicialitzar el client SASL." + +#: ldapconnection.cpp:456 +#, 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ó pel LDAP. Torneu a compilar la «libkldap» " +"amb les biblioteques del client OpenLDAP (o compatible), o reclameu als " +"empaquetadors de la vostra distribució." + +#: ldapsearch.cpp:239 +#, 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." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Nom distintiu" + +#~ msgid "LDAP Operations error" +#~ msgstr "Error d'operacions del LDAP" diff --git a/po/ca@valencia/kio_ldap.po b/po/ca@valencia/kio_ldap.po new file mode 100644 index 0000000..6365628 --- /dev/null +++ b/po/ca@valencia/kio_ldap.po @@ -0,0 +1,71 @@ +# 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 , 2004. +# Albert Astals Cid , 2005. +# Josep Ma. Ferrer , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-06-02 11:53+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Informació addicional: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Connexió LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "lloc:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Informació d'autorització no vàlida." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "S'ha cancel·lat la connexió LDAP." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ha fallat l'analitzador LDIF." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Fitxer LDIF no vàlid a la línia %1." diff --git a/po/ca@valencia/libkldap5.po b/po/ca@valencia/libkldap5.po new file mode 100644 index 0000000..83dcdb0 --- /dev/null +++ b/po/ca@valencia/libkldap5.po @@ -0,0 +1,282 @@ +# Translation of libkldap5.po to Catalan (Valencian) +# Copyright (C) 2014-2018 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 Ma. Ferrer , 2007, 2008, 2009, 2016. +# Manuel Tortosa Moreno , 2010. +# Antoni Bella Pérez , 2014, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: libkldap5\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-03-22 18:43+0100\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \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 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atribut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Usuari:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "DN d'enllaç:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Domini:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Contrasenya:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Màquina:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Versió del LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Límit d'ocupació:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Valor per defecte" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Límit de temps:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Valor per defecte" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Mida de la pàgina:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Sense paginació" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Servidor de consultes" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtre:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Seguretat" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "No" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autenticació" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anònim" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Senzilla" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mecanisme SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Comprova el servidor" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Consulta LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Error desconegut en connectar %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "No admet el LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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 és disponible la implementació del SASL. Torneu a compilar la «libkldap» " +"amb les biblioteques del client Cyrus-SASL (o compatible), o reclameu als " +"empaquetadors de la vostra distribució." + +#: ldapconnection.cpp:270 +#, 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ó." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "No s'ha pogut establir la versió del protocol a %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "No s'ha pogut establir el fitxer del certificat de la CA." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "El mode de certificat requerit pel TLS no és vàlid." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "No s'ha pogut establir el mode de certificat requerit pel TLS." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "No s'ha pogut inicialitzar el nou context TLS." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "No s'ha pogut establir el límit d'ocupació." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "No s'ha pogut establir el límit de temps." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "No s'ha pogut inicialitzar el client SASL." + +#: ldapconnection.cpp:456 +#, 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ó pel LDAP. Torneu a compilar la «libkldap» " +"amb les biblioteques del client OpenLDAP (o compatible), o reclameu als " +"empaquetadors de la vostra distribució." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "No s'ha pogut accedir al servidor. Per favor, torneu a configurar-lo." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Nom distintiu" diff --git a/po/cs/kio_ldap.po b/po/cs/kio_ldap.po new file mode 100644 index 0000000..b862544 --- /dev/null +++ b/po/cs/kio_ldap.po @@ -0,0 +1,66 @@ +# 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 , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-10-08 13:36+0200\n" +"Last-Translator: Lukáš Tinkl \n" +"Language-Team: Czech \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Další informace: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP přihlášení" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "server:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Neplatné autorizační informace." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP spojení zrušeno." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Analýza LDIF selhala." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Neplatný LDIF soubor na řádku %1." diff --git a/po/cs/libkldap5.po b/po/cs/libkldap5.po new file mode 100644 index 0000000..7744001 --- /dev/null +++ b/po/cs/libkldap5.po @@ -0,0 +1,277 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2011, 2017, 2018. +# Tomáš Chvátal , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-07-09 16:19+0100\n" +"Last-Translator: Vit Pelcak \n" +"Language-Team: Czech \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 2.0\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atribut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Hodnota" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Uživatel:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Svázat DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Doména:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Heslo:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Hostitel:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP verze:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Limit velikosti:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Výchozí" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Časový limit:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Výchozí" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Velikost stránky:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Bez stránkování" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Dotaz na server" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtr:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Bezpečnost" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Ne" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Ověření" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonymní" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Jednoduchá" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL mechanismus:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Zkontrolovat server" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP dotaz" + +#: ldapconfigwidget.cpp:375 +#, 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" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Žádná podpora LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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 pro SASL není dostupná. Prosím zkompilujte znovu libkldap s " +"knihovnami Cyrus SASL nebo podobnými nebo si stěžujte tvůrcům balíčků vaší " +"distribuce." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Nastala chyba během inicializační fáze." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Nelze nastavit verzi protokolu na %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Nelze nastavit soubor CA certifikátu." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Neplatný režim vyžadující certifikát TLS." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Nelze nastavit režim vyžadující certifikát TLS." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Nelze inicializovat nový kontext TLS." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Podpora pro TLS není dostupná v LDAP knihovně." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Nelze nastavit omezení velikosti." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Nelze nastavit omezení času." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Nelze inicializovat SASL klienta." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Nelze se připojit na server, prosím nastavte jej znovu." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Rozlišené jméno" diff --git a/po/da/kio_ldap.po b/po/da/kio_ldap.po new file mode 100644 index 0000000..e5592a0 --- /dev/null +++ b/po/da/kio_ldap.po @@ -0,0 +1,68 @@ +# translation of kio_ldap.po to dansk +# Danish translation of kio_ldap +# Copyright (C). +# +# Erik Kjær Pedersen , 2004, 2005. +# Keld Simonsen , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2008-01-15 10:11+0100\n" +"Last-Translator: Keld Simonsen \n" +"Language-Team: Danish \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Yderligere info: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP Login" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sted:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Ugyldig godkendelsesinformation." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP-forbindelse afbrudt." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldif fortolkningen milsykkedes." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Ugyldig Ldif-fil i linje %1." diff --git a/po/da/libkldap5.po b/po/da/libkldap5.po new file mode 100644 index 0000000..2136d45 --- /dev/null +++ b/po/da/libkldap5.po @@ -0,0 +1,300 @@ +# 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 , 2008, 2009, 2014. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2014-07-23 21:07+0200\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \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 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attribut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Værdi" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Bruger:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Område:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Adgangskode:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Vært:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP-version:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Størrelsesgrænse:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Standard" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Tidsgrænse:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek." + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Standard" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Sidestørrelse:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Ingen side" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Forespørg server" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Sikkerhed" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Nej" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Godkendelse" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonym" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Simpel" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL-mekanisme:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP-forespørgsel" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Ukendt fejl ved forbindelse til %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Ingen LDAP-understøttelse..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "En fejl opstod under forbindelsens initialiseringsfase." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Kan ikke sætte protokolversion til %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Kan ikke initialisere SASL-klienten." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "TLS-understøttelse er ikke tilgængelig i LDAP-klientbibliotekerne." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Kan ikke sætte størrelsesgrænse." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Kan ikke sætte tidsgrænse." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Kan ikke initialisere SASL-klienten." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Kan ikke tilgå serveren. Omkonfigurér den." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Distingveret navn" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP-operationsfejl" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "Vært:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Server Settings" +#~ msgstr "LDAP-version:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "LDAP-version:" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "Bruger:" diff --git a/po/de/docs/kioslave5/ldap/index.docbook b/po/de/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..9cc5cdb --- /dev/null +++ b/po/de/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,54 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; +MarcoWegner
mail@marcowegner.de
Übersetzer
+
+
+ +ldap ist das Lightweight Directory Access Protocol. Es bietet Zugriff auf X.500-Verzeichnisse oder LDAP-Server. + +Sie können das ldap-Modul folgendermaßen nutzen: + +ldap://host:port/ou=People,o=where,c=de??sub für eine Suche in Unterverzeichnissen + +oder ldap://host:port/cn=MM,ou=People,o=where,c=de??base für einen kompletten Zweig. + +
diff --git a/po/de/kio_ldap.po b/po/de/kio_ldap.po new file mode 100644 index 0000000..a344b6c --- /dev/null +++ b/po/de/kio_ldap.po @@ -0,0 +1,64 @@ +# Thomas Diehl , 2004. +# Thomas Reitelbach , 2005, 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2008-12-05 22:33+0100\n" +"Last-Translator: Thomas Reitelbach \n" +"Language-Team: German \n" +"Language: de\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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Weitere Informationen: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP-Anmeldung" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "Server:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Ungültige Autorisierungs-Information" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP-Verbindung abgebrochen." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Fehler des LDIF-Parsers" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Ungültige LDIF-Datei in Zeile %1." diff --git a/po/de/libkldap5.po b/po/de/libkldap5.po new file mode 100644 index 0000000..e798dfa --- /dev/null +++ b/po/de/libkldap5.po @@ -0,0 +1,467 @@ +# Stephan Johach , 2007. +# Burkhard Lück , 2009, 2017, 2018. +# Thomas Reitelbach , 2009. +# Frederik Schwarzer , 2010, 2014. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-06-24 21:15+0100\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attribut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Wert" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Benutzer:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind-DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Bereich:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Passwort:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Rechner:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP-Version:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Max. Größe:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Voreinstellung" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Zeitlimit:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Voreinstellung" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Seitengröße:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Kein Paging" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Server abfragen" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Sicherheit" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Keine" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Authentifizierung" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonym" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Einfach" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL-Mechanismus:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Server überprüfen" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP-Abfrage" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Unbekannter Fehler beim Verbinden mit %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Keine LDAP-Unterstützung ..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Bei Aufbau der Verbindung ist ein Fehler aufgetreten." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Die Protokollversion kann nicht auf %1 gesetzt werden." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Neuer TLS-Kontext kann nicht initialisiert werden." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Maximale Größe kann nicht gesetzt werden." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Zeitlimit kann nicht gesetzt werden." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Der SASL-Client kann nicht initialisiert werden." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" +"Kein Zugriff auf den Server möglich. Bitte korrigieren Sie die Einstellungen." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Distinguished Name" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP-Fehler" + +#~ msgid "Add Host" +#~ msgstr "Rechner hinzufügen" + +#~ 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" + +#~ msgid "Edit Host" +#~ msgstr "Rechner bearbeiten" + +#~ msgid "LDAP Servers" +#~ msgstr "LDAP-Server" + +#~ msgid "Check all servers that should be used:" +#~ msgstr "Alle Rechner auswählen, die verwendet werden sollen:" + +#~ msgid "&Add Host..." +#~ msgstr "Rechner &hinzufügen ..." + +#~ msgid "&Edit Host..." +#~ msgstr "&Rechner bearbeiten ..." + +#~ msgid "&Remove Host" +#~ msgstr "Rechner &entfernen" + +#~ 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." diff --git a/po/el/kio_ldap.po b/po/el/kio_ldap.po new file mode 100644 index 0000000..c574953 --- /dev/null +++ b/po/el/kio_ldap.po @@ -0,0 +1,67 @@ +# 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 , 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2008-11-15 09:22+0200\n" +"Last-Translator: Toussis Manolis \n" +"Language-Team: Greek \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Επιπλέον πληροφορίες: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Σύνδεση LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "τοποθεσία:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Μη έγκυρες πληροφορίες εξουσιοδότησης." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Η σύνδεση LDAP ακυρώθηκε." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "O μεταφραστής LDIF απέτυχε." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Μη έγκυρο αρχείο LDIF στη γραμμή %1." diff --git a/po/el/libkldap5.po b/po/el/libkldap5.po new file mode 100644 index 0000000..ae0d942 --- /dev/null +++ b/po/el/libkldap5.po @@ -0,0 +1,301 @@ +# 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 , 2007, 2008. +# Toussis Manolis , 2007, 2009. +# Dimitris Kardarakos , 2014. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2014-11-14 19:00+0200\n" +"Last-Translator: Dimitris Kardarakos \n" +"Language-Team: Greek \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 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Ιδιότητα" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Τιμή" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Χρήστης:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Σύνδεση DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Περιοχή:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Κωδικός πρόσβασης:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Υπολογιστής:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Θύρα:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Έκδοση LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Όριο μεγέθους:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Προκαθορισμένο" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Χρονικό όριο:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " δευτ" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Προκαθορισμένο" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Μέγεθος σελίδας:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Χωρίς σελιδοποίηση" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Αίτηση Εξυπηρετητή" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Φίλτρο:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Ασφάλεια" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Όχι" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Ταυτοποίηση" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Ανώνυμη" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Απλή" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Μηχανισμός SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Ερώτημα LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Άγνωστο σφάλμα κατά τη σύνδεση στο %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Δεν υπάρχει υποστήριξη LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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 (ή συμβατές), ή ζητήστε εξηγήσεις από τη διανομή σας." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Παρουσιάστηκε σφάλμα κατά την αρχικοποίηση της σύνδεσης." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Αδύνατος ο ορισμός της έκδοσης του πρωτοκόλλου σε %1." + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "Αδύνατος ο ορισμός χρονικού ορίου σε %1 δευτερόλεπτο." +msgstr[1] "Αδύνατος ο ορισμός χρονικού ορίου σε %1 δευτερόλεπτα." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Αδυναμία αρχικοποίησης πελάτη SASL." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Μη διαθέσιμη υποστήριξη TLS στις βιβλιοθήκες πελάτη LDAP." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Αδύνατος ο ορισμός ορίου μεγέθους." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Αδύνατος ο ορισμός χρονικού ορίου." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Αδυναμία αρχικοποίησης πελάτη SASL." + +#: ldapconnection.cpp:456 +#, 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 (ή συμβατές), ή ενημερώστε τη διανομή σας." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" +"Αδυναμία πρόσβασης στον εξυπηρετητή. Παρακαλώ επαναλάβετε τη ρύθμισή του." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Διακριτό όνομα" + +#~ msgid "LDAP Operations error" +#~ msgstr "Σφάλμα λειτουργίας LDAP" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "Υπολογιστής:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Server Settings" +#~ msgstr "Έκδοση LDAP:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "Έκδοση LDAP:" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "Χρήστης:" diff --git a/po/en_GB/kio_ldap.po b/po/en_GB/kio_ldap.po new file mode 100644 index 0000000..f9c46fc --- /dev/null +++ b/po/en_GB/kio_ldap.po @@ -0,0 +1,76 @@ +# translation of kio_ldap.po to British English +# Malcolm Hunter , 2004, 2005. +# Andrew Coles , 2004, 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2009-03-08 16:45+0000\n" +"Last-Translator: Andrew Coles \n" +"Language-Team: British English \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Additional info: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP Login" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "site:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Invalid authorisation information." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP connection cancelled." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "The Ldif parser failed." + +#: kio_ldap.cpp:713 +#, 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." diff --git a/po/en_GB/libkldap5.po b/po/en_GB/libkldap5.po new file mode 100644 index 0000000..71d0f74 --- /dev/null +++ b/po/en_GB/libkldap5.po @@ -0,0 +1,276 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Steve Allewell , 2014, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-03-30 12:25+0000\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \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 2.0\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attribute" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Value" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "User:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Realm:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Password:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Host:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP version:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Size limit:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Default" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Time limit:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sec" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Default" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Page size:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "No paging" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Query Server" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Security" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "No" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Authentication" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonymous" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Simple" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL mechanism:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Check server" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP Query" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Unknown error connecting %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "No LDAP Support..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "An error occurred during the connection initialisation phase." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Cannot set protocol version to %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Could not set CA certificate file." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Invalid TLS require certificate mode." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Could not set TLS require certificate mode." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Could not initialise new TLS context." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "TLS support not available in the LDAP client libraries." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Cannot set size limit." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Cannot set time limit." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Cannot initialise the SASL client." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Cannot access to server. Please reconfigure it." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Distinguished Name" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP Operations error" diff --git a/po/eo/kio_ldap.po b/po/eo/kio_ldap.po new file mode 100644 index 0000000..6d5354c --- /dev/null +++ b/po/eo/kio_ldap.po @@ -0,0 +1,61 @@ +# Translation of kio_ldap into esperanto. +# Axel Rousseau , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2009-11-15 12:06+0100\n" +"Last-Translator: Axel Rousseau \n" +"Language-Team: esperanto \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" + +#: kio_ldap.cpp:179 +#, kde-format +msgid "" +"LDAP server returned the error: %1 %2\n" +"The LDAP URL was: %3" +msgstr "" + +#: kio_ldap.cpp:331 +#, kde-format +msgid "LDAP Login" +msgstr "" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "retejo:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "" diff --git a/po/eo/libkldap5.po b/po/eo/libkldap5.po new file mode 100644 index 0000000..98ae2ff --- /dev/null +++ b/po/eo/libkldap5.po @@ -0,0 +1,283 @@ +# Translation of libkldap into esperanto. +# Axel Rousseau , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2009-11-15 12:06+0100\n" +"Last-Translator: Axel Rousseau \n" +"Language-Team: esperanto \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atributo" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valoro" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Uzanto:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Pasvorto:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Gastigo:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Pordo:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Tempolimo:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Paĝgrando" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtrilo:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Sekureco" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Aŭtentigo" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP Query" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "" + +#: ldapconnection.cpp:160 +#, kde-format +msgid "" +"SASL support is not available. Please recompile libkldap with the Cyrus-SASL " +"(or compatible) client libraries, or complain to your distribution packagers." +msgstr "" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "" + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "" +msgstr[1] "" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "" + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "" + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "" + +#: ldapconnection.cpp:456 +#, 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 "" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "Gastigo:" + +#, fuzzy +#~| msgid "LDAP Query" +#~ msgid "LDAP Servers" +#~ msgstr "LDAP Query" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "Uzanto:" diff --git a/po/es/docs/kioslave5/ldap/index.docbook b/po/es/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..57750a1 --- /dev/null +++ b/po/es/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,68 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; + Marcos Fouces Lago
mfouces@yahoo.es
Traductor
JavierViñal
fjvinal@gmail.com
Traductor
+
+
+ +ldap es un protocolo ligero de acceso a directorios. Proporciona acceso a un directorio X.500, o a un servidor LDAP. + +Puede utilizar el ioslave ldap del siguiente modo: + +ldap://maquina:puerto/ou=People,o=where,c=de??sub para una petición de un subárbol + +o ldap://maquina:puerto/cn=MM,ou=People,o=where,c=de??base para obtener una rama completa. + +
diff --git a/po/es/kio_ldap.po b/po/es/kio_ldap.po new file mode 100644 index 0000000..be112e2 --- /dev/null +++ b/po/es/kio_ldap.po @@ -0,0 +1,70 @@ +# 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) , 2007. +# Jaime Robles , 2007. +# Javier Vinal , 2011, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2016-01-07 13:29+0100\n" +"Last-Translator: Javier Vinal \n" +"Language-Team: Spanish \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Información adicional: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Inicio de sesión LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sitio:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Información de autorización no válida." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "La conexión LDAP fue cancelada." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "El analizador de LDIF ha fallado." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Archivo LDIF no válido en la línea %1." diff --git a/po/es/libkldap5.po b/po/es/libkldap5.po new file mode 100644 index 0000000..49b6846 --- /dev/null +++ b/po/es/libkldap5.po @@ -0,0 +1,281 @@ +# 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 , 2007, 2008. +# Dario Andres Rodriguez , 2008, 2009. +# Adrián Martínez , 2010. +# Javier Vinal , 2011, 2012, 2013, 2014, 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-03-26 22:32+0100\n" +"Last-Translator: Javier Vinal \n" +"Language-Team: Spanish \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atributo" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Usuario:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "DN de enlace:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Dominio:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Contraseña:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Servidor:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Puerto:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Versión LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Límite de tamaño:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Predeterminado" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Límite de tiempo:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " seg" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Predeterminado" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Tamaño de página:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Sin paginación" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Servidor de consultas" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtro:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Seguridad" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "No" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autenticación" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anónimo" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Sencillo" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mecanismo SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Comprobar el servidor" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Petición LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Error desconocido conectando a %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Sin reconocimiento de LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, 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." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "No se puede cambiar la versión del protocolo a %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "No se ha podido establecer el archivo de certificado de la CA." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "TLS inválido exige modo de certificado." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "No se ha podido establecer el modo de certificado exigido TLS." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "No se ha podido inicializar el nuevo contexto TLS." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "No se puede establecer el límite de tamaño." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "No se puede establecer el límite de tamaño." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "No se puede inicializar el cliente SASL." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "No se puede acceder al servidor. Por favor, reconfigúrelo." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Nombre ilustre" diff --git a/po/et/docs/kioslave5/ldap/index.docbook b/po/et/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..f201e82 --- /dev/null +++ b/po/et/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,54 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; +MarekLaane
bald@online.ee
Tõlge eesti keelde
+
+
+ +ldap tähendab lihtsustatud kataloogisirvimise protokoll (inglise keeles lightweight directory access protocol). See võimaldab ligipääsu X.500 kataloogile või autonoomsele LDAP serverile. + +KIO moodulit ldap saab kasutada nii: + +ldap://masin:port/ou=People,o=where,c=de??sub alampuu päringuks + +või ldap://masin:port/cn=MM,ou=People,o=where,c=de??base kogu haru päringuks. + +
diff --git a/po/et/kio_ldap.po b/po/et/kio_ldap.po new file mode 100644 index 0000000..11c53bf --- /dev/null +++ b/po/et/kio_ldap.po @@ -0,0 +1,78 @@ +# translation of kio_ldap.po to Estonian +# Copyright (C) 2004 Free Software Foundation, Inc. +# Marek Laane , 2004-2005,2007. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-11-19 00:02+0200\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Lisainfo: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP sisselogimine" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sait:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Vigane autentimisinfo." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAB ühendus katkestatud" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldif parsija jäi jänni." + +#: kio_ldap.cpp:713 +#, 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." diff --git a/po/et/libkldap5.po b/po/et/libkldap5.po new file mode 100644 index 0000000..4033aa5 --- /dev/null +++ b/po/et/libkldap5.po @@ -0,0 +1,300 @@ +# 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 , 2007-2008, 2009, 2014. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2014-07-18 18:36+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \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 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atribuut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Väärtus" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Kasutaja:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Tsoon:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Parool:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Masin:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP versioon:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Suuruselimiit:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Vaikimisi" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Ajalimiit:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Vaikimisi" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Saale suurus:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Ei saalita" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Serveri päring" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Turvalisus" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Puudub" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autentimine" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonüümne" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Lihtne" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL mehhanism:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP-i päring" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Tundmatu tõrge ühendumisel serveriga %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "LDAP-i toetus puudub..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Ühenduse initsialiseerimise ajal tekkis viga." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Protokollile versiooni %1 määramine nurjus." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "SASL kliendi initsialiseerimine nurjus." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "TLS-i toetus pole LDAP-i kliendi teekides saadaval." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Suuruselimiidi määramine nurjus." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Ajalimiidi määramine nurjus." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "SASL kliendi initsialiseerimine nurjus." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Ligipääs serverile puudub. Palun muuda seadistusi." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Eraldusnimi" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP-i toimingute viga" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "Masin:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Server Settings" +#~ msgstr "LDAP versioon:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "LDAP versioon:" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "Kasutaja:" diff --git a/po/eu/kio_ldap.po b/po/eu/kio_ldap.po new file mode 100644 index 0000000..b60b583 --- /dev/null +++ b/po/eu/kio_ldap.po @@ -0,0 +1,67 @@ +# translation of kio_ldap.po to Basque +# +# Marcos , 2004. +# Juan Irigoien , 2004. +# marcos , 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2006-02-07 11:05+0100\n" +"Last-Translator: marcos \n" +"Language-Team: Basque \n" +"Language: eu\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=2; plural=(n != 1);\n" + +#: kio_ldap.cpp:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Informazio gehigarria: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP saio-hasiera" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "lekua:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Baimentze informazio baliogabea." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, fuzzy, kde-format +msgid "The Ldif parser failed." +msgstr "LDIF analizatzaileak huts egin du." + +#: kio_ldap.cpp:713 +#, fuzzy, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "LDIF fitxategi baliogabea %1 lerroan." diff --git a/po/fa/kio_ldap.po b/po/fa/kio_ldap.po new file mode 100644 index 0000000..1471ba2 --- /dev/null +++ b/po/fa/kio_ldap.po @@ -0,0 +1,67 @@ +# translation of kio_ldap.po to Persian +# Nazanin Kazemi , 2006, 2007. +# MaryamSadat Razavi , 2006. +# Tahereh Dadkhahfar , 2006. +# Nasim Daniarzadeh , 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-06-13 15:37+0330\n" +"Last-Translator: Nazanin Kazemi \n" +"Language-Team: Persian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"اطلاعات اضافی: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "ورود LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "پایگاه:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "اطلاعات احراز هویت نامعتبر." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "اتصال LDAP لغو شد." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "خرابی در تجزیه‌کننده Ldif." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "پرونده Ldif نامعتبر در خط %1." diff --git a/po/fi/kio_ldap.po b/po/fi/kio_ldap.po new file mode 100644 index 0000000..cfd1e12 --- /dev/null +++ b/po/fi/kio_ldap.po @@ -0,0 +1,67 @@ +# translation of kio_ldap.po to +# Ilpo Kantonen , 2004, 2005. +# Mikko Piippo , 2007. +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2013-01-20 20:04:10+0000\n" +"Last-Translator: Mikko Piippo \n" +"Language-Team: Finnish \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Lisätiedot: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP Sisäänkirjautuminen" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "kohde:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Virheelliset kirjautumistiedot." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP-yhteys peruttu." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "LDIF-jäsentäjä epäonnistui." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Virheellinen LDIF-tiedosto rivillä %1." diff --git a/po/fi/libkldap5.po b/po/fi/libkldap5.po new file mode 100644 index 0000000..e657c99 --- /dev/null +++ b/po/fi/libkldap5.po @@ -0,0 +1,280 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Tommi Nieminen , 2010, 2015, 2017, 2018. +# Lasse Liehu , 2013, 2014. +# +# KDE Finnish translation sprint participants: +# Author: Artnay +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-08-15 14:00+0200\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \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 2.0\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Määrite" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Arvo" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Käyttäjä:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Alue:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Salasana:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Palvelin:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Portti:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP-versio:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Kokorajoitus:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Oletus" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Aikarajoitus:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Oletus" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Sivutuksen koko:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Ei sivutusta" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Kysy palvelimelta" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Suodatin:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Turvallisuus" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Ei" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Tunnistautuminen" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Nimetön" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Yksinkertainen" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL-mekanismi:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Tarkista palvelin" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP-kysely" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Tuntematon virhe yhdistettäessä palvelimeen %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Ei LDAP-tukea…" + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Sattui virhe alustettaessa yhteyttä." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Yhteyskäytännön versioksi ei voi asettaa %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "CA-varmennetiedostoa ei voitu asettaa." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Virheellinen TLS:n vaatima varmennetila." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "TLS:n vaatimaa varmennetilaa ei voitu asettaa." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Uutta TLS-kontekstia ei voitu alustaa." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "TLS-tukea ei ole saatavilla LDAP-asiakaskirjastoissa." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Kokorajoitusta ei voi asettaa." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Aikarajoitusta ei voi asettaa." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "SASL-asiakasta ei voi alustaa." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Palvelimeen ei saa yhteyttä: määritä sen asetukset uudelleen." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "DN-nimi" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP-toimenpiteen virhe" diff --git a/po/fr/kio_ldap.po b/po/fr/kio_ldap.po new file mode 100644 index 0000000..e42a45f --- /dev/null +++ b/po/fr/kio_ldap.po @@ -0,0 +1,72 @@ +# translation of kio_ldap.po to +# translation of kio_ldap.po to Français +# traduction de kio_ldap.po en Français +# Matthieu Robin , 2004. +# Nicolas Ternisien , 2005. +# Sébastien Renard , 2007. +# xavier , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2013-06-06 14:21+0200\n" +"Last-Translator: xavier \n" +"Language-Team: French \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Informations supplémentaires : " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Connexion « LDAP »" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "site :" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Informations d'identification non valables." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Connexion « LDAP » annulée." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Échec de l'analyseur « LDIF »." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Fichier « LDIF » non valable à la ligne %1." diff --git a/po/fr/libkldap5.po b/po/fr/libkldap5.po new file mode 100644 index 0000000..ac3fd66 --- /dev/null +++ b/po/fr/libkldap5.po @@ -0,0 +1,310 @@ +# 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 , 2007, 2008. +# Sébastien Renard , 2008. +# Mickael Sibelle , 2008. +# xavier , 2012, 2013. +# Vincent Pinon , 2017, 2018. +# Simon Depiets , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-07-30 17:28+0800\n" +"Last-Translator: Simon Depiets \n" +"Language-Team: French \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 2.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attribut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valeur" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Utilisateur :" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Nom de domaine de connexion :" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Domaine :" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Mot de passe :" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Hôte :" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr " Port :" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Version LDAP :" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Taille limite :" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Par défaut" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Temps limite :" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " seconde" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Par défaut" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Taille de la page :" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Aucune pagination" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "Nom de domaine :" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Interroger un serveur" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtre :" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Sécurité" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Non" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "Chiffrement « TLS »" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Authentification" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonyme" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Simple" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mécanisme « SASL » :" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Vérifier le serveur" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Requête LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Erreur inconnue lors de la connexion %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Aucune prise en charge du LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "" +"Une erreur s'est produite pendant la phase d'initialisation de connexion." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Impossible de définir la version du protocole à %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Impossible de définir le fichier de certificat CA." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Mode de certificat exigé par TLS non valable." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Impossible de définir le mode de certificat exigé par TLS." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Impossible d'initialiser un nouveau contexte TLS." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Impossible de régler la taille limite." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Impossible de régler le temps limite." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Impossible d'initialiser le client « SASL »." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Impossible d'accéder au serveur. Veuillez le reconfigurer." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Nom distinctif" + +#~ msgid "LDAP Operations error" +#~ msgstr "Erreur d'opérations LDAP" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "Hôte :" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Server Settings" +#~ msgstr "Version LDAP :" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "Version LDAP :" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "Utilisateur :" diff --git a/po/ga/kio_ldap.po b/po/ga/kio_ldap.po new file mode 100644 index 0000000..777868d --- /dev/null +++ b/po/ga/kio_ldap.po @@ -0,0 +1,66 @@ +# 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 , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kdepimlibs/kio_ldap.po\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-09-11 07:48-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Eolas breise: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Logáil Isteach LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "suíomh:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Eolas neamhbhailí údaraithe." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Cealaíodh an ceangal LDAP." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Theip an parsálaí Ldif." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Comhad neamhbhailí Ldif: líne %1." diff --git a/po/ga/libkldap5.po b/po/ga/libkldap5.po new file mode 100644 index 0000000..819f9ee --- /dev/null +++ b/po/ga/libkldap5.po @@ -0,0 +1,285 @@ +# 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 , 2009. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2007-04-15 19:05-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Aitreabúid" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Luach" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Úsáideoir:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "DN ceangail:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Flaitheas:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Focal Faire:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Óstríomhaire:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Leagan LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Uasmhéid:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Réamhshocrú" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Teorainn ama:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Réamhshocrú" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Méid an leathanaigh:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Gan leathanaigh" + +# translated below +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "AA:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Freastalaí na nIarratas" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Scagaire:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Slándáil" + +# "None" +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Gan Slándáil" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Fíordheimhniú" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Gan ainm" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Simplí" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Sásra SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Iarratas LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Gan tacaíocht LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Tharla earráid le linn túsú an cheangail." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Ní féidir leagan an phrótacail a shocrú mar %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, 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ú." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Ní féidir teorainn méide a shocrú." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Ní féidir teorainn ama a shocrú." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Ní féidir an cliant SASL a thúsú." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Ní féidir an freastalaí a rochtain. Cumraigh é arís." + +# acronym above +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Ainm Aitheanta" + +#~ msgid "LDAP Operations error" +#~ msgstr "Earráid oibríochta LDAP" diff --git a/po/gl/kio_ldap.po b/po/gl/kio_ldap.po new file mode 100644 index 0000000..a28f91f --- /dev/null +++ b/po/gl/kio_ldap.po @@ -0,0 +1,72 @@ +# 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 , 2007, 2008. +# Adrián Chaves (Gallaecio) , 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2018-04-28 20:43+0100\n" +"Last-Translator: Adrian Chaves \n" +"Language-Team: Galician \n" +"Language: gl\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" +"X-Poedit-Language: Galician\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_ldap.cpp:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Información adicional: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Acceso con LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sitio:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Información de autorización incorrecta." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Cancelouse a conexión LDAP." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "O procesador de LDIF fallou." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Ficheiro LDIF incorrecto na liña %1." diff --git a/po/gl/libkldap5.po b/po/gl/libkldap5.po new file mode 100644 index 0000000..7d2d535 --- /dev/null +++ b/po/gl/libkldap5.po @@ -0,0 +1,288 @@ +# 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 , 2007, 2008. +# marce villarino , 2009. +# Adrián Chaves Fernández , 2015, 2017. +# Adrián Chaves (Gallaecio) , 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-04-22 11:09+0100\n" +"Last-Translator: Adrian Chaves \n" +"Language-Team: Galician \n" +"Language: gl\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" +"X-Poedit-Language: Galician\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atributo" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Usuario:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Nome de dominio vinculado:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Área de identificación compartida:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Contrasinal:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Servidor:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Porto:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Versión de LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Límite de tamaño:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Predeterminado" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Límite de tempo:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Predeterminado" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Tamaño da páxina:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Sen paxinación" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "Nome distintivo:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Preguntar ao servidor" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtro:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Seguridade" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Ningunha" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autenticación" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anónimo" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Simple" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mecanismo de SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Comprobar o servidor" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Consulta LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Erro descoñecido ao conectar a %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Non hai compatibilidade con LDAP…" + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Produciuse un erro durante a fase de inicialización da conexión." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Non se pode estabelecer a versión do protocolo como %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" +"Non se puido definir o ficheiro de certificado de autoridade de " +"certificación." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Modo de requisito de certificado TLS incorrecto." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Non se puido estabelecer o modo de requisito de certificado TLS." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Non se puido inicializar o novo contexto de TLS." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "As bibliotecas LDAP do cliente non teñen compatibilidade con TLS." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Non se pode estabelecer o límite de tamaño." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Non se pode estabelecer o límite de tempo." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Non se pode inicializar o cliente de SASL." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Non se pode acceder ao servidor. Por favor, reconfigúreo." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Nome distintivo" + +#~ msgid "LDAP Operations error" +#~ msgstr "Erro na operación de LDAP" diff --git a/po/he/kio_ldap.po b/po/he/kio_ldap.po new file mode 100644 index 0000000..0538425 --- /dev/null +++ b/po/he/kio_ldap.po @@ -0,0 +1,79 @@ +# 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 +# +# This translation is subject to the same Open Source +# license as the program which it accompanies. +# +# Diego Iastrubni , 2005. +# galion , 2005. +# tahmar1900 , 2006. +# Meni Livne , 2007. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2017-05-16 07:05-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"מידע נוסף: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "כניסת LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "אתר:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "מידע זיהוי לא תקף." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "החיבור ל־LDAP בוטל." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "מפרק ה־Ldif נכשל." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "‏Ldif לא תקף בשורה %1." diff --git a/po/hi/kio_ldap.po b/po/hi/kio_ldap.po new file mode 100644 index 0000000..c9445fa --- /dev/null +++ b/po/hi/kio_ldap.po @@ -0,0 +1,66 @@ +# translation of kio_ldap.po to Hindi +# +# G Karunakar , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-08-18 15:30+0530\n" +"Last-Translator: G Karunakar \n" +"Language-Team: Hindi \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"अतिरिक्त जानकारी:" + +#: kio_ldap.cpp:179 +#, kde-format +msgid "" +"LDAP server returned the error: %1 %2\n" +"The LDAP URL was: %3" +msgstr "" +"एलडीएपी सर्वर ने निम्न त्रुटि लौटाया: %1 %2\n" +"एलडीएपी यूआरएल था: %3" + +#: kio_ldap.cpp:331 +#, kde-format +msgid "LDAP Login" +msgstr "एलडीएपी लॉगइन" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "साइटः" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "अवैध प्रमाणीकरण जानकारी" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "एलडीएपी कनेक्शन असफल" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "एलडीआईएफ़ पारसर विफल" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "पंक्ति %1 में अवैध एलडीआईएफ फ़ाइल है." diff --git a/po/hi/libkldap5.po b/po/hi/libkldap5.po new file mode 100644 index 0000000..917e2f7 --- /dev/null +++ b/po/hi/libkldap5.po @@ -0,0 +1,304 @@ +# 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 , 2008. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2008-01-28 12:57+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "उपयोक्ता:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "बाइंड डीएन:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "रीयल्म:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "पासवर्ड: " + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "होस्टः" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "पोर्टः" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "एलडीएपी संस्करण:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "आकार सीमा:" + +#: ldapconfigwidget.cpp:198 +#, fuzzy, kde-format +#| msgid "Default" +msgctxt "default ldap size limit" +msgid "Default" +msgstr "डिफ़ॉल्ट" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "समय सीमा:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr "सेक." + +#: ldapconfigwidget.cpp:212 +#, fuzzy, kde-format +#| msgid "Default" +msgctxt "default ldap time limit" +msgid "Default" +msgstr "डिफ़ॉल्ट" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "पृष्ठ आकार:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "पेजिंग नहीं" + +#: ldapconfigwidget.cpp:233 +#, fuzzy, kde-format +#| msgid "DN:" +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "डीएन:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "क्वैरी सर्वर" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "फ़िल्टर:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "सुरक्षा" + +#: ldapconfigwidget.cpp:262 +#, fuzzy, kde-format +#| msgid "No" +msgctxt "@option:radio set no security" +msgid "No" +msgstr "नहीं" + +#: ldapconfigwidget.cpp:265 +#, fuzzy, kde-format +#| msgid "TLS" +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "टीएलएस" + +#: ldapconfigwidget.cpp:268 +#, fuzzy, kde-format +#| msgid "SSL" +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "एसएसएल" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "प्रमाणीकरण" + +#: ldapconfigwidget.cpp:291 +#, fuzzy, kde-format +#| msgid "Anonymous" +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "अज्ञातनाम" + +#: ldapconfigwidget.cpp:295 +#, fuzzy, kde-format +#| msgid "Simple" +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "साधारण" + +#: ldapconfigwidget.cpp:299 +#, fuzzy, kde-format +#| msgid "SASL" +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "एसएसएल" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "एसएएसएल मेकेनिज़्म" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "एलडीएपी क्वेरी" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "कोई एलडीएपी समर्थन नहीं...." + +#: ldapconnection.cpp:160 +#, kde-format +msgid "" +"SASL support is not available. Please recompile libkldap with the Cyrus-SASL " +"(or compatible) client libraries, or complain to your distribution packagers." +msgstr "" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "कनेक्शन को चालू करने के दौरान एक त्रुटि हुई." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "प्रोटोकॉल संस्करण %1 सेट नहीं किया जा सका." + +#: ldapconnection.cpp:288 +#, 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] "समय सीमा नियत नहीं कर सका." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "एसएएसएल क्लाएंट प्रारंभ नहीं किया जा सका." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "एलडीएपी क्लाएंट लाइब्रेरी में टीएलएस समर्थन उपलब्ध नहीं है." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "आकार सीमा नियत नहीं कर सका." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "समय सीमा नियत नहीं कर सका." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "एसएएसएल क्लाएंट प्रारंभ नहीं किया जा सका." + +#: ldapconnection.cpp:456 +#, 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 "" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "" + +#~ msgid "LDAP Operations error" +#~ msgstr "एलडीएपी ऑपरेशन त्रुटि" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "होस्टः" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Server Settings" +#~ msgstr "एलडीएपी संस्करण:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "एलडीएपी संस्करण:" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "उपयोक्ता:" diff --git a/po/hu/kio_ldap.po b/po/hu/kio_ldap.po new file mode 100644 index 0000000..0f0b026 --- /dev/null +++ b/po/hu/kio_ldap.po @@ -0,0 +1,62 @@ +# Kristóf Kiszel , 2010. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.0\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2010-12-15 23:18+0100\n" +"Last-Translator: Kristóf Kiszel \n" +"Language-Team: Hungarian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"További információ: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP-bejelentkezés" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "Alapcím:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Érvénytelenek a felhasználóazonosítási adatok." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Az LDAP-kapcsolat megszakadt." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Az LDIF-feldolgozó hibát jelzett." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Hiba az LDIF-fájl %1. sorában." diff --git a/po/hu/libkldap5.po b/po/hu/libkldap5.po new file mode 100644 index 0000000..161f5c6 --- /dev/null +++ b/po/hu/libkldap5.po @@ -0,0 +1,301 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Tamas Szanto , 2007. +# Balázs Úr , 2014. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.3\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2014-06-14 15:51+0200\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attribútum" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Érték" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Felhasználónév:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Csatlakozási DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Tartomány:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Jelszó:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Gépnév:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP verzió:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Méretkorlát:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Alapértelmezés" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Időkorlát:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Alapértelmezés" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Lapméret:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Nincs lapozás" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Lekérdezés" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Szűrő:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Biztonság" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Nincs" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Felhasználóazonosítás" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonymous" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Egyszerű" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL-mechanizmus:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP lekérdezés" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Ismeretlen hiba csatlakozáskor: %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Nincs LDAP-támogatás..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Hiba történt a kapcsolat inicializálása közben." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Nem sikerült beállítani a protokoll verziószámát erre: %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, 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." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Nem sikerült beállítani a méretkorlátot." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Nem sikerült beállítani az időkorlátot." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Nem sikerült inicializálni az SASL-klienst." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, 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." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Azonosító név (DN)" + +#~ msgid "LDAP Operations error" +#~ msgstr "Hiba egy LDAP-műveletben" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "Gépnév:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Server Settings" +#~ msgstr "LDAP verzió:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "LDAP verzió:" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "Felhasználónév:" diff --git a/po/ia/kio_ldap.po b/po/ia/kio_ldap.po new file mode 100644 index 0000000..b36c920 --- /dev/null +++ b/po/ia/kio_ldap.po @@ -0,0 +1,66 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2011, 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2012-05-14 14:16+0200\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Information additional: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Accesso de identification LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sito:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Information de authorization invalide" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Connexion LDAP cancellate." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Le analysator Ldif falleva." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Invalide file de Ldif in linea %1." diff --git a/po/ia/libkldap5.po b/po/ia/libkldap5.po new file mode 100644 index 0000000..6202bdd --- /dev/null +++ b/po/ia/libkldap5.po @@ -0,0 +1,279 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2011, 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2012-07-27 12:06+0200\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \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 1.2\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attributo" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Usator:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Ligamine (Bind) DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Regno:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Contrasigno:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Hospite:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Porto:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Version de LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Limite de grandor:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Predefinite" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Limite de tempore:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sec" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Predefinite" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Dimension de Pagina:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Nulle pagination" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Servitor de requesta" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtro:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Securitate" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "No" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Authentication" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonyme" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Simple" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mechanismo SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Requesta LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Nulle supporto LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Un error ha occurrite durante le phase de initialization de connexion." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Non pote fixar version de protocollo a %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Non pote initializar le cliente SASL." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Supporto TLS non es disponibile in le librerias cliente de LDAP." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Non pote fixar limite de grandor." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Non pote fixar limite de tempore." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Non pote initializar le cliente SASL." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Non pote acceder a servitor. Pro favor tu reconfigura lo." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Nomine distinguite" + +#~ msgid "LDAP Operations error" +#~ msgstr "Error de operationes LDAP" diff --git a/po/is/kio_ldap.po b/po/is/kio_ldap.po new file mode 100644 index 0000000..3e725f7 --- /dev/null +++ b/po/is/kio_ldap.po @@ -0,0 +1,80 @@ +# translation of kio_ldap.po to Icelandic +# Íslensk þýðing kio_ldap.po +# Richard Allen , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2005-12-03 13:32+0100\n" +"Last-Translator: Arnar Leosson \n" +"Language-Team: Icelandic \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Viðbótarupplýsingar: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP auðkenni" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "staðsetning:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Ógildar auðkenniupplýsingar." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, fuzzy, kde-format +msgid "The Ldif parser failed." +msgstr "LDIF þáttarinn brást." + +#: kio_ldap.cpp:713 +#, 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ð." diff --git a/po/it/docs/kioslave5/ldap/index.docbook b/po/it/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..9e40a9b --- /dev/null +++ b/po/it/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,54 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; +Luciano Montanaro
mikelima@cirulla.net
Traduzione del documento
+
+
+ +L'ldap è il Lightweight Directory Access Protocol. Fornisce accesso a directory X.500 o ad un server LDAP indipendente. + +Il kioslave ldap si usa come segue: + +ldap://host:port/ou=People,o=where,c=de??sub per una ricerca su sottoalbero + +oppure ldap://host:port/cn=MM,ou=People,o=where,c=de??base per un ramo completo. + +
diff --git a/po/it/kio_ldap.po b/po/it/kio_ldap.po new file mode 100644 index 0000000..bc87f94 --- /dev/null +++ b/po/it/kio_ldap.po @@ -0,0 +1,65 @@ +# translation of kio_ldap.po to Italian +# Andrea RIZZI , 2004. +# Andrea Rizzi , 2005. +# Nicola Ruggero , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2008-01-01 17:26+0100\n" +"Last-Translator: Nicola Ruggero \n" +"Language-Team: Italian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Informazioni aggiuntive: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Accesso LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sito:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Informazioni di autorizzazione non valide." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Connessione LDAP annullata." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "L'analizzatore LDIF non ha funzionato." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "File LDIF non valido alla riga %1." diff --git a/po/it/libkldap5.po b/po/it/libkldap5.po new file mode 100644 index 0000000..7a529ad --- /dev/null +++ b/po/it/libkldap5.po @@ -0,0 +1,283 @@ +# 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 , 2007. +# Luigi Toscano , 2014, 2017, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-04-06 22:30+0100\n" +"Last-Translator: Luigi Toscano \n" +"Language-Team: Italian \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 2.0\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attributo" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valore" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Utente:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Autentica ND:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Reame:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Password:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Host:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Porta:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Versione di LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Limite di dimensione:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Predefinito" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Scadenza:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sec" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Predefinito" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Dimensione della pagina:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Senza paginazione" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "ND:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Interroga server" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtro:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Sicurezza" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "No" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autenticazione" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonimo" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Semplice" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Meccanismo SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Verifica server" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Interrogazione LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Errore sconosciuto nella connessione a %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Senza supporto LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "" +"Si è verificato un errore durante la fase di inizializzazione della " +"connessione." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Impossibile impostare il protocollo alla versione %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Impossibile impostare il file del certificato della CA." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Modalità «TLS richiede un certificato» non valida." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Impossibile impostare la modalità «TLS richiede un certificato»." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Impossibile inizializzare un nuovo contesto TLS." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Supporto TLS non disponibile nelle librerie del client LDAP." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Impossibile impostare un limite di dimensione." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Impossibile impostare un limite di tempo." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Impossibile inizializzare il client SASL." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" +"Impossibile accedere al server; è necessario riconfigurarne i parametri." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Nome distinto" + +#~ msgid "LDAP Operations error" +#~ msgstr "Errore di operazione di LDAP" diff --git a/po/ja/kio_ldap.po b/po/ja/kio_ldap.po new file mode 100644 index 0000000..6ac617a --- /dev/null +++ b/po/ja/kio_ldap.po @@ -0,0 +1,69 @@ +# 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 , 2004. +# Shinichi Tsunoda , 2005. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-09-11 17:00+0900\n" +"Last-Translator: Yukiko Bando \n" +"Language-Team: Japanese \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"追加情報: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP ログイン" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "サイト:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "無効な認証情報です。" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP 接続がキャンセルされました。" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldif パーサが失敗しました。" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "%1 行目が無効な Ldif ファイルです。" diff --git a/po/ja/libkldap5.po b/po/ja/libkldap5.po new file mode 100644 index 0000000..535f443 --- /dev/null +++ b/po/ja/libkldap5.po @@ -0,0 +1,277 @@ +# Translation of libkldap into Japanese. +# This file is distributed under the same license as the kdepimlibs package. +# Yukiko Bando , 2007, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2010-01-27 01:06+0900\n" +"Last-Translator: Yukiko Bando \n" +"Language-Team: Japanese \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "属性" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "値" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "ユーザ:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "バインド DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "レルム:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "パスワード:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "ホスト:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "ポート:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP バージョン:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "サイズ制限:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "標準" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "時間制限:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " 秒" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "標準" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "ページサイズ:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "ページングなし" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "クエリサーバ" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "フィルタ:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "セキュリティ" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "なし" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "認証方式" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "匿名" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "シンプル" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL メカニズム:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP クエリ" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "LDAP サポートがありません..." + +#: ldapconnection.cpp:160 +#, kde-format +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 サポートがありません。Cyrus-SASL (または互換の) クライアントライブラリ付" +"きで libkldap をコンパイルし直すか、お使いのディストリビューションのパッケー" +"ジ作成者に問題を報告してください。" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "接続初期化フェーズでエラーが発生しました。" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "プロトコルのバージョンを %1 に設定できません。" + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "タイムアウトを %1 秒に設定できません。" +msgstr[1] "タイムアウトを %1 秒に設定できません。" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "SASL クライアントを初期化できません。" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "LDAP クライアントライブラリに TLS サポートがありません。" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "サイズ制限を設定できません。" + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "時間制限を設定できません。" + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "SASL クライアントを初期化できません。" + +#: ldapconnection.cpp:456 +#, 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 をコンパイルし直すか、お使いのディストリビューショ" +"ンのパッケージ作成者に問題を報告してください。" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "サーバにアクセスできません。設定をやり直してください。" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "識別名 (DN)" diff --git a/po/kk/kio_ldap.po b/po/kk/kio_ldap.po new file mode 100644 index 0000000..f217197 --- /dev/null +++ b/po/kk/kio_ldap.po @@ -0,0 +1,66 @@ +# translation of kio_ldap.po to Kazakh +# +# Sairan Kikkarin , 2005, 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-09-19 11:24+0600\n" +"Last-Translator: Sairan Kikkarin \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Қосымша мәлімет: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP жүйеге кіру" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "сайт:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Мәлімет шындылық тексерістен өтпеді." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP қосылым үзілді." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldif талдау жаңылысы." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Ldif файлының %1-жолында қате." diff --git a/po/kk/libkldap5.po b/po/kk/libkldap5.po new file mode 100644 index 0000000..148cb9e --- /dev/null +++ b/po/kk/libkldap5.po @@ -0,0 +1,278 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sairan Kikkarin , 2011, 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2012-02-29 03:21+0600\n" +"Last-Translator: Sairan Kikkarin \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" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 1.2\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Атрибуты" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Мәні" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Пайдаланушы:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "DN байланысы:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Аумағы:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Паролі:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Хосты:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Порты:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP нұсқасы:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Өлшемінің шегі:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Әдетті" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Уақыт шегі:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " сек" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Әдетті" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Парақ өлшемі:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Парақтаусыз" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Серверге сұрау салу" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Сүзгісі:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Қауіпсіздігі" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Жоқ" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Аутентификация" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Анонимды" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Қарапайым" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL тетігі:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP сұранысы" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "LDAP қолдауы жоқ..." + +#: ldapconnection.cpp:160 +#, kde-format +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 (немесе үйлесімді) клиенттік жинақ " +"файлдарымен бірге қайта компиляциялап жинқтаңыз, не дистрибутивіңіздің " +"жабдықтаушыңызға шағымданыңыз." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Қосылуды бастау кезде бір қате орын алды." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Протоколдың нұсқасы %1 деп орнатымады.." + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "%1 секундтық күту уақыты орнатылмады." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "SASL клиенті бастау күйіне келмеді." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "LDAP клиенттік жинақ файлдары TLS протоколын қолдамайды." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Өлшемінің шегі орнатылмады." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Уақыт шегі орнатылмады." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "SASL клиенті бастау күйіне келмеді." + +#: ldapconnection.cpp:456 +#, 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 (немесе үйлесімді) " +"клиенттік жинақ файлдарымен бірге қайта компиляциялап жинқтаңыз, не " +"дистрибутивіңіздің жабдықтаушыңызға шағымданыңыз." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Серверімен қатынас жоқ. Оны қайта баптап көріңіз." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Айырымды атау (DN)" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP амалдар қатесі" diff --git a/po/km/kio_ldap.po b/po/km/kio_ldap.po new file mode 100644 index 0000000..9f24f58 --- /dev/null +++ b/po/km/kio_ldap.po @@ -0,0 +1,66 @@ +# translation of kio_ldap.po to Khmer +# Khoem Sokhem , 2005, 2007, 2008. +# Sokun , 2007. +# Auk Piseth , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2008-01-24 10:13+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"ព័ត៌មាន​បន្ថែម ៖ " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "ការ​ចូល LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "តំបន់​បណ្ដាញ ៖" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "ព័ត៌មាន​អំពី​ការ​អនុញ្ញាត​មិន​ត្រឹមត្រូវ ។" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "ការ​តភ្ជាប់ LDAP ត្រូវ​បាន​បោះបង់ ។" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "ឧបករណ៍​ញែក Ldif បាន​បរាជ័យ ។" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "ឯកសារ Ldif មិន​ត្រឹម​ត្រូវ​នៅ​បន្ទាត់ %1 ។" diff --git a/po/km/libkldap5.po b/po/km/libkldap5.po new file mode 100644 index 0000000..35d8783 --- /dev/null +++ b/po/km/libkldap5.po @@ -0,0 +1,278 @@ +# 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 , 2008, 2009, 2010. +# Morn Met, 2010. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2010-12-13 09:23+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "គុណលក្ខណៈ" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "តម្លៃ" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "អ្នក​ប្រើ ៖" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN ៖" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Realm ៖" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "ពាក្យ​សម្ងាត់ ៖" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "ម៉ាស៊ីន ៖" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "ច្រក ៖" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "កំណែ LDAP ៖" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "ដែន​កំណត់​ទំហំ ៖" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "លំនាំដើម" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "ដែន​កំណត់​​ពេលវេលា ៖" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " វិ." + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "លំនាំដើម" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "ទំហំ​ទំព័រ ៖" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "គ្មាន​ភេយីង" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN ៖" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "ម៉ាស៊ីន​បម្រើ​សំណួរ" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "តម្រង ៖" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "សុវត្ថិភាព" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "ទេ" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "ការ​ផ្ទៀងផ្ទាត់ភាព​ត្រឹមត្រូវ" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "អនាមិក" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "សាមញ្ញ" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "យន្តការ SASL ៖" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "សំណួរ LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "គ្មាន​ការ​គាំទ្រ LDAP...​" + +#: ldapconnection.cpp:160 +#, kde-format +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 (ឬ​ឆបគ្នា) " +"បណ្ណាល័យ​ម៉ាស៊ីន​ភ្ញៀវ ឬ​​ប្ដឹង​ទៅ​អ្នក​កាន់កាប់កញ្ចប់​ចែកចាយ​របស់​អ្នក ។" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "កំហុស​មួយ​បាន​កើត​ឡើងខណៈពេល​​​ដំណាក់កាល​​ចាប់ផ្ដើម​កា​រតភ្ជាប់ ។" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "មិន​អាច​កំណត់​កំណែ​ពិធីការ​ទៅ %1 បាន​ឡើយ​ ។" + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "មិន​អាចកំណត់​ពេល​សម្រាក​ទៅ %1 វិនាទី ។" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "មិន​អាច​ចាប់ផ្ដើម​​ម៉ាស៊ីន​ភ្ញៀវ SASL ។" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "មិន​មាន​ការ​គាំទ្រ TLS នៅ​ក្នុង​បណ្ណាល័យ​ម៉ាស៊ីន​ភ្ញៀវ LDAP ។" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "មិន​អាច​កំណត់​ដែន​កំណត់​​របស់​ទំហំ ។" + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "មិន​អាច​កំណត់​ម៉ោង​កំណត់​បាន​ឡើយ​ ។" + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "មិន​អាច​ចាប់ផ្ដើម​​ម៉ាស៊ីន​ភ្ញៀវ SASL ។" + +#: ldapconnection.cpp:456 +#, 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 (ឬ​" +"ឆបគ្នា) ឬ​តវ៉ា​ទៅ​​អ្នកគ្រប់គ្រង​កញ្ចប់​ចែកចាយ​របស់​អ្នក ។" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "មិន​អាច​ចូលដំណើរការ​ទៅកាន់​ម៉ាស៊ីន​បម្រើ​បានទេ ។ សូម​កំណត់​រចនាសម្ព័ន្ធ​វា​ម្ដង​ទៀត ។" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "ឈ្មោះ​ដែល​ចំណាំ" + +#~ msgid "LDAP Operations error" +#~ msgstr "កំហុស​ក្នុង​កា​រប្រតិបត្តិ LDAP" diff --git a/po/ko/kio_ldap.po b/po/ko/kio_ldap.po new file mode 100644 index 0000000..ee0cc29 --- /dev/null +++ b/po/ko/kio_ldap.po @@ -0,0 +1,65 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Shinjo Park , 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2014-03-03 00:26+0900\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"추가 정보: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP 로그인" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "사이트:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "인증 정보가 잘못되었습니다." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP 연결이 취소되었습니다." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "LDIF 파서가 실패했습니다." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "%1줄에 잘못된 LDIF 파일이 있습니다." diff --git a/po/ko/libkldap5.po b/po/ko/libkldap5.po new file mode 100644 index 0000000..0c9c99c --- /dev/null +++ b/po/ko/libkldap5.po @@ -0,0 +1,275 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Shinjo Park , 2015, 2017, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-08-15 12:31+0100\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \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 2.0\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "속성" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "값" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "사용자:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "바인드 DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "영역:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "암호:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "호스트:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "포트:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP 버전:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "크기 제한:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "기본값" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "시간 제한:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " 초" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "기본값" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "페이지 크기:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "페이징 없음" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "질의 보내기" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "필터:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "보안" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "아니요" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "인증" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "익명" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "간단함" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL 방식:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "서버 확인" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP 질의" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "%1에 연결 중 알 수 없는 오류" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "LDAP 지원 없음..." + +#: ldapconnection.cpp:160 +#, kde-format +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 및 호환되는 클라이언트 " +"라이브러리와 함께 컴파일하거나, 배포판 패키지 관리자에게 문의하십시오." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "연결 초기화 중 오류가 발생했습니다." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "프로토콜 버전을 %1(으)로 설정할 수 없습니다." + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "시간 제한을 %1초로 설정할 수 없습니다." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "CA 인증서 파일을 설정할 수 없습니다." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "잘못된 TLS 인증서 요청 모드입니다." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "TLS 인증서 요청 모드를 설정할 수 없습니다." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "새 TLS 컨텍스트를 초기화할 수 없습니다." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "LDAP 클라이언트 라이브러리에서 TLS를 사용할 수 없습니다." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "크기 제한을 설정할 수 없습니다." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "시간 제한을 설정할 수 없습니다." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "SASL 클라이언트를 초기화할 수 없습니다." + +#: ldapconnection.cpp:456 +#, 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 및 호환되는 클라이언트 라" +"이브러리와 함께 컴파일하거나, 배포판 패키지 관리자에게 문의하십시오." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "서버에 접근할 수 없습니다. 다시 설정하십시오." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "구분되는 이름" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP 작업 오류" diff --git a/po/lt/kio_ldap.po b/po/lt/kio_ldap.po new file mode 100644 index 0000000..423f970 --- /dev/null +++ b/po/lt/kio_ldap.po @@ -0,0 +1,67 @@ +# translation of kio_ldap.po to Lithuanian +# Donatas Glodenis , 2005. +# Tomas Straupis , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2011-06-23 14:28+0300\n" +"Last-Translator: Tomas Straupis \n" +"Language-Team: Lithuanian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Papildoma info:" + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP registravimasis" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sritis:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Neteisinga autorizacijos informacija." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP jungtis nutraukta." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldif tikrintojas nesuveikė." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Neteisingas LDIF failas eilutėje %1." diff --git a/po/lt/libkldap5.po b/po/lt/libkldap5.po new file mode 100644 index 0000000..1155ec4 --- /dev/null +++ b/po/lt/libkldap5.po @@ -0,0 +1,272 @@ +# translation of libkldap.po to Lithuanian +# This file is distributed under the same license as the libkldap package. +# Donatas Glodenis , 2007. +# Remigijus Jarmalavičius , 2011. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2011-09-25 13:12+0300\n" +"Last-Translator: Remigijus Jarmalavičius \n" +"Language-Team: Lithuanian \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atributas" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Vertė" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Naudotojas:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Prisijungimo DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Sritis:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Slaptažodis:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Mazgas:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Prievadas:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP versija:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Dydžio limitas:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Numatytas" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Laiko limitas:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek." + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Numatytas" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Puslapio dydis:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Be puslapiavimo" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Siųsti užklausą serveriui" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtras:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Saugumas" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Ne" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Patvirtinimas" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonimiškas" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Paprastas" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL mechanizmas:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP užklausa" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Nėra LDAP palaikymo..." + +#: ldapconnection.cpp:160 +#, kde-format +msgid "" +"SASL support is not available. Please recompile libkldap with the Cyrus-SASL " +"(or compatible) client libraries, or complain to your distribution packagers." +msgstr "" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "" + +#: ldapconnection.cpp:288 +#, 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] "" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Nepavyksta nustatyti dydžio limito." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Nepavyksta nustatyti laiko limito." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "" + +#: ldapconnection.cpp:456 +#, 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 "" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "" diff --git a/po/lv/kio_ldap.po b/po/lv/kio_ldap.po new file mode 100644 index 0000000..43d1042 --- /dev/null +++ b/po/lv/kio_ldap.po @@ -0,0 +1,68 @@ +# 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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-12-29 19:11+0200\n" +"Last-Translator: Viesturs Zarins \n" +"Language-Team: Latvian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Papildus informācija: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP pieteikšanās" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "vietne:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Nederīga autorizācijas informācija" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP pieslēgšanās atcelta." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldif analizators cieta neveiksmi." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Nederīga Ldif rinda failā %1." diff --git a/po/lv/libkldap5.po b/po/lv/libkldap5.po new file mode 100644 index 0000000..1bfb0a4 --- /dev/null +++ b/po/lv/libkldap5.po @@ -0,0 +1,283 @@ +# 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 , 2007, 2008. +# Viesturs Zariņš , 2009. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2009-06-01 20:03+0300\n" +"Last-Translator: Viesturs Zariņš \n" +"Language-Team: Latvian \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attribūts" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Vērtība" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Lietotājs:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Piesaistīt DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Realms:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Parole:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Serveris:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Ports:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP versija:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Izmēra ierobežojums:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Noklusētais" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Laika ierobežojums:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Noklusētais" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Lapas izmērs:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Bez lapošanas" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Apjautāt serveri" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtrs:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Drošība" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Nav" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autentificēšana" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonīms" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Vienkārša" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL mehānisms:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP pieprasījums" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Nav LDAP atbalsta..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Gadījās kļūda savienojuma inicializācijas fāzē." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Nizdevās uzstādīt protokola versiju uz %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Neizdodas inicializēt SASL klientu." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Nav pieejams TLS atbalsts LDAP klienta bibliotēkās." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Neizdodas iestatīt izmēra ierobežojumu." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Neizdodas izstādīt laika ierobežojumu." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Neizdodas inicializēt SASL klientu." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Neizdevās piekļūt serverim. Lūdzu konfigurējiet to." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Identifikācijas nosaukums" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP operācijas kļūda" diff --git a/po/mr/kio_ldap.po b/po/mr/kio_ldap.po new file mode 100644 index 0000000..5ef054f --- /dev/null +++ b/po/mr/kio_ldap.po @@ -0,0 +1,62 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Chetan Khona , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2013-03-13 15:24+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" + +#: kio_ldap.cpp:179 +#, kde-format +msgid "" +"LDAP server returned the error: %1 %2\n" +"The LDAP URL was: %3" +msgstr "" + +#: kio_ldap.cpp:331 +#, kde-format +msgid "LDAP Login" +msgstr "एलडीएपी प्रवेश" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "साइट :" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "अवैध प्रमाणीकरण माहिती." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "" diff --git a/po/mr/libkldap5.po b/po/mr/libkldap5.po new file mode 100644 index 0000000..5834310 --- /dev/null +++ b/po/mr/libkldap5.po @@ -0,0 +1,272 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Chetan Khona , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2013-03-13 15:17+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "विशेषता" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "मूल्य" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "वापरकर्ता:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "बाइंड डीएन :" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "रीयल्म :" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "गुप्तशब्द :" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "यजमान :" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "पोर्ट :" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "एलडीएपी आवृत्ती :" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "आकार मर्यादा :" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "मूलभूत" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "वेळ मर्यादा :" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " सेकंद" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "मूलभूत" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "पान आकार :" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "पेजिंग नाही" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "प्रश्न सर्व्हर" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "गाळणी :" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "सुरक्षा" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "नाही" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "टीएलएस" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "अधिप्रमाणन" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "निनावी" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "साधी" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "एसएएसएल" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "एसएएसएल मेकेनिज़्म :" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "एलडीएपी प्रश्न" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "" + +#: ldapconnection.cpp:160 +#, kde-format +msgid "" +"SASL support is not available. Please recompile libkldap with the Cyrus-SASL " +"(or compatible) client libraries, or complain to your distribution packagers." +msgstr "" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "" + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "" +msgstr[1] "" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "" + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "" + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "" + +#: ldapconnection.cpp:456 +#, 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 "" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "" + +#~ msgid "LDAP Operations error" +#~ msgstr "एलडीएपी ऑपरेशन त्रुटि" diff --git a/po/nb/kio_ldap.po b/po/nb/kio_ldap.po new file mode 100644 index 0000000..379c53f --- /dev/null +++ b/po/nb/kio_ldap.po @@ -0,0 +1,68 @@ +# Translation of kio_ldap to Norwegian Bokmål +# +# Nils Kristian Tomren , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-10-07 15:46+0200\n" +"Last-Translator: MagicPO 0.3 (automated)\n" +"Language-Team: Norwegian Bokmål \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Ekstra informasjon:" + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP innlogging" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "side:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Ugyldig autentiseringsinformasjon" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP-tilkobling avbrutt." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldiffortolkeren feilet." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Ugyldig Ldif-fil på linje %1." diff --git a/po/nb/libkldap5.po b/po/nb/libkldap5.po new file mode 100644 index 0000000..e05daf3 --- /dev/null +++ b/po/nb/libkldap5.po @@ -0,0 +1,277 @@ +# Translation of libkldap5 to Norwegian Bokmål +# +# Bjørn Steensrud , 2007, 2008, 2009, 2010, 2014. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2014-09-23 22:05+0200\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attributt" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Verdi" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Bruker:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Område:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Passord:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Vert:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP-versjon:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Størrelsesgrense:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Standard" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Tidsgrense:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Standard" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Sidestørrelse:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Ingen sideveksling" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Spør tjener" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Sikkerhet" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Ingen" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autentisering" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonym" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Enkel" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL-mekanisme:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP-spørring" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Ukjent feil ved kobling til %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Ingen LDAP-støtte" + +#: ldapconnection.cpp:160 +#, kde-format +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-støtte er ikke tilgjengelig. libkldap bør kompileres på nytt med Cyrus " +"SASL (eller kompatible) klientbiblioteker, eller klag til dem som har pakket " +"distribusjonen." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Det oppsto en feil mens tilkoblingen ble klargjort." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Klarte ikke sette protokollversjon til %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "TLS-støtte finnes ikke i LDAP klientbibliotekene." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Kan ikke sette størrelsesgrense." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Kan ikke sette tidsgrense." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Kan ikke klargjøre SASL-klienten." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Får ikke tilgang til tjeneren. Endre oppsettet på den." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Entydig navn" diff --git a/po/nds/kio_ldap.po b/po/nds/kio_ldap.po new file mode 100644 index 0000000..d16d3cb --- /dev/null +++ b/po/nds/kio_ldap.po @@ -0,0 +1,65 @@ +# Translation of kio_ldap.po to Low Saxon +# +# Sönke Dibbern , 2005, 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-03-25 23:59+0200\n" +"Last-Translator: Sönke Dibbern \n" +"Language-Team: Low Saxon \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Mehr Informatschonen: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP-Anmellen" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "Server:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Anmell-Informatschonen gellt nich" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP-Verbinnen afbraken." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "De LDIF-Inleser hett keen Spood hatt." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "LDIF-Datei gellt nich, Reeg %1" diff --git a/po/nds/libkldap5.po b/po/nds/libkldap5.po new file mode 100644 index 0000000..d9da577 --- /dev/null +++ b/po/nds/libkldap5.po @@ -0,0 +1,282 @@ +# 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 , 2007, 2008, 2009, 2014. +# Manfred Wiese , 2009, 2010, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2014-06-05 16:27+0200\n" +"Last-Translator: Sönke Dibbern \n" +"Language-Team: Low Saxon \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attribut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Weert" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Bruker:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Anbinn-DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Rebeet:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Passwoort:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Reekner:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP-Verschoon:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Gröttgrenz:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Standard" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Tietgrenz:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Standard" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Siedengrött:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Nich opspleten" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Anfraag-Server" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Sekerheit" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Keen" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Identiteetprööv" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonüm" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Eenfach" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL-Metood:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP-Anfraag" + +#: ldapconfigwidget.cpp:375 +#, 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" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "LDAP warrt nich ünnerstütt..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Dat geev en Fehler bi't Torechtmaken vun't Tokoppeln." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Protokoll-Verschoon lett sik nich op %1 setten." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "De SASL-Client lett sik nich torechtmaken." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "De LDAP-Clientbibliotheken ünnerstütt keen TLS." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Gröttgrenz lett sik nich fastleggen." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Tietgrenz lett sik nich fastleggen." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "De SASL-Client lett sik nich torechtmaken." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Keen Togriep op Server. Bitte nieg instellen." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Kennnaam (DN)" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP-Akschoonfehler" diff --git a/po/nl/docs/kioslave5/ldap/index.docbook b/po/nl/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..140b729 --- /dev/null +++ b/po/nl/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,40 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; +&Otto.Bruggeman;&Rinse.Devries; + + + +ldap is het lichtgewicht directory acces protocol. Het biedt toegang tot een X.500-directory of naar een alleenstaande LDAP-server. + +U kunt deze io-slave als volgt gebruiken: + +ldap://host:poort/ou=People,o=waar,c=de??sub voor een zoekopdracht in een sub-boomstructuur + +of ldap://host:poort/cn=MM,ou=People,o=waar,c=de??basis voor een complete boomstructuur. + +
diff --git a/po/nl/kio_ldap.po b/po/nl/kio_ldap.po new file mode 100644 index 0000000..01d9246 --- /dev/null +++ b/po/nl/kio_ldap.po @@ -0,0 +1,66 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2016-04-04 12:51+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Aanvullende informatie: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP-login" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "site:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Ongeldige autorisatie-informatie." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP-verbinding geannuleerd." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "De LDIF-ontleding is mislukt." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Ongeldig LDIF-bestand op regel %1." diff --git a/po/nl/libkldap5.po b/po/nl/libkldap5.po new file mode 100644 index 0000000..f746dc5 --- /dev/null +++ b/po/nl/libkldap5.po @@ -0,0 +1,472 @@ +# 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 , 2007. +# Rinse de Vries , 2007. +# Antoon Tolboom , 2008. +# Freek de Kruijf , 2010, 2014, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-03-23 15:24+0100\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \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 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attribuut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Waarde" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Gebruiker:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Domein:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Wachtwoord:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Hostnaam:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Poort:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP-versie:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Maximale grootte:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Standaard" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Tijdslimiet:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sec" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Standaard" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Pagegrootte:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Geen paging" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Queryserver" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Beveiliging" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Nee" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Authenticatie" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anoniem" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Eenvoudig" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL-mechanisme:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Server controleren" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP-query" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Onbekende fout bij verbinden met %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Geen LDAP-ondersteuning..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Er deed zich een fout voor bij het opzetten van de verbinding." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Kan de protocolversie niet instellen op %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Kon CA certificaatbestand niet instellen." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Ongeldige TLS vereiste certificaatmodus." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Kon TLS vereiste certificaatmodus niet instellen." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Kon nieuwe TLS-context niet initialiseren." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Kan de maximale grootte niet instellen." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Kan de tijdslimiet niet instellen." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Kan de SASL-client niet initialiseren." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Kan de server niet benaderen. Doe een herconfiguratie." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Unieke naam" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP afhandelingsfout" + +#~ msgid "Add Host" +#~ msgstr "Host toevoegen" + +#~ 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" + +#~ msgid "Edit Host" +#~ msgstr "Host bewerken" + +#~ msgid "LDAP Servers" +#~ msgstr "LDAP-servers" + +#~ msgid "Check all servers that should be used:" +#~ msgstr "Selecteer alle servers die zouden moeten worden gebruikt:" + +#~ msgid "&Add Host..." +#~ msgstr "Host toevoege&n..." + +#~ msgid "&Edit Host..." +#~ msgstr "Host b&ewerken..." + +#~ msgid "&Remove Host" +#~ msgstr "Host ve&rwijderen" + +#~ 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" diff --git a/po/nn/kio_ldap.po b/po/nn/kio_ldap.po new file mode 100644 index 0000000..769d310 --- /dev/null +++ b/po/nn/kio_ldap.po @@ -0,0 +1,70 @@ +# Translation of kio_ldap to Norwegian Nynorsk +# +# Gaute Hvoslef Kvalnes , 2004, 2005. +# Eirik U. Birkeland , 2008. +# Karl Ove Hufthammer , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2008-08-03 19:24+0200\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Meir informasjon: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP-brukarnamn" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "stad:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Ugyldige autorisasjonsopplysningar." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP-tilkoplinga vart avbroten." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "LDIF-tolkaren mislukkast." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Ugyldig LDIF-fil i linje %1." diff --git a/po/nn/libkldap5.po b/po/nn/libkldap5.po new file mode 100644 index 0000000..8ccc819 --- /dev/null +++ b/po/nn/libkldap5.po @@ -0,0 +1,278 @@ +# Translation of libkldap5 to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2008. +# Eirik U. Birkeland , 2008, 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2010-04-20 22:07+0200\n" +"Last-Translator: Eirik U. Birkeland \n" +"Language-Team: Norwegian Nynorsk \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 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Attributt" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Verdi" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Brukar:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind-DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Område:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Passord:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Vert:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP-versjon:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Storleiksgrense:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Standard" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Tidsgrense:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Standard" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Sidestorleik:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Inga paginering" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Spør tenar" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Tryggleik" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Nei" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autentisering" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonym" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Enkel" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL-mekanisme:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP-spørjing" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Inga støtte for LDAP …" + +#: ldapconnection.cpp:160 +#, kde-format +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-støtte er ikkje tilgjengeleg. Kompiler libkldap på nytt med " +"klientbiblioteka Cyrus SASL (eller tilsvarande), eller klag til dei som har " +"pakka distribusjonen." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Det oppstod ein feil under oppstart av tilkoplinga." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Klarar ikkje velja protokollversjon %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "TLS-støtte er ikkje tilgjengeleg i LDAP-klientbiblioteka." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Klarar ikkje velja storleiksgrense." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Klarar ikkje velja tidsgrense." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Klarar ikkje starta SASL-klienten." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Får ikkje tilgang til tenaren. Prøv å setja han opp på nytt." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Eintydig namn (DN)" diff --git a/po/pa/kio_ldap.po b/po/pa/kio_ldap.po new file mode 100644 index 0000000..ef0cd14 --- /dev/null +++ b/po/pa/kio_ldap.po @@ -0,0 +1,69 @@ +# translation of kio_ldap.po to Punjabi +# Amanpreet Singh Alam , 2004, 2005. +# Amanpreet Singh Brar , 2005. +# AP S Alam , 2007. +# A S Alam , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-08-06 21:07+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"ਹੋਰ ਜਾਣਕਾਰੀ: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP ਲਾਗਇਨ" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "ਸਾਇਟ:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "ਗਲਤ ਪਰਮਾਣਕਤਾ ਜਾਣਕਾਰੀ ਹੈ।" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP ਕੁਨੈਕਸ਼ਨ ਰੱਦ ਕੀਤਾ ਗਿਆ।" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldif ਪਾਰਸਰ ਅਸਫ਼ਲ ਹੈ।" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "%1 ਲਾਇਨ ਵਿੱਚ ਗਲਤ Ldif ਫਾਇਲ ਹੈ।" diff --git a/po/pa/libkldap5.po b/po/pa/libkldap5.po new file mode 100644 index 0000000..2514e3c --- /dev/null +++ b/po/pa/libkldap5.po @@ -0,0 +1,294 @@ +# 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 , 2007, 2009. +# ASB , 2007. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2009-01-20 09:03+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "ਗੁਣ" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "ਮੁੱਲ" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "ਯੂਜ਼ਰ:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "ਰੀਲੇਅ:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "ਪਾਸਵਰਡ:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "ਹੋਸਟ:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "ਪੋਰਟ:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP ਵਰਜਨ:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "ਆਕਾਰ ਲਿਮਟ:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "ਡਿਫਾਲਟ" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "ਸਮਾਂ ਲਿਮਟ:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " ਸਕਿੰਟ" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "ਡਿਫਾਲਟ" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "ਸਫ਼ਾ ਆਕਾਰ:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "ਪੇਜ਼ਿੰਗ ਨਹੀਂ" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "ਕਿਊਰੀ ਸਰਵਰ" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "ਫਿਲਟਰ:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "ਸੁਰੱਖਿਆ" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "ਨਹੀਂ" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "ਪਰਮਾਣਕਿਤਾ" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "ਅਗਿਆਤ" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "ਸੈਂਪਲ" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL ਢੰਗ:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP ਕਿਊਰੀ" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "ਕੋਈ LDAP ਸਹਿਯੋਗ ਨਹੀਂ..." + +#: ldapconnection.cpp:160 +#, kde-format +msgid "" +"SASL support is not available. Please recompile libkldap with the Cyrus-SASL " +"(or compatible) client libraries, or complain to your distribution packagers." +msgstr "" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "" + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "" +msgstr[1] "" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "" + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "" + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "" + +#: ldapconnection.cpp:456 +#, 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 "" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "ਹੋਸਟਹੋਸਟਹੋਸਟਹੋਸਟਹੋਸਟ" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP ਓਪਰੇਸ਼ਨ ਗਲਤੀ" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "ਹੋਸਟ:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Server Settings" +#~ msgstr "LDAP ਵਰਜਨ:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "LDAP ਵਰਜਨ:" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "ਯੂਜ਼ਰ:" diff --git a/po/pl/kio_ldap.po b/po/pl/kio_ldap.po new file mode 100644 index 0000000..33e702e --- /dev/null +++ b/po/pl/kio_ldap.po @@ -0,0 +1,66 @@ +# translation of kio_ldap.po to +# Krzysztof Lichota , 2004, 2005. +# Marta Rybczyńska , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-11-24 20:41+0100\n" +"Last-Translator: Marta Rybczyńska \n" +"Language-Team: \n" +"Language: pl\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==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: kio_ldap.cpp:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Dodatkowe informacje: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Logowanie LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "serwer:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Błędne dane autoryzacji." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Połączenie LDAP anulowane." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Analizator składni Ldif zakończył pracę z błędem." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Błędny plik Ldif w wierszu %1." diff --git a/po/pl/libkldap5.po b/po/pl/libkldap5.po new file mode 100644 index 0000000..69a7702 --- /dev/null +++ b/po/pl/libkldap5.po @@ -0,0 +1,280 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Łukasz Wojniłowicz , 2014, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-05-03 06:33+0100\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \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 2.0\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atrybut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Wartość" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Użytkownik:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Powiązane DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Dziedzina:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Hasło:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Gospodarz:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Wersja LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Ograniczenie rozmiaru:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Domyślny" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Ograniczenie czasowe:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek." + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Domyślne" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Rozmiar strony:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Bez stronicowania" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Serwer zapytań" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtr:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Bezpieczeństwo" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Nie" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Uwierzytelnianie" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonimowe" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Proste" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mechanizm SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Sprawdź serwer" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Zapytanie LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Nieznany błąd przy łączeniu do %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Brak obsługi LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Podczas fazy inicjacji połączenia nastąpił błąd." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Nie można ustawić wersji protokołu na %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Nie można ustawić pliku certyfikatu CA." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Nieprawidłowy tryb TLS żądania certyfikatu." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Nie można ustawić trybu TLS żądania certyfikatu." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Nie można zainicjować nowego kontekstu TLS." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Obsługa TLS jest niedostępna w bibliotekach klienta LDAP." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Nie można ustawić ograniczenia rozmiaru." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Nie można ustawić ograniczenia czasowego." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Nie można zainicjować klienta SASL." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Nie można uzyskać dostępu do serwera. Proszę ustawić go ponownie." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Wyróżniona nazwa (DN)" + +#~ msgid "LDAP Operations error" +#~ msgstr "Błąd operacji LDAP" diff --git a/po/pt/docs/kioslave5/ldap/index.docbook b/po/pt/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..b0b7365 --- /dev/null +++ b/po/pt/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,54 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; +JoséPires
zepires@gmail.com
Tradução
+
+
+ +O LDAP é o protocolo simples de acesso a directórios. Providencia o acesso a um directório de X.500 ou a um servidor de LDAP autónomo. + +Poderá usar o 'kioslave' de LDAP da seguinte maneira: + +ldap://maquina:porto/ou=Pessoas,o=onde,c=de??sub para uma pesquisa na sub-árvore. + +ou ldap://maquina:porto/cn=MM,ou=Pessoas,o=onde,c=de??base para um ramo completo. + +
diff --git a/po/pt/kio_ldap.po b/po/pt/kio_ldap.po new file mode 100644 index 0000000..14d11bd --- /dev/null +++ b/po/pt/kio_ldap.po @@ -0,0 +1,66 @@ +# 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 , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2016-04-04 11:45+0000\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Informação adicional: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Ligação LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "máquina:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Informação de autorização inválida." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "A ligação de LDAP foi cancelada." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "O processador de LDIF falhou." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "O ficheiro LDIF tem dados inválidos na linha %1." diff --git a/po/pt/libkldap5.po b/po/pt/libkldap5.po new file mode 100644 index 0000000..df47af6 --- /dev/null +++ b/po/pt/libkldap5.po @@ -0,0 +1,276 @@ +# 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 , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-03-22 12:54+0000\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atributo" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Utilizador:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "DN de ligação:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Reino:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Senha:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Máquina:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Porto:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Versão LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Limite de tamanho:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Predefinição" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Limite de tempo:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Predefinição" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Tamanho da página:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Sem paginação" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Procurar no Servidor" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtro:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Segurança" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Não" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autenticação" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anónimo" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Simples" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mecanismo SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Verificar o servidor" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Pesquisa LDAP" + +#: ldapconfigwidget.cpp:375 +#, 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" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Sem Suporte para LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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 para SASL não está disponível. Compile de novo a libkldap com as " +"bibliotecas-clientes do Cyrus-SASL (ou compatível), ou peça-o aos criadores " +"de pacotes da sua distribuição." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Ocorreu um erro na fase de inicialização da ligação." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Não é possível configurar a versão do protocolo como %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Não foi possível definir o ficheiro do certificado da AC." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "O modo do pedido de certificado TLS é inválido." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Não foi possível definir o modo de pedido de certificado TLS." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Não foi possível inicializar um novo contexto de TLS." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Não foi possível colocar limite de tamanho." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Não foi possível colocar limite de tempo." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Não é possível inicializar o cliente de SASL." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Não é possível aceder ao servidor. Reconfigure-o, por favor." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Nome Distinto" diff --git a/po/pt_BR/docs/kioslave5/ldap/index.docbook b/po/pt_BR/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..00895b0 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,68 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; +Lisiane Sztoltz
lisiane@conectiva.com.br
Tradução
André MarceloAlvarenga
andrealvarenga@gmx.net
Revisão da tradução
+
+
+ +O ldap é um protocolo de acesso a serviço de diretório, e fornece acesso a um diretório X.500, ou a um servidor LDAP independente. + +Você pode usar o kioslave do ldap da seguinte forma: + +ldap://máquina:porta/ou=People,o=onde,c=br??sub para uma consulta pela subárvore + +ou ldap://máquina:porta/cn=MM,ou=People,o=onde,c=br??base para uma ramificação completa. + +
diff --git a/po/pt_BR/kio_ldap.po b/po/pt_BR/kio_ldap.po new file mode 100644 index 0000000..6cc40ea --- /dev/null +++ b/po/pt_BR/kio_ldap.po @@ -0,0 +1,67 @@ +# 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 , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2016-04-04 23:22-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Informações adicionais: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Login do LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "site:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Informações de autorização inválidas." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Conexão LDAP cancelada." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "O analisador de Ldif falhou." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Arquivo Ldif inválido na linha %1." diff --git a/po/pt_BR/libkldap5.po b/po/pt_BR/libkldap5.po new file mode 100644 index 0000000..a24feca --- /dev/null +++ b/po/pt_BR/libkldap5.po @@ -0,0 +1,278 @@ +# 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 , 2007. +# André Marcelo Alvarenga , 2008, 2009, 2010, 2014, 2018. +# Luiz Fernando Ranghetti , 2010. +msgid "" +msgstr "" +"Project-Id-Version: libkldap5\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-08-04 23:29-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atributo" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Usuário:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Associar ND:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Domínio:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Senha:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Máquina:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Porta:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Versão LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Limite de tamanho:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Padrão" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Limite de tempo:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " s" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Padrão" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Tamanho da página:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Sem paginação" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "ND:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Procurar no servidor" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtro:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Segurança" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Não" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autenticação" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anônimo" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Simples" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mecanismo SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Verificar servidor" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Consulta LDAP" + +#: ldapconfigwidget.cpp:375 +#, 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" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Sem suporte ao LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Ocorreu um erro durante a fase de inicialização da conexão." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Não foi possível definir a versão do protocolo para %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Não foi possível definir o arquivo de certificado da AC." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "O modo da requisição de certificado TLS é inválido." + +#: ldapconnection.cpp:323 +#, 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." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Não foi possível inicializar um novo contexto de TLS." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Não foi possível definir o limite de tamanho." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Não foi possível definir o limite de tempo." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Não foi possível inicializar o cliente SASL." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Não foi possível acessar o servidor. Reconfigure-o." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Nome distinto" diff --git a/po/ro/kio_ldap.po b/po/ro/kio_ldap.po new file mode 100644 index 0000000..1033df7 --- /dev/null +++ b/po/ro/kio_ldap.po @@ -0,0 +1,67 @@ +# Traducerea kio_ldap.po în Română +# Claudiu Costin , 2004. +# Sergiu Bivol , 2008. +# translation of kio_ldap.po to Romanian +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2008-03-14 16:09+0200\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Română \n" +"Language: ro\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==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: kio_ldap.cpp:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Informație sulimentară:" + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Autentificare LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "sit:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Informații de autorizare eronate." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Conexiune LDAP revocată." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Analizorul LDIF a eșuat." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Fișier LDIF eronat la linia %1." diff --git a/po/ro/libkldap5.po b/po/ro/libkldap5.po new file mode 100644 index 0000000..ab003a9 --- /dev/null +++ b/po/ro/libkldap5.po @@ -0,0 +1,299 @@ +# 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 , 2008". +# Sergiu Bivol , 2009. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2009-01-05 10:56+0200\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \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" +"X-Generator: Lokalize 0.3\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atribut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Valoare" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Utilizator:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Domeniu:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Parolă:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Gazdă:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Versiune LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Limită dimensiune:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Implicită" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Limită de timp:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sec" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Implicită" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Dimensiune pagină:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Fără paginare" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Interoghează serverul" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtru:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Securitate" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Fără" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Autentificare" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonim" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Simplă" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mecanism SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Interogare LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Niciun suport LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +msgid "" +"SASL support is not available. Please recompile libkldap with the Cyrus-SASL " +"(or compatible) client libraries, or complain to your distribution packagers." +msgstr "" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Imposibil de stabilit versiunea protocolului la %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Imposibil de inițializat clientul SASL." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "" +"Suportul pentru TLS nu este disponibil în bibliotecile clientului LDAP." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Imposibil de stabilit limita de dimensiune." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Imposibil de stabilit limita de timp." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Imposibil de inițializat clientul SASL." + +#: ldapconnection.cpp:456 +#, 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 "" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "" + +#~ msgid "LDAP Operations error" +#~ msgstr "Eroare operații LDAP" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "Gazdă:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Server Settings" +#~ msgstr "Versiune LDAP:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "Versiune LDAP:" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "Utilizator:" diff --git a/po/ru/docs/kioslave5/ldap/index.docbook b/po/ru/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..c4263d1 --- /dev/null +++ b/po/ru/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,54 @@ + + + +]> + +
+ldap + + +&Lauri.Watts; &Lauri.Watts.mail; +
+
+
+ +ldap — это простой протокол доступа к каталогам (lightweight directory access protocol). Он предоставляет доступ к каталогу X.500 или серверу LDAP. + +Вы можете использовать этот протокол так: + +ldap://host:port/ou=People,o=where,c=de??sub (запрос поддерева) + +или так: ldap://host:port/cn=MM,ou=People,o=where,c=de??base (полная ветвь). + +
diff --git a/po/ru/kio_ldap.po b/po/ru/kio_ldap.po new file mode 100644 index 0000000..c45c350 --- /dev/null +++ b/po/ru/kio_ldap.po @@ -0,0 +1,83 @@ +# translation of kio_ldap.po into Russian +# +# Gregory Mokhin , 2005. +# Andrey Cherepanov , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2009-03-24 19:01+0300\n" +"Last-Translator: Andrey Cherepanov \n" +"Language-Team: Russian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Дополнительная информация: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Вход в LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "сайт:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Неверные данные для идентификации." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Подключение к LDAP прервано." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ошибка обработки файла LDIF." + +#: kio_ldap.cpp:713 +#, 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." diff --git a/po/ru/libkldap5.po b/po/ru/libkldap5.po new file mode 100644 index 0000000..77bdc85 --- /dev/null +++ b/po/ru/libkldap5.po @@ -0,0 +1,8741 @@ +# KDE3 - kdelibs/kdelibs.po Russian translation. +# Copyright (C) 2005, KDE Russian translation team. +# +# Denis Perchine , 2000. +# Gregory Mokhin , 2000, 2004, 2005. +# Albert R. Valiev , 2002. +# Leonid Kanter , 2002-2004, 2005. +# Nick Shafff , 2004. +# Andrey Cherepanov , 2005-2007. +# Nick Shaforostoff , 2006. +# Andrey Cherepanov , 2009. +# Alexander Potashev , 2011, 2014. +# Alexander Yavorsky , 2018. +msgid "" +msgstr "" +"Project-Id-Version: kdelibs\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-10-03 21:21+0300\n" +"Last-Translator: Alexander Yavorsky \n" +"Language-Team: Russian \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 2.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" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Атрибут" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Значение" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Пользователь:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Роль:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Пароль:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Адрес сервера:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Порт:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Версия LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Размер:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "По умолчанию" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Время:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " с" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "По умолчанию" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Размер страницы:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Нет страничного обмена" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Получить с сервера" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Фильтр:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Шифрование соединения" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Нет" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Идентификация" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Анонимно" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Простая" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Механизм SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Проверьте сервер" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Запрос LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Неизвестная ошибка при подключении к %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Нет поддержки LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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 (или " +"совместимыми) или попросите сделать это поставщика вашего дистрибутива." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Ошибка при установлении подключения." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Невозможно установить версию протокола %1." + +#: ldapconnection.cpp:288 +#, 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 секунду." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Не удалось установить файл сертификата удостоверяющего центра." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Неверный режим TLS, требуемый сертификатом." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Не удалось установить требуемый сертификатом режим TLS." + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Невозможно запустить клиент SASL." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Нет поддержки TLS в клиентских библиотеках LDAP." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Невозможно установить лимит размера." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Невозможно установить лимит времени." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Невозможно запустить клиент SASL." + +#: ldapconnection.cpp:456 +#, 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 (или " +"совместимыми) или попросите сделать это поставщика вашего дистрибутива." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Не удалось получить доступ к серверу, настройте его." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "DN" + +#~ msgid "LDAP Operations error" +#~ msgstr "Ошибка операции с LDAP" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "Адрес сервера:" + +#, 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 "Edit" +#~ msgid "Edit Host" +#~ msgstr "Правка" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "Версия LDAP:" + +#, fuzzy +#~| msgid "&Add..." +#~ msgid "&Add Host..." +#~ msgstr "&Добавить..." + +#, fuzzy +#~| msgid "&Edit..." +#~ msgid "&Edit Host..." +#~ msgstr "&Изменить..." + +#, fuzzy +#~| msgid "Remove List" +#~ msgid "&Remove Host" +#~ msgstr "Удалить список" + +#, 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 System Default, the application " +#~ "will honor your changes in the Control Center. All other choices will " +#~ "override that setting." +#~ msgstr "" +#~ "Выберите основной компонент редактирования текста, который вы хотите " +#~ "использовать с этим приложением. Если вы выберете По умолчанию, " +#~ "приложение будет соблюдать выбор, сделанный вами в Центре управления. Все " +#~ "остальные варианты будут более приоритетны, чем установленный в Центре " +#~ "управления параметр." + +#~ 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 "" +#~ "

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.

\n" +#~ "

If the word is not misspelled, you may add it to the dictionary by " +#~ "clicking Add to Dictionary. If you don't want to add the unknown " +#~ "word to the dictionary, but you want to leave it unchanged, click " +#~ "Ignore or Ignore All.

\n" +#~ "

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 Replace or " +#~ "Replace All.

\n" +#~ "
" +#~ msgstr "" +#~ "

Это слово считается \"неизвестным\", т.к. в текущем словаре его " +#~ "нет. Возможно это иностранное слово, или неологизм.

\n" +#~ "

Если вы уверены, что слово не содержит ошибок, вы можете его " +#~ "Добавить в словарь. Если вы не хотите это делать, просто нажмите " +#~ "Пропустить или Пропустить все.

\n" +#~ "

В противном случае, если слово содержит ошибку, выберите из списка " +#~ "подходящий вариант. Если такого не имеется, введите слово вручную и " +#~ "нажмите Заменить или Заменить все.

\n" +#~ "
" + +#~ msgid "misspelled" +#~ msgstr "ошибочно" + +#~ msgid "Unknown word" +#~ msgstr "Неизвестное слово" + +#~ msgid "&Language:" +#~ msgstr "&Язык:" + +#~ msgid "" +#~ "\n" +#~ "

Select the language of the document you are proofing here.

\n" +#~ "
" +#~ msgstr "" +#~ "\n" +#~ "

Выберите язык проверяемого документа.

\n" +#~ "
" + +#~ msgid "... the misspelled word shown in context ..." +#~ msgstr "...ошибочное слово показано в контексте ..." + +#~ msgid "Text excerpt showing the unknown word in its context." +#~ msgstr "Отрывок текста со словом, содержащим ошибку." + +#~ msgid "" +#~ "\n" +#~ "

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.

\n" +#~ "
" +#~ msgstr "" +#~ "\n" +#~ "

Здесь отображается контекст слова, содержащего ошибку. Если этого " +#~ "отрывка недостаточно, щёлкните по документу, прочтите большую часть " +#~ "текста и вернитесь в проверку орфографии.

\n" +#~ "
" + +#~ msgid "<< Add to Dictionary" +#~ msgstr "<< Добавить в словарь" + +#~ msgid "" +#~ "\n" +#~ "

The unknown word was detected and considered unknown because it is not " +#~ "included in the dictionary.
\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 " +#~ "Ignore or Ignore All instead.

\n" +#~ "
" +#~ msgstr "" +#~ "\n" +#~ "

Это слово считается \"неизвестным\", т.к. в текущем словаре его нет. " +#~ "Возможно это иностранное слово, или неологизм.
\n" +#~ "Щёлкните здесь если вы уверены, что слово не содержит ошибок и хотите " +#~ "добавить его в словарь, или же просто нажмите Пропустить или " +#~ "Пропустить все.

\n" +#~ "
" + +#~ msgid "R&eplace All" +#~ msgstr "Зам&енить все" + +#~ msgid "" +#~ "\n" +#~ "

Click here to replace all occurrences of the unknown text with the " +#~ "text in the edit box above (to the left).

\n" +#~ "
" +#~ msgstr "" +#~ "\n" +#~ "

Нажмите здесь чтобы заменить это слово во всём документе.

\n" +#~ "
" + +#~ msgid "Suggested Words" +#~ msgstr "Предлагаемые слова" + +#~ msgid "Suggestion List" +#~ msgstr "Предлагаемые варианты" + +#~ msgid "" +#~ "\n" +#~ "

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.

\n" +#~ "

To correct this word click Replace if you want to correct only " +#~ "this occurrence or Replace All if you want to correct all " +#~ "occurrences.

\n" +#~ "
" +#~ msgstr "" +#~ "\n" +#~ "

Если слово содержит ошибку, проверьте наличие правильного варианта в " +#~ "предлагаемом списке. Если его там не будет, вы можете ввести правильный " +#~ "вариант вручную.

\n" +#~ "

Чтобы исправить это слово только в этом месте нажмите Заменить, " +#~ "а чтобы исправить его во всём документе, воспользуйтесь Заменить все.

\n" +#~ "
" + +#~ msgid "&Replace" +#~ msgstr "&Заменить" + +#~ msgid "" +#~ "\n" +#~ "

Click here to replace this occurrence of the unknown text with the " +#~ "text in the edit box above (to the left).

\n" +#~ "
" +#~ msgstr "" +#~ "\n" +#~ "

Нажмите здесь чтобы заменить слово в данном случае.

\n" +#~ "
" + +#~ msgid "Replace &with:" +#~ msgstr "Заменить &на:" + +#~ msgid "" +#~ "\n" +#~ "

If the unknown word is misspelled, you should type the correction for " +#~ "your misspelled word here or select it from the list below.

\n" +#~ "

You can then click Replace if you want to correct only this " +#~ "occurrence of the word or Replace All if you want to correct all " +#~ "occurrences.

\n" +#~ "
" +#~ msgstr "" +#~ "\n" +#~ "

Введите здесь правильный вариант написания слова или выберите го из " +#~ "списка.

\n" +#~ "

Затем нажмите Заменить либо Заменить все.

\n" +#~ "
" + +#~ msgid "&Ignore" +#~ msgstr "&Игнорировать" + +#~ msgid "" +#~ "\n" +#~ "

Click here to let this occurrence of the unknown word remain as is.\n" +#~ "

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.

\n" +#~ "
" +#~ msgstr "" +#~ "\n" +#~ "

Нажмите, чтобы оставить это неизвестное слово \"как есть\".

\n" +#~ "

Это может быть полезно, если слово является именем, сокращением, " +#~ "иностранным словом или любым другим словом, которое вы хотите " +#~ "использовать, но не хотите добавлять в словарь.

\n" +#~ "
" + +#~ msgid "I&gnore All" +#~ msgstr "Игнорировать вез&де" + +#~ msgid "" +#~ "\n" +#~ "

Click here to let all occurrences of the unknown word remain as they " +#~ "are.

\n" +#~ "

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.

\n" +#~ "
" +#~ msgstr "" +#~ "\n" +#~ "

Нажмите, чтобы оставить все включения этого неизвестного слова \"как " +#~ "есть\".

\n" +#~ "

Это может быть полезно, если слово является именем, сокращением, " +#~ "иностранным словом или любым другим словом, которое вы хотите " +#~ "использовать, но не хотите добавлять в словарь.

\n" +#~ "
" + +#~ 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 %1 not found! Make sure the old address book is " +#~ "located there and you have read permission for this file." +#~ msgstr "" +#~ "Файл адресной книги %1 не найден. Проверьте, расположена ли по " +#~ "указанному пути старая адресная книга и есть ли права доступа к ней." + +#~ 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 "" +#~ msgstr "<неизв. сокет>" + +#~ msgid "" +#~ msgstr "<нет>" + +#~ msgid "" +#~ "_: 1: hostname, 2: port number\n" +#~ "%1 port %2" +#~ msgstr "порт %2 на %1" + +#~ msgid "" +#~ msgstr "<пустой Unix-сокет>" + +#~ msgid "Dr. Klash' Accelerator Diagnosis" +#~ msgstr "Диагностика акселераторов имени от Dr. Klash" + +#~ msgid "&Disable automatic checking" +#~ msgstr "&Отключить автоматическую проверку" + +#~ msgid "

Accelerators changed

" +#~ msgstr "

Акселераторы изменены

" + +#~ msgid "

Accelerators removed

" +#~ msgstr "

Акселераторы удалены

" + +#~ msgid "

Accelerators added (just for your info)

" +#~ msgstr "

Акселераторы добавлены

" + +#~ 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 "" +#~ "_: replace this with information about your translation team\n" +#~ "

KDE is translated into many languages thanks to the work of the " +#~ "translation teams all over the world.

For more information on KDE " +#~ "internationalization visit http://l10n." +#~ "kde.org

" +#~ msgstr "" +#~ "

Графическая среда KDE переведена на многие языки благодаря работе " +#~ "команд переводчиков в разных странах.

Для более подробных сведений " +#~ "о переводе KDE зайдите на l10n.kde.org, а также на www.kde.ru. Там же вы " +#~ "сможете узнать о работе команды, переводившей KDE на русский, и, " +#~ "возможно, сами захотите участвовать в этой работе.

" + +#~ 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 0x%1, belonging to %2 <" +#~ "%3>." +#~ msgstr "" +#~ "Ресурс был подписан ключом 0x%1, принадлежащим %2 <%3>." + +#~ msgid "" +#~ "There is a problem with the resource file you have downloaded. The " +#~ "errors are :%1
%2

Installation of the resource is not " +#~ "recommended.

Do you want to proceed with the installation?
" +#~ msgstr "" +#~ "С загруженным вами файлом ресурсов имеются следующие проблемы :%1
%2

Установка ресурса не рекомендуется." +#~ "

Продолжить установку?
" + +#~ msgid "Problematic Resource File" +#~ msgstr "Проблематичный файл ресурса" + +#~ msgid "%1

Press OK to install it.
" +#~ msgstr "%1

Нажмите OK, чтобы установить его.
" + +#~ 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 "" +#~ "Cannot start gpg and retrieve the available keys. Make sure " +#~ "that gpg is installed, otherwise verification of downloaded " +#~ "resources will not be possible." +#~ msgstr "" +#~ "Не удаётся запустить gpg и получить все доступные ключи. " +#~ "Убедитесь, что программа gpg установлена, иначе верификация " +#~ "загруженных ресурсов будет невозможна." + +#~ msgid "" +#~ "Enter passphrase for key 0x%1, belonging to
%2<%3>" +#~ ":
" +#~ msgstr "" +#~ "Введите ключевую фразу для ключа 0x%1, принадлежащего
" +#~ "%2<%3>:
" + +#~ msgid "" +#~ "Cannot start gpg and check the validity of the file. Make sure " +#~ "that gpg is installed, otherwise verification of downloaded " +#~ "resources will not be possible." +#~ msgstr "" +#~ "Не удаётся запустить gpg и проверить целостность файла. " +#~ "Убедитесь, что программа gpg установлена, иначе верификация " +#~ "загруженных ресурсов будет невозможна." + +#~ msgid "Select Signing Key" +#~ msgstr "Выберите ключ для подписи" + +#~ msgid "Key used for signing:" +#~ msgstr "Ключ, использовавшийся для подписи:" + +#~ msgid "" +#~ "Cannot start gpg and sign the file. Make sure that gpg " +#~ "is installed, otherwise signing of the resources will not be possible." +#~ msgstr "" +#~ "Не удаётся запустить gpg и подписать файл. Убедитесь, что " +#~ "gpg установлена, иначе подписывание ресурсов будет невозможно." + +#~ 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 "" +#~ "Здесь показан список комбинаций клавиш, т.е. соответствий между " +#~ "действиями (например, 'Копировать'), приведёнными в левой колонке, и " +#~ "клавиш или их сочетаний (например, 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 http://bugs.kde.org to " +#~ "report bugs.\n" +#~ msgstr "" +#~ "Используйте http://bugs.kde.org для " +#~ "сообщения об ошибках.\n" + +#~ msgid "Please report bugs to %2.\n" +#~ msgstr "" +#~ "Используйте %2 для сообщения об ошибках.\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
fixed or relative
to environment" +#~ msgstr "" +#~ "Размер шрифта
фиксированный или относительный
для " +#~ "окружения" + +#~ 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" +#~ "%2
Unicode code point: U+" +#~ "%3
(In decimal: %4)
(Character: %5)
" +#~ msgstr "" +#~ "%2
Юникод: U+" +#~ "%3
(десятичный: %4)
(Символ: %5)
" + +#~ 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 K Desktop Environment is written and maintained by the KDE " +#~ "Team, a world-wide network of software engineers committed to Free Software " +#~ "development.

No single group, company or organization controls the " +#~ "KDE source code. Everyone is welcome to contribute to KDE.

Visit " +#~ "http://www.kde.org for more " +#~ "information on the KDE project. " +#~ msgstr "" +#~ "Среда KDE написана и развивается командой KDE, мировым сообществом " +#~ "программистов, посвящающих себя разработке свободного программного обеспечения." +#~ "

Не существует группы или организации, держащей под контролем " +#~ "исходные тексты KDE. Мы будем рады каждому, кто захочет внести свой вклад " +#~ "в развитие KDE.

Для того чтобы больше узнать о проекте KDE, " +#~ "зайдите на сайт http://www.kde.org/. " + +#~ msgid "" +#~ "Software can always be improved, and the KDE Team is ready to do so. " +#~ "However, you - the user - must tell us when something does not work as " +#~ "expected or could be done better.

The K Desktop Environment has a " +#~ "bug tracking system. Visit http://bugs." +#~ "kde.org or use the \"Report Bug...\" dialog from the \"Help\" menu to " +#~ "report bugs.

If you have a suggestion for improvement then you are " +#~ "welcome to use the bug tracking system to register your wish. Make sure " +#~ "you use the severity called \"Wishlist\"." +#~ msgstr "" +#~ "Программное обеспечение всегда можно улучшить, и команда KDE готова этим " +#~ "заниматься. Однако для этого надо, чтобы вы - пользователь - сообщили нам " +#~ "о том, что не соответствует вашим ожиданиям, и что можно было бы улучшить." +#~ "

В рамках проекта KDE создана система учёта ошибок и пожеланий. " +#~ "Для того чтобы сообщить об ошибке, зайдите на сайт http://bugs.kde.org/ или отправьте сообщение по " +#~ "электронной почте, используя пункт \"Сообщить об ошибке...\" из меню " +#~ "\"Справка\" содержащего ошибку приложения. Это следует делать по-" +#~ "английски.

Ваши пожелания можно зарегистрировать тем же способом. " +#~ "При регистрации пожеланий не забудьте установить уровень важности " +#~ "\"Пожелание\".

Для связи с русской командой KDE используйте " +#~ "рассылку kde-russian@lists.kde.ru." + +#~ 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!

Visit http://www.kde." +#~ "org/jobs/ for information on some projects in which you can " +#~ "participate.

If you need more information or documentation, then a " +#~ "visit to http://developer.kde.org will provide you with what you need." +#~ msgstr "" +#~ "Для того чтобы включиться в разработку KDE, не обязательно быть " +#~ "программистом. Вы можете помочь в переводе KDE на родной язык, создавать " +#~ "графику, стили, звуки, улучшать документацию - то есть тем, чем вы сами " +#~ "хотите заниматься.

Список проектов, в которых вы могли бы принять " +#~ "участие, приведён на сайте
http://" +#~ "www.kde.org/jobs/. Вполне возможно, какой-то из них вас заинтересует." +#~ "

Более подробные сведения и документацию можно найти на сайте http://developer.kde.org/." + +#~ msgid "" +#~ "KDE is available free of charge, but making it is not free.

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 http://www.kde-ev.org for information on the KDE e.V.

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 http://www.kde.org/support/.

Thank you " +#~ "very much in advance for your support." +#~ msgstr "" +#~ "Среда KDE распространяется бесплатно, но её создание требует затрат." +#~ "

Поэтому команда KDE основала Ассоциацию KDE, некоммерческую " +#~ "организацию, которая зарегистрирована в Тюбингене, Германия. Ассоциация " +#~ "KDE представляет проект KDE в правовом и финансовом аспектах. Посетите http://www.kde.org/kde-ev/ для " +#~ "получения более подробной информации об Ассоциации KDE.

Команда " +#~ "KDE нуждается в финансовой поддержке. Большая часть средств используется " +#~ "для возмещения расходов участников проекта, которые они несут при " +#~ "разработке KDE. Вы можете поддержать KDE финансовым пожертвованием, " +#~ "которое может быть внесено одним из способов, описанных на
http://www.kde.org/support/." +#~ "

Заранее благодарим за поддержку!" + +#~ 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 Apply, the settings will be handed over to the " +#~ "program, but the dialog will not be closed.\n" +#~ "Use this to try different settings." +#~ msgstr "" +#~ "При нажатии кнопки Применить параметры будут переданы в программу, " +#~ "но диалог не будет закрыт.\n" +#~ "Благодаря этому вы можете попробовать различные варианты настройки." + +#~ msgid "Administrator &Mode..." +#~ msgstr "&Режим администратора..." + +#~ msgid "Enter Administrator Mode" +#~ msgstr "Вход с правами администратора" + +#~ msgid "" +#~ "When clicking Administrator Mode you will be prompted for the " +#~ "administrator (root) password in order to make changes which require root " +#~ "privileges." +#~ msgstr "" +#~ "При нажатии кнопки Режим администратора будет запрошен пароль " +#~ "администратора (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 "" +#~ "Not Defined
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 send us your own \"What's This?\" help for it." +#~ msgstr "" +#~ "Нет данных
Справка для этого элемента отсутствует. Вы можете " +#~ "помочь в написании этой справки и
отправить " +#~ "нам текст справки \"Что это?\" для данного элемента." + +#~ 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 "" +#~ msgstr "<Точка вставки>" + +#~ msgid "" +#~ 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

Shows the menubar again after it has been hidden" +#~ msgstr "Показать меню

Показать меню снова после того, как оно было скрыто" + +#~ msgid "Hide &Menubar" +#~ msgstr "Скрыть &меню" + +#~ msgid "" +#~ "Hide Menubar

Hide the menubar. You can usually get it back using the " +#~ "right mouse button inside the window itself." +#~ msgstr "" +#~ "Скрыть меню

Скрыть панель меню. Обычно его можно вернуть, нажав правую " +#~ "кнопку внутри окна." + +#~ msgid "Show St&atusbar" +#~ msgstr "Показывать строку &состояния" + +#~ msgid "" +#~ "Show Statusbar

Shows the statusbar, which is the bar at the bottom of " +#~ "the window used for status information." +#~ msgstr "" +#~ "Показывать строку состояния

Строка состояния - это полоса в нижней " +#~ "части окна, в которой выводится информация и состоянии приложения." + +#~ msgid "Hide St&atusbar" +#~ msgstr "Скрыть строку &состояния" + +#~ msgid "" +#~ "Hide Statusbar

Hides the statusbar, which is the bar at the bottom of " +#~ "the window used for status information." +#~ msgstr "" +#~ "Скрыть строку состояния

Строка состояния - это полоса в нижней части " +#~ "окна, в которой выводится информация и состоянии приложения." + +#~ 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 OK button, all changes\n" +#~ "you made will be used to proceed." +#~ msgstr "" +#~ "При нажатии кнопки OK будут \n" +#~ "применены все внесённые изменения." + +#~ msgid "Accept settings" +#~ msgstr "Применить" + +#~ msgid "" +#~ "When clicking Apply, 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 "" +#~ "При нажатии кнопки Применить параметры будут\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 "" +#~ "

You chose the severity Critical. Please note that this severity " +#~ "is intended only for bugs that

  • break unrelated software on the " +#~ "system (or the whole system)
  • cause serious data loss
  • introduce a security hole on the system where the affected package " +#~ "is installed
\n" +#~ "

Does the bug you are reporting cause any of the above damage? If it " +#~ "does not, please select a lower severity. Thank you!

" +#~ msgstr "" +#~ "

Выбран уровень ошибки Критическая. Этот уровень подразумевает, " +#~ "что ошибка

  • может вызвать сбой в работе других программ или " +#~ "системы в целом
  • привести к порче и утрате данных
  • нарушить " +#~ "безопасность системы, если установлен данный пакет
\n" +#~ "

Является ли ошибка, о которой вы хотите сообщить, настолько серьёзной? " +#~ "Если нет, выберите другой, менее высокий уровень ошибки.

" + +#~ msgid "" +#~ "

You chose the severity Grave. Please note that this severity is " +#~ "intended only for bugs that

  • make the package in question " +#~ "unusable or mostly so
  • cause data loss
  • introduce a " +#~ "security hole allowing access to the accounts of users who use the " +#~ "affected package
\n" +#~ "

Does the bug you are reporting cause any of the above damage? If it " +#~ "does not, please select a lower severity. Thank you!

" +#~ msgstr "" +#~ "

Вы выбрали уровень ошибки Опасная. Этот уровень подразумевает, " +#~ "что ошибка

  • может вызвать неисправимый сбой в работе данного " +#~ "пакета
  • привести к утрате данных
  • нарушить безопасность " +#~ "системы и открыть доступ к файлам пользователей, установивших данный " +#~ "пакет
\n" +#~ "

Является ли ошибка, о которой вы хотите сообщить, настолько серьёзной? " +#~ "Если нет, выберите другой, менее высокий уровень ошибки.

" + +#~ 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 "Are you sure you want to quit %1?" +#~ msgstr "Вы действительно хотите выйти из %1'?" + +#~ 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 "" +#~ "

'Print images'

If this checkbox is enabled, " +#~ "images contained in the HTML page will be printed. Printing may take " +#~ "longer and use more ink or toner.

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.

" +#~ msgstr "" +#~ "

'Печать изображений'

Если этот флажок " +#~ "включен, изображения на веб-странице будут распечатаны вместе с текстом." +#~ "Однако печататься страница с ними будет больше и будет использовано " +#~ "больше чернил или тонера.

Если флажок выключен, будет распечатан " +#~ "только текст веб-страницы. В этом случае печать закончиться быстрее и вы " +#~ "потратите меньше чернил или тонера.

" + +#~ msgid "" +#~ "

'Print header'

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.

If this checkbox is disabled, " +#~ "the printout of the HTML document will not contain such a header line. " +#~ msgstr "" +#~ "

'Печатать заголовок'

Если этот параметр " +#~ "включен, на каждой странице распечатки документа в формате HTML будет " +#~ "заголовок, содержащий текущую дату, адрес (URL) этой страницы и номер " +#~ "страницы.

" + +#~ msgid "" +#~ "

'Printerfriendly mode'

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.

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.

" +#~ "
" +#~ msgstr "" +#~ "

'Дружественный для принтера режим'

Если " +#~ "этот параметр включен, распечатка документа в формате HTML будет только " +#~ "черно-белой, любой цветной фон будет преобразован в белый. Печать будет " +#~ "быстре и будет использоваться меньше чернил или тонера.

Если этот " +#~ "параметр выключен, распечатка документа в формате HTML будет иметь такие " +#~ "же цвета, как вы видите в приложении. Результатом может быть полностью " +#~ "цветная страница (или с градациями серого, если принтер черно-белый). " +#~ "Печать будет идти медленнее и использовать намного больше тонера или " +#~ "чернил.

" + +#~ 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

Shows the certificate of the displayed page. Only " +#~ "pages that have been transmitted using a secure, encrypted connection " +#~ "have a certificate.

Hint: If the image shows a closed lock, the page " +#~ "has been transmitted over a secure connection." +#~ msgstr "" +#~ "Параметры безопасности

Показывает параметры безопасности. Только " +#~ "страницы, которые были переданы по безопасному, зашифрованному " +#~ "соединению, имеют сертификат.

Подсказка: если изображён закрытый " +#~ "замок, страница была передана через безопасное соединение." + +#~ 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

Make the font in this window bigger. Click and hold down " +#~ "the mouse button for a menu with all available font sizes." +#~ msgstr "" +#~ "Увеличить шрифт

Увеличить шрифт в этом окне. Нажмите и удерживайте " +#~ "кнопку мыши для отображения меню с доступными размерами шрифта." + +#~ msgid "Shrink Font" +#~ msgstr "Уменьшить шрифт" + +#~ msgid "" +#~ "Shrink Font

Make the font in this window smaller. Click and hold down " +#~ "the mouse button for a menu with all available font sizes." +#~ msgstr "" +#~ "Уменьшить шрифт

Уменьшить шрифт в этом окне. Нажмите и удерживайте " +#~ "кнопку мыши для отображения меню с доступными размерами шрифта." + +#~ msgid "" +#~ "Find text

Shows a dialog that allows you to find text on the displayed " +#~ "page." +#~ msgstr "Найти текст

Диалог поиска текста в текущей странице." + +#~ msgid "" +#~ "Find next

Find the next occurrence of the text that you have found " +#~ "using the Find Text function" +#~ msgstr "" +#~ "Найти далее

Поиск следующего вхождения текста, указанного в поле " +#~ "Найти текст" + +#~ msgid "" +#~ "Find previous

Find the previous occurrence of the text that you have " +#~ "found using the Find Text function" +#~ msgstr "" +#~ "Найти предыдущее

Поиск предыдущего вхождения текста, указанного в поле " +#~ "Найти текст" + +#~ msgid "Find Text as You Type" +#~ msgstr "Поиск текста по мере набора" + +#~ msgid "Find Links as You Type" +#~ msgstr "Поиск ссылок по мере набора" + +#~ msgid "" +#~ "Print Frame

Some pages have several frames. To print only a single " +#~ "frame, click on it and then use this function." +#~ msgstr "" +#~ "Печать фрейма

Некоторые страницы могут содержать несколько фреймов. " +#~ "Чтобы напечатать только один фрейм, нажмите на нем и используйте эту " +#~ "функцию." + +#~ 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 "Error: %1: %2" +#~ msgstr "Ошибка: %1: %2" + +#~ msgid "Error: node %1: %2" +#~ msgstr "Ошибка: узел %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 %1:" +#~ msgstr "Ошибка при загрузке %1:" + +#~ 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 "" +#~ "This untrusted page links to
%1.
Do you want to follow " +#~ "the link?" +#~ msgstr "" +#~ "Данная непроверенная страница содержит ссылку
%1." +#~ "
Перейти по ссылке?" + +#~ msgid "Follow" +#~ msgstr "Перейти" + +#~ msgid "Frame Information" +#~ msgstr "Сведения о фрейме" + +#~ msgid " [Properties]" +#~ msgstr " [Свойства]" + +#~ 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 "" +#~ "The form will be submitted to
%1
on your local " +#~ "filesystem.
Do you want to submit the form?" +#~ msgstr "" +#~ "Форма будет передана файлу
%1
локальной файловой " +#~ "системы.
Отправить форму?" + +#~ 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 "Access by untrusted page to
%1
denied." +#~ msgstr "Доступ с ненадежной страницы к
%1
запрещен." + +#~ 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 "" +#~ "This site is requesting to open

%1

in a new browser window via " +#~ "JavaScript.
Do you want to allow this?
" +#~ msgstr "" +#~ "Этот сайт пытается открыть

%1

в новом окне браузера с помощью " +#~ "JavaScript.
Разрешить?
" + +#~ 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 "" +#~ "This site is submitting a form which will open

%1

in a new " +#~ "browser window via JavaScript.
Do you want to allow the form to be " +#~ "submitted?
" +#~ msgstr "" +#~ "Этот сайт пытается отправить форму, что приведёт к открытию

%1

" +#~ "в новом окне браузера (через JavaScript).
Разрешить это?
" + +#~ 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 "Do you want to search the Internet for %1?" +#~ msgstr "Выполнить поиск %1 в Интернете?" + +#~ 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 "" +#~ "If you press the Replace button, the text you entered above is " +#~ "searched for within the document and any occurrence is replaced with the " +#~ "replacement text." +#~ msgstr "" +#~ "Если вы нажмёте копку Заменить, будет произведён поиск " +#~ "введённого вами выражения, а затем замена каждого из найденных совпадений " +#~ "на текст замены " + +#~ msgid "Start searching" +#~ msgstr "Начать поиск" + +#~ msgid "" +#~ "If you press the Find button, the text you entered above is " +#~ "searched for within the document." +#~ msgstr "" +#~ "Если вы нажмёте кнопку Найти, будет выполнен поиск введённого " +#~ "вами текста по всему документу." + +#~ 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 "" +#~ "If enabled, any occurrence of \\N, where " +#~ "N is a integer number, will be replaced with the " +#~ "corresponding capture (\"parenthesized substring\") from the pattern." +#~ "

To include (a literal \\N in your replacement, put " +#~ "an extra backslash in front of it, like \\\\N." +#~ msgstr "" +#~ "Если включено, любое вхождение кода \\N, где " +#~ "N - целое число, будет заменено соответствующим " +#~ "захватом (\"строкой в круглых скобках\") из шаблона.

Чтобы включить " +#~ "\\N в замену в символьном виде, поместите перед ним " +#~ "дополнительный символ backslash, например \\\\N." + +#~ 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 "" +#~ "There was an error when loading the module '%1'.

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.
" +#~ msgstr "" +#~ "При загрузке модуля '%1' произошла ошибка.

Файл .desktop (%2), " +#~ "так же как и библиотека (%3) были найдены, но модуль все равно не может " +#~ "быть загружен. Наиболее вероятная причина - неверный параметр factory " +#~ "declaration, или отсутствие функции create_*.
" + +#~ msgid "The specified library %1 could not be found." +#~ msgstr "Библиотека %1 не найдена." + +#~ msgid "The module %1 could not be found." +#~ msgstr "Модуль %1 не найден." + +#~ msgid "" +#~ "

The diagnostics is:
The desktop file %1 could not be found." +#~ msgstr "

Диагностика:
Не удаётся найти десктоп-файл %1." + +#~ msgid "The module %1 could not be loaded." +#~ msgstr "Не удалось загрузить модуль %1." + +#~ msgid "The module %1 is not a valid configuration module." +#~ msgstr "Модуль %1 не является правильным модулем настройки KDE." + +#~ msgid "" +#~ "

The diagnostics is:
The desktop file %1 does not specify a " +#~ "library." +#~ msgstr "" +#~ "

Диагностика:
файл .desktop %1 не определяет библиотеку." + +#~ msgid "There was an error loading the module." +#~ msgstr "При загрузке модуля произошла ошибка." + +#~ msgid "" +#~ "

The diagnostics is:
%1

Possible reasons:

  • An error " +#~ "occurred during your last KDE upgrade leaving an orphaned control " +#~ "module
  • You have old third party modules lying around.

Check " +#~ "these points carefully and try to remove the module mentioned in the " +#~ "error message. If this fails, consider contacting your distributor or " +#~ "packager.

" +#~ msgstr "" +#~ "

Диагностика:
%1

Возможные причины:

  • Ошибка при " +#~ "последнем обновлении KDE, в результате которой остался модуль управления " +#~ "от предыдущей версии
  • У вас установлены сторонние модули управления.

    Внимательно проверьте эти пункты и удалите перечисленные в них " +#~ "модули. Если ошибка повторяется - обратитесь к сборщику пакетов.

    " + +#~ 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 from the end?" +#~ msgstr "Продолжить поиск с конца?" + +#~ msgid "Do you want to restart search at the beginning?" +#~ msgstr "Продолжить поиск с начала?" + +#~ msgid "Restart" +#~ msgstr "Перезапустить" + +#~ msgid "" +#~ "
    Description:%1
    Author:%2
    Version:%3
    License:%4
    " +#~ msgstr "" +#~ "
    Описание:%1
    Автор:" +#~ "%2
    Версия:%3
    Лицензия:%4
    " + +#~ 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 "Find next occurrence of '%1'?" +#~ msgstr "Найти следующее вхождение '%1'?" + +#~ msgid "" +#~ "_n: 1 match found.\n" +#~ "%n matches found." +#~ msgstr "" +#~ "Найдено %n совпадение.\n" +#~ "Найдено %n совпадения.\n" +#~ "Найдено %n совпадений." + +#~ msgid "No matches found for '%1'." +#~ msgstr "Не найдено совпадений для '%1'." + +#~ msgid "No matches found for '%1'." +#~ msgstr "Нет совпадений для '%1'." + +#~ msgid "Continue from the end?" +#~ msgstr "Продолжить с конца?" + +#~ msgid "Continue from the beginning?" +#~ msgstr "Продолжить с начала?" + +#~ msgid "" +#~ "Changes in this section requires root access.
    Click the " +#~ "\"Administrator Mode\" button to allow modifications." +#~ msgstr "" +#~ "Вносить изменения в этот модуль может только администратор.
    Для этого нажмите кнопку \"Режим администратора\"." + +#~ 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 "Loading..." +#~ msgstr "Загрузка..." + +#~ 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 "" +#~ "

    About Qt

    This program uses Qt version %1.

    Qt is a C++ " +#~ "toolkit for multiplatform GUI & application development.

    Qt " +#~ "provides single-source portability across MS Windows, Mac " +#~ "OS X, Linux, and all major commercial Unix variants.
    Qt is also " +#~ "available for embedded devices.

    Qt is a Trolltech product. See " +#~ "http://www.trolltech.com/qt/ for more information.

    " +#~ msgstr "" +#~ "

    О библиотеке Qt

    Эта программа использует Qt %1

    .

    Qt - это " +#~ "инструментарий для кросс-платформенной разработки приложений с " +#~ "графическим интерфейсом на C++.

    Qt обеспечивает совместимость на " +#~ "уровне исходных текстов между MS Windows, Mac OS X, Linux и " +#~ "многими коммерческими версиями Unix.
    Qt также доступна для " +#~ "встраиваемых устройств.

    Qt - это продукт фирмы TrollTech. Более " +#~ "подробно об этом см. http://www.trolltech.com/qt/.

    " + +#~ 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 "ошибка в текстовой декларации внешней сущности" diff --git a/po/sk/kio_ldap.po b/po/sk/kio_ldap.po new file mode 100644 index 0000000..1e16ab7 --- /dev/null +++ b/po/sk/kio_ldap.po @@ -0,0 +1,65 @@ +# translation of kio_ldap.po to Slovak +# Stanislav Visnovsky , 2004. +# Richard Fric , 2006, 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2012-04-18 10:58+0100\n" +"Last-Translator: Roman Paholík \n" +"Language-Team: Slovak \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Dodatočné informácie: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Prihlásenie LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "server:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Neplatná informácie prihlásenia." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP pripojenie zrušené." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Parser Ldif zlyhal." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Neplatný Ldif súbor v riadku %1." diff --git a/po/sk/libkldap5.po b/po/sk/libkldap5.po new file mode 100644 index 0000000..3091752 --- /dev/null +++ b/po/sk/libkldap5.po @@ -0,0 +1,278 @@ +# translation of libkldap5.po to Slovak +# Roman Paholík , 2014, 2017. +msgid "" +msgstr "" +"Project-Id-Version: libkldap5\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2017-11-01 11:10+0100\n" +"Last-Translator: Roman Paholik \n" +"Language-Team: Slovak \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 2.0\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atribút" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Hodnota" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Užívateľ:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Realm:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Heslo:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Hostiteľ:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP verzia:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Veľkostný limit:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Predvolené" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Časový limit:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Predvolené" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Veľkosť stránky:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Nestránkované" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Query Server" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Bezpečnosť" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Nie" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Overenie" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonymný" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Jednoduchý" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL mechanismus:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Skontrolovať server" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP otázka" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Neznáma chyba pripojenia %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "LDAP nie je podporované ..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Vyskytla sa chyba počas inicializácie spojenia." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Nie je možné nastaviť verziu protokolu na %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Nie je možné inicializovať SASL klienta." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Nie je dostupná podpora TLS v klientských knižniciach LDAP." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Nie je možné nastaviť veľkostný limit." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Nie je možné nastaviť časový limit." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Nie je možné inicializovať SASL klienta." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Nemôžem pristupovať na server. Prosím, prekonfigurujte ho." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Význačný názov" + +#~ msgid "LDAP Operations error" +#~ msgstr "Chyba operácie LDAP" diff --git a/po/sl/kio_ldap.po b/po/sl/kio_ldap.po new file mode 100644 index 0000000..2620ee7 --- /dev/null +++ b/po/sl/kio_ldap.po @@ -0,0 +1,68 @@ +# translation of kio_ldap.po to Slovenian +# Translation of kio_ldap.po to Slovenian +# Gregor Rakar , 2004, 2005. +# Andrej Vernekar , 2007. +# Andrej Mernik , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2014-08-29 12:46+0200\n" +"Last-Translator: Andrej Mernik \n" +"Language-Team: Slovenian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Dodatni podatki: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Prijava LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "mesto:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Neveljavni pooblastitveni podatki." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "Povezava LDAP je preklicana." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Razčlenjevalnik Ldif ni uspel." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Neveljavna datoteka Ldif v vrstici %1." diff --git a/po/sl/libkldap5.po b/po/sl/libkldap5.po new file mode 100644 index 0000000..fb731ba --- /dev/null +++ b/po/sl/libkldap5.po @@ -0,0 +1,285 @@ +# 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 , 2007, 2008. +# Jure Repinc , 2012. +# Andrej Mernik , 2014, 2018. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-01-18 17:56+0100\n" +"Last-Translator: Andrej Mernik \n" +"Language-Team: Slovenian \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 2.0\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Atribut" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Vrednost" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Uporabnik:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Razločevalno ime Bind:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Področje:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Geslo:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Gostitelj:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Vrata:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Različica LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Omejitev velikosti:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Privzeta" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Časovna omejitev:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek." + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Privzeta" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Velikost strani:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Brez strani" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "Razločevalno ime:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Poizvedovalni strežnik" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Varnost" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Brez" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Overitev" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonimno" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Preprosto" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Mehanizem SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Preveri strežnik" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Poizvedba LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Neznana napaka med povezovanjem s %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Ni podpore za LDAP ..." + +#: ldapconnection.cpp:160 +#, kde-format +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)." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Med začetnim nastavljanjem povezave je prišlo do napake." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Različice protokola ni mogoče nastaviti na %1." + +#: ldapconnection.cpp:288 +#, 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 sekund." +msgstr[1] "Časovne omejitve ni mogoče nastaviti na %1 sekundo." +msgstr[2] "Časovne omejitve ni mogoče nastaviti na %1 sekundi." +msgstr[3] "Časovne omejitve ni mogoče nastaviti na %1 sekunde." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Začetna nastavitev odjemalca SASL ni uspela." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "V knjižnicah odjemalca LDAP ni podpore za TLS." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Ni mogoče nastaviti omejitve velikosti." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Ni mogoče nastaviti časovne omejitve." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Začetna nastavitev odjemalca SASL ni uspela." + +#: ldapconnection.cpp:456 +#, 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)." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Do strežnika ni mogoče dostopati. Preverite nastavitve." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Razločevalno ime" + +#~ msgid "LDAP Operations error" +#~ msgstr "Napaka opravil LDAP" diff --git a/po/sr/docs/kioslave5/ldap/index.docbook b/po/sr/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..bc48617 --- /dev/null +++ b/po/sr/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,56 @@ + + + +]> + +
    +ЛДАП + + +Лори Вотс &Lauri.Watts.mail; +ДраганПантелић
    falcon-10@gmx.de
    превод
    +
    +
    + +ЛДАП је лагани протокол за приступ именицима. Обезбеђује приступ Икс500 именицима и самосталним ЛДАП серверима. + +У/И захват ЛДАП‑а можете користити овако: + +ldap://domacin:port/ou=People,o=where,c=de??sub за упит подстабла + +или ldap://domacin:port/cn=MM,ou=People,o=where,c=de??base за потпуну грану. + +
    diff --git a/po/sr/kio_ldap.po b/po/sr/kio_ldap.po new file mode 100644 index 0000000..c07a166 --- /dev/null +++ b/po/sr/kio_ldap.po @@ -0,0 +1,69 @@ +# Translation of kio_ldap.po to Serbian. +# Chusslove Illich , 2004, 2005, 2007. +# Dalibor Djuric , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2009-12-14 00:24+0100\n" +"Last-Translator: Dalibor Djuric \n" +"Language-Team: Serbian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Додатни подаци: " + +#: kio_ldap.cpp:179 +#, kde-format +msgid "" +"LDAP server returned the error: %1 %2\n" +"The LDAP URL was: %3" +msgstr "" +"ЛДАП сервер јавља грешку: %1 %2\n" +"УРЛ ЛДАП‑а: %3" + +#: kio_ldap.cpp:331 +#, kde-format +msgid "LDAP Login" +msgstr "ЛДАП пријава" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "сајт:" + +# >! authorization -> authentication +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Неисправни подаци за аутентификацију." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "ЛДАП веза отказана." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Неуспело рашчлањивање ЛДИФ‑а." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Неисправан ЛДИФ у реду %1." diff --git a/po/sr/libkldap5.po b/po/sr/libkldap5.po new file mode 100644 index 0000000..35aaf32 --- /dev/null +++ b/po/sr/libkldap5.po @@ -0,0 +1,291 @@ +# Translation of libkldap5.po into Serbian. +# Chusslove Illich , 2007, 2009, 2010, 2014, 2017. +# Dalibor Djuric , 2009. +msgid "" +msgstr "" +"Project-Id-Version: libkldap5\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2017-10-06 17:14+0200\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \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" + +# >> @title:column +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "атрибут" + +# >> @title:column +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "вредност" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Корисник:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "ДН свезе:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Царство:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Лозинка:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Домаћин:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Порт:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Верзија ЛДАП‑а:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Ограничење величине:" + +# >> @item:inlistbox ... +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "подразумевано" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Ограничење времена:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " сек." + +# >> @item:inlistbox ... +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "подразумевано" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Величина странице:" + +# >> @item:inlistbox Page size +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "без страничења" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "ДН:" + +# >> @action:button Send query to the server +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Упитај сервер" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Филтер:" + +# >> @title:group +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Безбедност" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "никаква" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "ТЛС" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "ССЛ" + +# >> @title:group +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Аутентификација" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "анонимна" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "једноставна" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "САСЛ" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Механизам САСЛ‑а:" + +# >> @title:window +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Провера сервера" + +# >> @title:window +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "ЛДАП упит" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Непозната грешка при повезивању са %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Нема подршке за ЛДАП..." + +#: ldapconnection.cpp:160 +#, kde-format +msgid "" +"SASL support is not available. Please recompile libkldap with the Cyrus-SASL " +"(or compatible) client libraries, or complain to your distribution packagers." +msgstr "" +"Подршка за САСЛ није доступна. Изградите поново „libkldap“ са клијентским " +"библиотекама Сајрус‑САСЛ‑а (или сагласним), или се пожалите пакетарима своје " +"дистрибуције." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Грешка у фази припремања везе." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Не могу да поставим верзију протокола на %1." + +#: ldapconnection.cpp:288 +#, 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 секунду." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "Не могу да припремим САСЛ клијент." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Нема подршке за ТЛС у клијентским библиотекама ЛДАП клијента." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Не могу да поставим ограничење величине." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Не могу да поставим ограничење времена." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Не могу да припремим САСЛ клијент." + +#: ldapconnection.cpp:456 +#, 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“ са клијентским " +"библиотекама ОпенЛДАП‑а (или сагласним), или се пожалите пакетарима своје " +"дистрибуције." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Не могу да приступим серверу. Подесите га поново." + +# >> @title:column +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "ДН" diff --git a/po/sv/docs/kioslave5/ldap/index.docbook b/po/sv/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..9f1293c --- /dev/null +++ b/po/sv/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,54 @@ + + + +]> + +
    +ldap + + +&Lauri.Watts; &Lauri.Watts.mail; + Stefan Asserhäll
    stefan.asserhall@bredband.net
    Översättare
    +
    +
    + +ldap är det lättviktiga katalogåtkomstprotokollet. Det ger möjlighet att komma åt en X.500-katalog, eller en ensam LDAP-server. + +Du kan använda I/O-slaven ldap som följer: + +ldap://värddator:port/ou=People,o=where,c=de??sub får en delträdsförfrågan + +eller ldap://värddator:port/cn=MM,ou=People,o=where,c=de??bas får en fullständig gren. + +
    diff --git a/po/sv/kio_ldap.po b/po/sv/kio_ldap.po new file mode 100644 index 0000000..b0bf30f --- /dev/null +++ b/po/sv/kio_ldap.po @@ -0,0 +1,66 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2016-04-04 20:11+0100\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Ytterligare information: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP-inloggning" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "plats:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Felaktigt information för behörighetskontroll." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP-anslutning avbruten." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "LDIF-tolken misslyckades." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Felaktig LDIF-fil på rad %1." diff --git a/po/sv/libkldap5.po b/po/sv/libkldap5.po new file mode 100644 index 0000000..e7af087 --- /dev/null +++ b/po/sv/libkldap5.po @@ -0,0 +1,468 @@ +# 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 , 2007, 2008, 2009, 2010, 2014, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-03-24 09:28+0100\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \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 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Egenskap" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Värde" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Användare:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Särskiljande bindningsnamn:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Rike:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Lösenord:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Värddator:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP-version:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Storleksgräns:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Förval" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Tidsgräns:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " sek" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Förval" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Sidstorlek:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Ingen sidhantering" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "Särskiljande namn:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Fråga server" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filter:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Säkerhet" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Nej" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Behörighetskontroll" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonym" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Enkel" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL-mekanism:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Kontrollera server" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP-förfrågan" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Okänt fel vid anslutning till %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Inget stöd för LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Ett fel uppstod under initieringsfasen vid anslutning." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Kan inte ställa in protokollversion till %1." + +#: ldapconnection.cpp:288 +#, 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." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Kunde inte ställa in certifikatutfärdarens certifikatfil." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Ogiltigt certifikatläge för att kräva TLS." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Kunde inte ställa in certifikatläge för att kräva TLS." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Kan inte initiera nytt TLS-sammanhang." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "TLS-stöd är inte tillgängligt i LDAP-klientbiblioteken." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Kan inte ställa in storleksgräns." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Kan inte ställa in tidsgräns." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Kan inte initiera SASL-klienten." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Kan inte komma åt servern. Ändra dess inställning." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Särskiljande namn" + +#~ msgid "LDAP Operations error" +#~ msgstr "Fel vid användning av LDAP" + +#~ msgid "Add Host" +#~ msgstr "Lägg till värddator" + +#~ 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" + +#~ msgid "Edit Host" +#~ msgstr "Redigera värddator" + +#~ msgid "LDAP Servers" +#~ msgstr "LDAP-servrar" + +#~ msgid "Check all servers that should be used:" +#~ msgstr "Markera alla servrar som ska användas:" + +#~ msgid "&Add Host..." +#~ msgstr "&Lägg till värddator..." + +#~ msgid "&Edit Host..." +#~ msgstr "&Redigera värddator..." + +#~ msgid "&Remove Host" +#~ msgstr "Ta bo&rt värddator" + +#~ 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" diff --git a/po/tr/kio_ldap.po b/po/tr/kio_ldap.po new file mode 100644 index 0000000..697f9e7 --- /dev/null +++ b/po/tr/kio_ldap.po @@ -0,0 +1,72 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Cemil MUTLU , 2005. +# Görkem Çetin , 2004. +# Görkem Çetin , 2004. +# obsoleteman , 2008. +# Kaan Ozdincer , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kdepimlibs-kde4\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2014-11-12 01:06+0200\n" +"Last-Translator: Kaan Ozdincer \n" +"Language-Team: Turkish \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Ek bilgiler: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP Giriş" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "site:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Geçersiz kimlik doğrulama bilgisi." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP bağlantısı iptal edildi." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Ldif ayrıştırıcı başarısız oldu." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "%1 satırında geçersiz Ldif dosyası." diff --git a/po/tr/libkldap5.po b/po/tr/libkldap5.po new file mode 100644 index 0000000..b3dcfe6 --- /dev/null +++ b/po/tr/libkldap5.po @@ -0,0 +1,302 @@ +# 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 , 2008, 2009. +# Volkan Gezer , 2013, 2014. +# Kaan Ozdincer , 2014. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2017-10-23 09:33+0000\n" +"Last-Translator: Kaan \n" +"Language-Team: Turkish \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Özellik" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Değer" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Kullanıcı:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "Bind DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Realm:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Parola:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Makine:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Port:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP sürümü:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Boyut sınırı:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Öntanımlı" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Zaman sınırı:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr "sn" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Öntanımlı" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Sayfa boyutu:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Sayfalama yok" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Sorgu Sunucusu" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Filtrele:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Güvenlik" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Hayır" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Kimlik Doğrulama" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Anonim" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Basit" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL mekanizması:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Sunucuyu denetle" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP Sorgusu" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "%1'e bağlanırken bilinmeyen hata" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "LDAP Desteği Yok..." + +#: ldapconnection.cpp:160 +#, kde-format +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." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Bağlantı başlatılma evresinde bir hata oluştu." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Protokol sürümü %1 olarak ayarlanamadı." + +#: ldapconnection.cpp:288 +#, 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ı." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "SASL istemcisi başlatılamadı." + +#: ldapconnection.cpp:347 +#, 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." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Boyut sınırı ayarlanamadı." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Süre sınırı ayarlanamadı." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "SASL istemcisi başlatılamadı." + +#: ldapconnection.cpp:456 +#, 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." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "Sunucuya erişilemedi. Lütfen yeniden yapılandırın." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Eşsiz İsim" + +#~ msgid "LDAP Operations error" +#~ msgstr "LDAP İşlem hatası" + +#, fuzzy +#~| msgid "Host:" +#~ msgid "Add Host" +#~ msgstr "Makine:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Server Settings" +#~ msgstr "LDAP sürümü:" + +#, fuzzy +#~| msgid "LDAP version:" +#~ msgid "LDAP Servers" +#~ msgstr "LDAP sürümü:" + +#, fuzzy +#~| msgid "User:" +#~ msgid "User ID" +#~ msgstr "Kullanıcı:" diff --git a/po/ug/kio_ldap.po b/po/ug/kio_ldap.po new file mode 100644 index 0000000..a9e5025 --- /dev/null +++ b/po/ug/kio_ldap.po @@ -0,0 +1,64 @@ +# 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 , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Additional info: " + +#: kio_ldap.cpp:179 +#, kde-format +msgid "" +"LDAP server returned the error: %1 %2\n" +"The LDAP URL was: %3" +msgstr "" + +#: kio_ldap.cpp:331 +#, kde-format +msgid "LDAP Login" +msgstr "" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "تورتۇرا:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "" diff --git a/po/ug/libkldap5.po b/po/ug/libkldap5.po new file mode 100644 index 0000000..91024bf --- /dev/null +++ b/po/ug/libkldap5.po @@ -0,0 +1,268 @@ +# 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 , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "خاسلىق" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "قىممەت" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "ئىشلەتكۈچى:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "دائىرە:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "ئىم:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "كومپيۇتېر:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "ئېغىز:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "كۆڭۈلدىكى" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "ۋاقىت چەكلىمىسى:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " سېكۇنت" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "كۆڭۈلدىكى" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "قەغەز چوڭلۇقى:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "سۈزگۈچ:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "بىخەتەرلىك" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "ياق" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "كىملىك دەلىللەش" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "ئاتسىز" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "ئاددىي" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "" + +#: ldapconnection.cpp:160 +#, kde-format +msgid "" +"SASL support is not available. Please recompile libkldap with the Cyrus-SASL " +"(or compatible) client libraries, or complain to your distribution packagers." +msgstr "" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "" + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "" + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "" + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "" + +#: ldapconnection.cpp:456 +#, 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 "" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "" diff --git a/po/uk/docs/kioslave5/ldap/index.docbook b/po/uk/docs/kioslave5/ldap/index.docbook new file mode 100644 index 0000000..02a0181 --- /dev/null +++ b/po/uk/docs/kioslave5/ldap/index.docbook @@ -0,0 +1,54 @@ + + + +]> + +
    +ldap + + +&Lauri.Watts; &Lauri.Watts.mail; +ЮрійЧорноіван
    yurchor@ukr.net
    Переклад українською
    +
    +
    + +ldap — це абревіатура від lightweight directory access protocol (полегшений протокол доступу до каталогів). Цей протокол надає доступ до каталогу X.500 або до окремого сервера LDAP. + +Використовувати kioslave ldap можна так: + +ldap://host:port/ou=People,o=where,c=de??sub для запиту у піддереві + +або ldap://вузол:порт/cn=MM,ou=People,o=where,c=de??base для всієї гілки. + +
    diff --git a/po/uk/kio_ldap.po b/po/uk/kio_ldap.po new file mode 100644 index 0000000..a56f4e4 --- /dev/null +++ b/po/uk/kio_ldap.po @@ -0,0 +1,69 @@ +# 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 , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2016-04-04 17:41+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"Додаткова інформація: " + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "Вхід LDAP" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "сайт:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "Неправильна інформація для авторизації." + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "З’єднання з LDAP скасовано." + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "Помилка аналізатора Ldif." + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "Неправильний файл Ldif в рядку %1." diff --git a/po/uk/libkldap5.po b/po/uk/libkldap5.po new file mode 100644 index 0000000..d1dbea3 --- /dev/null +++ b/po/uk/libkldap5.po @@ -0,0 +1,475 @@ +# Translation of libkldap5.po to Ukrainian +# Copyright (C) 2014-2018 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 , 2007, 2008. +# Yuri Chornoivan , 2008, 2009, 2010, 2014, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: libkldap5\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-03-23 07:34+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \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 2.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" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "Атрибут" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "Значення" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "Користувач:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "DN для прив'язки:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "Гілка:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "Пароль:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "Вузол:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "Порт:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "Версія LDAP:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "Обмеження розміру:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "Типовий" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "Обмеження часу:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " с" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "Типовий" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "Розмір сторінки:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "Без розбиття на сторінки" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "Опитати сервер" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "Фільтр:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "Безпека" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "Ні" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "Автентифікація" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "Анонімна" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "Проста" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "Механізм SASL:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "Перевірити сервер" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "Опитування LDAP" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "Невідома помилка під час спроби встановлення зв’язку із %1" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "Немає підтримки LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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 (або сумісними з ними), або надішліть скаргу особі, " +"що готувала пакунок вашого дистрибутива." + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "Під час фази ініціалізації з’єднання сталася помилка." + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "Неможливо встановити версію протоколу до %1." + +#: ldapconnection.cpp:288 +#, 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 секунду." + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "Не вдалося встановити файл сертифіката CA." + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "Некоректна вимога TLS щодо режиму сертифікації." + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "Не вдалося встановити запитаний TLS режим сертифікації." + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "Не вдалося ініціалізувати новий контекст TLS." + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "Немає підтримки TLS в бібліотеках клієнта LDAP." + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "Не вдається встановити обмеження на розмір." + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "Не вдається встановити обмеження на час." + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "Неможливо започаткувати клієнт SASL." + +#: ldapconnection.cpp:456 +#, 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 (або сумісними з ними), або надішліть " +"скаргу особі, що готувала пакунок вашого дистрибутива." + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "" +"Не вдалося отримати доступ до сервера. Будь ласка, виконайте повторне " +"налаштування." + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "Титул" + +#~ msgid "LDAP Operations error" +#~ msgstr "Помилка дій LDAP" + +#~ msgid "Add Host" +#~ msgstr "Додати вузол" + +#~ 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" + +#~ msgid "Edit Host" +#~ msgstr "Змінити вузол" + +#~ msgid "LDAP Servers" +#~ msgstr "Сервери LDAP" + +#~ msgid "Check all servers that should be used:" +#~ msgstr "Позначте всі сервери, які слід використовувати:" + +#~ msgid "&Add Host..." +#~ msgstr "&Додати вузол…" + +#~ msgid "&Edit Host..." +#~ msgstr "&Змінити вузол…" + +#~ msgid "&Remove Host" +#~ msgstr "&Вилучити вузол" + +#~ 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" diff --git a/po/zh_CN/kio_ldap.po b/po/zh_CN/kio_ldap.po new file mode 100644 index 0000000..5d7b928 --- /dev/null +++ b/po/zh_CN/kio_ldap.po @@ -0,0 +1,65 @@ +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2018-11-01 23:17\n" +"Last-Translator: guoyunhe \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-Generator: crowdin.com\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/pim/kio_ldap.pot\n" + +#: kio_ldap.cpp:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"额外信息:" + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP 登录" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "网站:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "无效的身份验证信息。" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP 连接被取消。" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "LDIF 分析器失败。" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "第 %1 行出现了无效的 LDIF 文件。" diff --git a/po/zh_CN/libkldap5.po b/po/zh_CN/libkldap5.po new file mode 100644 index 0000000..adb7ec0 --- /dev/null +++ b/po/zh_CN/libkldap5.po @@ -0,0 +1,275 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Xuetian Weng , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-11-01 23:18\n" +"Last-Translator: guoyunhe \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-Generator: crowdin.com\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/pim/libkldap5.pot\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "属性" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "值" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "用户:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "基准 DN:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "域:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "密码:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "主机:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "端口:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP 版本:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "大小限制:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "默认" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "时间限制:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " 秒" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "默认" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "页面大小:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "不分页" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "DN:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "查询服务器" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "过滤器:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "安全" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "否" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "身份验证" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "匿名" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "简单" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL 算法:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "检查服务器" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP 查询" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "连接 %1 时发生未知错误" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "无 LDAP 支持..." + +#: ldapconnection.cpp:160 +#, kde-format +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 支持不可用。请在 Cyrus-SASL 客户端库或兼容环境下重新编译 libkldap,或向" +"您所用发行版的打包人员申诉。" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "在连接初始化阶段发生错误。" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "无法将协议版本设为 %1。" + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "无法将超时值设置为 %1 秒。" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "无法设置 CA 证书文件。" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "无效 TLS 需要证书模式。" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "无法设置 TLS 需要证书模式。" + +#: ldapconnection.cpp:332 +#, kde-format +msgid "Could not initialize new TLS context." +msgstr "无法初始化新 TLS 上下文。" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "LDAP 客户端库没有 TLS 支持。" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "无法设置大小限制。" + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "无法设置时间限制。" + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "无法初始化 SASL 客户端。" + +#: ldapconnection.cpp:456 +#, 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,或向您" +"所用发行版的打包人员申诉。" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "无法访问服务器,请重新配置。" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "识别名称(DN)" diff --git a/po/zh_TW/kio_ldap.po b/po/zh_TW/kio_ldap.po new file mode 100644 index 0000000..583d95e --- /dev/null +++ b/po/zh_TW/kio_ldap.po @@ -0,0 +1,67 @@ +# 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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_ldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-09-11 07:12+0200\n" +"PO-Revision-Date: 2007-09-12 18:44+0800\n" +"Last-Translator: Franklin Weng \n" +"Language-Team: Chinese Traditional \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:97 +#, kde-format +msgid "" +"\n" +"Additional info: " +msgstr "" +"\n" +"額外資訊:" + +#: kio_ldap.cpp:179 +#, 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:331 +#, kde-format +msgid "LDAP Login" +msgstr "LDAP 登入" + +#: kio_ldap.cpp:334 +#, kde-format +msgid "site:" +msgstr "站台:" + +#: kio_ldap.cpp:367 +#, kde-format +msgid "Invalid authorization information." +msgstr "不合法的認證資訊。" + +#: kio_ldap.cpp:369 +#, kde-format +msgid "LDAP connection canceled." +msgstr "LDAP 連線取消。" + +#: kio_ldap.cpp:629 kio_ldap.cpp:700 +#, kde-format +msgid "The Ldif parser failed." +msgstr "LDIF 解析器失敗。" + +#: kio_ldap.cpp:713 +#, kde-format +msgid "Invalid Ldif file in line %1." +msgstr "LDIF 檔案內容第 %1 行語法錯誤。" diff --git a/po/zh_TW/libkldap5.po b/po/zh_TW/libkldap5.po new file mode 100644 index 0000000..4fb195c --- /dev/null +++ b/po/zh_TW/libkldap5.po @@ -0,0 +1,275 @@ +# 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 , 2007, 2008, 2015. +# Frank Weng (a.k.a. Franklin) , 2009. +msgid "" +msgstr "" +"Project-Id-Version: libkldap\n" +"Report-Msgid-Bugs-To: http://bugs.kde.org\n" +"POT-Creation-Date: 2018-03-22 03:31+0100\n" +"PO-Revision-Date: 2018-03-29 13:04+0800\n" +"Last-Translator: Cheng-Chia Tseng \n" +"Language-Team: Chinese Traditional \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: Poedit 2.0.6\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ldapattributeproxymodel.cpp:75 ldapmodel.cpp:148 +#, kde-format +msgid "Attribute" +msgstr "屬性" + +#: ldapattributeproxymodel.cpp:77 ldapmodel.cpp:150 +#, kde-format +msgid "Value" +msgstr "值" + +#: ldapconfigwidget.cpp:113 +#, kde-format +msgid "User:" +msgstr "使用者:" + +#: ldapconfigwidget.cpp:123 +#, kde-format +msgid "Bind DN:" +msgstr "域名:" + +#: ldapconfigwidget.cpp:133 +#, kde-format +msgid "Realm:" +msgstr "領域:" + +#: ldapconfigwidget.cpp:143 +#, kde-format +msgid "Password:" +msgstr "密碼:" + +#: ldapconfigwidget.cpp:153 +#, kde-format +msgid "Host:" +msgstr "主機:" + +#: ldapconfigwidget.cpp:164 +#, kde-format +msgid "Port:" +msgstr "埠號:" + +#: ldapconfigwidget.cpp:177 +#, kde-format +msgid "LDAP version:" +msgstr "LDAP 版本:" + +#: ldapconfigwidget.cpp:192 +#, kde-format +msgid "Size limit:" +msgstr "大小限制:" + +#: ldapconfigwidget.cpp:198 +#, kde-format +msgctxt "default ldap size limit" +msgid "Default" +msgstr "預設" + +#: ldapconfigwidget.cpp:205 +#, kde-format +msgid "Time limit:" +msgstr "時間限制:" + +#: ldapconfigwidget.cpp:211 +#, kde-format +msgid " sec" +msgstr " 秒" + +#: ldapconfigwidget.cpp:212 +#, kde-format +msgctxt "default ldap time limit" +msgid "Default" +msgstr "預設" + +#: ldapconfigwidget.cpp:221 +#, kde-format +msgid "Page size:" +msgstr "頁面大小:" + +#: ldapconfigwidget.cpp:227 +#, kde-format +msgid "No paging" +msgstr "不分頁" + +#: ldapconfigwidget.cpp:233 +#, kde-format +msgctxt "Distinguished Name" +msgid "DN:" +msgstr "區別名稱:" + +#: ldapconfigwidget.cpp:241 ldapconfigwidget.cpp:316 +#, kde-format +msgid "Query Server" +msgstr "查詢伺服器" + +#: ldapconfigwidget.cpp:249 +#, kde-format +msgid "Filter:" +msgstr "過濾器:" + +#: ldapconfigwidget.cpp:259 +#, kde-format +msgid "Security" +msgstr "安全性" + +#: ldapconfigwidget.cpp:262 +#, kde-format +msgctxt "@option:radio set no security" +msgid "No" +msgstr "無" + +#: ldapconfigwidget.cpp:265 +#, kde-format +msgctxt "@option:radio use TLS security" +msgid "TLS" +msgstr "TLS" + +#: ldapconfigwidget.cpp:268 +#, kde-format +msgctxt "@option:radio use SSL security" +msgid "SSL" +msgstr "SSL" + +#: ldapconfigwidget.cpp:284 +#, kde-format +msgid "Authentication" +msgstr "認證" + +#: ldapconfigwidget.cpp:291 +#, kde-format +msgctxt "@option:radio anonymous authentication" +msgid "Anonymous" +msgstr "匿名" + +#: ldapconfigwidget.cpp:295 +#, kde-format +msgctxt "@option:radio simple authentication" +msgid "Simple" +msgstr "簡單" + +#: ldapconfigwidget.cpp:299 +#, kde-format +msgctxt "@option:radio SASL authentication" +msgid "SASL" +msgstr "SASL" + +#: ldapconfigwidget.cpp:305 +#, kde-format +msgid "SASL mechanism:" +msgstr "SASL 機制:" + +#: ldapconfigwidget.cpp:355 +#, kde-format +msgid "Check server" +msgstr "" + +#: ldapconfigwidget.cpp:361 +#, kde-format +msgid "LDAP Query" +msgstr "LDAP 查詢" + +#: ldapconfigwidget.cpp:375 +#, kde-format +msgctxt "%1 is a url to ldap server" +msgid "Unknown error connecting %1" +msgstr "連線到 %1 時發生未知的錯誤" + +#: ldapconnection.cpp:149 +#, kde-format +msgid "No LDAP Support..." +msgstr "不支援 LDAP..." + +#: ldapconnection.cpp:160 +#, kde-format +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 或相容的客戶端函" +"式庫,或是向您的散布版打包者反應。" + +#: ldapconnection.cpp:270 +#, kde-format +msgid "An error occurred during the connection initialization phase." +msgstr "連線初始化時發生錯誤。" + +#: ldapconnection.cpp:277 +#, kde-format +msgid "Cannot set protocol version to %1." +msgstr "無法送出協定版本給 %1。" + +#: ldapconnection.cpp:288 +#, kde-format +msgid "Cannot set timeout to %1 second." +msgid_plural "Cannot set timeout to %1 seconds." +msgstr[0] "無法設定時間限制為 %1 秒。" + +#: ldapconnection.cpp:303 +#, kde-format +msgid "Could not set CA certificate file." +msgstr "" + +#: ldapconnection.cpp:318 +#, kde-format +msgid "Invalid TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:323 +#, kde-format +msgid "Could not set TLS require certificate mode." +msgstr "" + +#: ldapconnection.cpp:332 +#, fuzzy, kde-format +#| msgid "Cannot initialize the SASL client." +msgid "Could not initialize new TLS context." +msgstr "無法初始化 SASL 客戶端。" + +#: ldapconnection.cpp:347 +#, kde-format +msgid "TLS support not available in the LDAP client libraries." +msgstr "LDAP 客戶端函式庫不支援 TLS。" + +#: ldapconnection.cpp:357 +#, kde-format +msgid "Cannot set size limit." +msgstr "無法設定大小限制。" + +#: ldapconnection.cpp:367 +#, kde-format +msgid "Cannot set time limit." +msgstr "無法設定時間限制。" + +#: ldapconnection.cpp:377 +#, kde-format +msgid "Cannot initialize the SASL client." +msgstr "無法初始化 SASL 客戶端。" + +#: ldapconnection.cpp:456 +#, 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 或相容的客戶端函式" +"庫,或是向您的散布版打包者反應。" + +#: ldapsearch.cpp:239 +#, kde-format +msgid "Cannot access to server. Please reconfigure it." +msgstr "無法存取伺服器。請重新設定。" + +#: ldapstructureproxymodel.cpp:74 +#, kde-format +msgid "Distinguished Name" +msgstr "辨別名稱(DN)" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..b01b4f7 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,119 @@ +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(HAVE_LDAP_H) + 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) + check_symbol_exists(ldap_extended_operation ldap.h HAVE_LDAP_EXTENDED_OPERATION_PROTOTYPE) + check_symbol_exists(ldap_extended_operation_s ldap.h HAVE_LDAP_EXTENDED_OPERATION_S_PROTOTYPE) +endif() + +if(Sasl2_FOUND) + set(kldap_EXTRA_LIBS ${kldap_EXTRA_LIBS} Sasl2::Sasl2) +endif() + +configure_file(kldap_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/kldap_config.h) + +########### next target ############### + +set(kldap_LIB_SRCS + ber.cpp + ldif.cpp + ldapurl.cpp + ldapserver.cpp + ldapobject.cpp + ldapconnection.cpp + ldapoperation.cpp + ldapcontrol.cpp + ldapsearch.cpp + ldapconfigwidget.cpp + ldapdn.cpp + ldapmodelnode_p.cpp + ldapmodel.cpp + ldapmodel_p.cpp + ldapstructureproxymodel.cpp + ldapattributeproxymodel.cpp +) +ecm_qt_declare_logging_category(kldap_LIB_SRCS HEADER ldap_debug.h IDENTIFIER LDAP_LOG CATEGORY_NAME org.kde.pim.ldap) + +add_library(KF5Ldap ${kldap_LIB_SRCS}) + +generate_export_header(KF5Ldap BASE_NAME kldap) + +add_library(KF5::Ldap ALIAS KF5Ldap) + +target_link_libraries(KF5Ldap +PRIVATE + KF5::Completion + Qt5::Widgets + KF5::I18n + KF5::WidgetsAddons + ${kldap_EXTRA_LIBS} +) + +target_include_directories(KF5Ldap INTERFACE "$") +target_include_directories(KF5Ldap PUBLIC "$") + +set_target_properties(KF5Ldap PROPERTIES + VERSION ${KLDAP_VERSION_STRING} + SOVERSION ${KLDAP_SOVERSION} + EXPORT_NAME Ldap +) + +install(TARGETS KF5Ldap EXPORT KF5LdapTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) + +########### install files ############### + +ecm_generate_headers(KLdap_CamelCase_HEADERS + HEADER_NAMES + Ber + LdapAttributeProxyModel + LdapConfigWidget + LdapConnection + LdapControl + LdapDN + LdapModel + LdapObject + LdapOperation + LdapSearch + LdapServer + LdapDefs + LdapStructureProxyModel + LdapUrl + Ldif + PREFIX KLDAP + REQUIRED_HEADERS KLdap_HEADERS +) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/kldap_export.h + ${KLdap_HEADERS} + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KLDAP/kldap + COMPONENT Devel +) + +install(FILES + ${KLdap_CamelCase_HEADERS} + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KLDAP/KLDAP/ + COMPONENT Devel +) + +ecm_generate_pri_file(BASE_NAME Ldap LIB_NAME KF5Ldap FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KLDAP/) +install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) + diff --git a/src/Messages.sh b/src/Messages.sh new file mode 100644 index 0000000..18480f6 --- /dev/null +++ b/src/Messages.sh @@ -0,0 +1,3 @@ +#! /bin/sh +$XGETTEXT *.cpp -o $podir/libkldap5.pot + diff --git a/src/ber.cpp b/src/ber.cpp new file mode 100644 index 0000000..6a41f39 --- /dev/null +++ b/src/ber.cpp @@ -0,0 +1,451 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ber.h" +#include "kldap_config.h" + +#include "ldap_debug.h" + +#include +#include + +#include + +#ifdef LDAP_FOUND + +#ifdef Q_OS_SOLARIS //krazy:exclude=cpp +#define BC31 1 +#endif + +#ifndef HAVE_WINLDAP_H +#include +#include +#else +#include +#endif + +#ifndef LBER_USE_DER +#define LBER_USE_DER 1 +#endif + +#ifndef HAVE_BER_MEMFREE +# ifndef 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: +#ifdef LDAP_FOUND + BerElement *mBer = nullptr; +#endif +}; + +#ifdef 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); + delete d; +} + +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, 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 vould 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; + } + 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; + } + break; + case 'v': { + QList *v = va_arg(args, QList *); + QVarLengthArray 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 *V = va_arg(args, QList *); + QVarLengthArray bv(V->count() + 1); + QVarLengthArray 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, 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 vould 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; + } + 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; + } + break; + case 'v': { + QList *v = va_arg(args, QList *); + char **c, **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 *v = va_arg(args, QList *); + struct berval **bv, **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() +{ + delete d; +} + +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(const QString &format, ...) +{ + Q_UNUSED(format); + qCritical() << "LDAP support not compiled"; + return -1; +} + +int Ber::scanf(const 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 diff --git a/src/ber.h b/src/ber.h new file mode 100644 index 0000000..176eaf4 --- /dev/null +++ b/src/ber.h @@ -0,0 +1,131 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_BER_H +#define KLDAP_BER_H + +#include + +#include "kldap_export.h" + +// 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: + *
      + *
    • + * b Boolean. An int parameter should be supplied. + * A boolean element is output. + *
    • + *
    • + * e Enumeration. An int parameter should be supplied. + * An enumeration element is output. + *
    • + *
    • + * i Integer. An int parameter should be supplied. + * An integer element is output. + *
    • + *
    • + * 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. + *
    • + *
    • + * n Null. No parameter is required. A null element is output. + *
    • + *
    • + * 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)! + *
    • + *
    • + * t Tag. An int specifying the tag to give the next element + * is provided. This works across calls. + *
    • + *
    • + * v,V Several octet strings. A QList* 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! + *
    • + *
    • + * { Begin sequence. No parameter is required. + *
    • + *
    • + * } End sequence. No parameter is required. + *
    • + *
    • + * [ Begin set. No parameter is required. + *
    • + *
    • + * ] End set. No parameter is required. + *
    • + *
    + */ + 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; + BerPrivate *const d; +}; + +} +#endif diff --git a/src/kldap_config.h.cmake b/src/kldap_config.h.cmake new file mode 100644 index 0000000..8abd3fa --- /dev/null +++ b/src/kldap_config.h.cmake @@ -0,0 +1,13 @@ +#cmakedefine LDAP_FOUND +#cmakedefine SASL2_FOUND +#cmakedefine HAVE_WINLDAP_H +#cmakedefine HAVE_LDAP_H +#cmakedefine HAVE_SYS_TIME_H +#cmakedefine HAVE_LDAP_START_TLS_S +#cmakedefine HAVE_LDAP_INITIALIZE +#cmakedefine HAVE_BER_MEMFREE +#cmakedefine HAVE_LDAP_UNBIND_EXT +#cmakedefine HAVE_LDAP_EXTENDED_OPERATION +#cmakedefine HAVE_LDAP_EXTENDED_OPERATION_S +#cmakedefine HAVE_LDAP_EXTENDED_OPERATION_PROTOTYPE +#cmakedefine HAVE_LDAP_EXTENDED_OPERATION_S_PROTOTYPE diff --git a/src/ldapattributeproxymodel.cpp b/src/ldapattributeproxymodel.cpp new file mode 100644 index 0000000..cdef09e --- /dev/null +++ b/src/ldapattributeproxymodel.cpp @@ -0,0 +1,159 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapattributeproxymodel.h" +#include "ldapmodel.h" +#include "ldapmodelnode_p.h" + +#include "ldap_debug.h" +#include + +using namespace KLDAP; + + +LdapAttributeProxyModel::LdapAttributeProxyModel(QObject *parent) + : QSortFilterProxyModel(parent) +{ + +} + +LdapAttributeProxyModel::~LdapAttributeProxyModel() +{ +} + +QVariant LdapAttributeProxyModel::data(const QModelIndex &index, + int role) const +{ + // Included just in case we decide to do any special presentation of the data + // at some other point throughout the 4.x series. + return sourceModel()->data(mapToSource(index), role); +} + +bool LdapAttributeProxyModel::setData(const QModelIndex &index, + const QVariant &value, + int role) +{ + Q_UNUSED(index); + Q_UNUSED(value); + Q_UNUSED(role); + return false; +} + +bool LdapAttributeProxyModel::filterAcceptsRow(int sourceRow, + const QModelIndex &sourceParent) const +{ + QModelIndex idx = sourceModel()->index(sourceRow, 0, sourceParent); + LdapModelNode::NodeType nodeType = + static_cast( + sourceModel()->data(idx, LdapModel::NodeTypeRole).toUInt()); + return nodeType == LdapModelNode::Attr; +} + +QVariant LdapAttributeProxyModel::headerData(int section, + Qt::Orientation orientation, + int role) const +{ + if (orientation == Qt::Horizontal && role == Qt::DisplayRole) { + if (section == 0) { + return QVariant(i18n("Attribute")); + } else if (section == 1) { + return QVariant(i18n("Value")); + } + } + + return QVariant(); +} + +int LdapAttributeProxyModel::columnCount(const QModelIndex &/*parent*/) const +{ + return 2; +} + +Qt::ItemFlags LdapAttributeProxyModel::flags(const QModelIndex &index) const +{ + // Included so as not to break BC in case we wish to use this later in 4.x + return sourceModel()->flags(mapToSource(index)); +} + +bool LdapAttributeProxyModel::hasChildren(const QModelIndex &parent) const +{ + // We need to handle this carefully bacause of the filtering out of attributes + // and the lazy population approach. + LdapModel *model = static_cast(sourceModel()); + return model->hasChildrenOfType(mapToSource(parent), LdapModel::Attribute); +} + +QModelIndex LdapAttributeProxyModel::mapFromSource(const QModelIndex &sourceIndex) const +{ + return QSortFilterProxyModel::mapFromSource(sourceIndex); +} + +QModelIndex LdapAttributeProxyModel::mapToSource(const QModelIndex &proxyIndex) const +{ + return QSortFilterProxyModel::mapToSource(proxyIndex); +} + +bool LdapAttributeProxyModel::insertRows(int row, int count, + const QModelIndex &parent) +{ + Q_UNUSED(row); + Q_UNUSED(count); + Q_UNUSED(parent); + return false; +} + +bool LdapAttributeProxyModel::removeRows(int row, int count, + const QModelIndex &parent) +{ + Q_UNUSED(row); + Q_UNUSED(count); + Q_UNUSED(parent); + return false; +} + +void LdapAttributeProxyModel::sort(int column, Qt::SortOrder order) +{ + Q_UNUSED(column); + Q_UNUSED(order); +} + +Qt::DropActions LdapAttributeProxyModel::supportedDropActions() const +{ + return Qt::MoveAction; +} + +QMimeData *LdapAttributeProxyModel::mimeData(const QModelIndexList &indexes) const +{ + Q_UNUSED(indexes); + return nullptr; +} + +bool LdapAttributeProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) +{ + /** \todo Implement drag and drop for LdapModel */ + Q_UNUSED(data); + Q_UNUSED(action); + Q_UNUSED(row); + Q_UNUSED(column); + Q_UNUSED(parent); + return false; +} + diff --git a/src/ldapattributeproxymodel.h b/src/ldapattributeproxymodel.h new file mode 100644 index 0000000..f43add9 --- /dev/null +++ b/src/ldapattributeproxymodel.h @@ -0,0 +1,95 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPATTRIBUTEPROXYMODEL_H +#define KLDAP_LDAPATTRIBUTEPROXYMODEL_H + +#include + +#include "kldap_export.h" + +namespace KLDAP +{ + +class KLDAP_EXPORT LdapAttributeProxyModel : public QSortFilterProxyModel +{ + Q_OBJECT +public: + explicit LdapAttributeProxyModel(QObject *parent = nullptr); + ~LdapAttributeProxyModel() override; + + Q_REQUIRED_RESULT QVariant data(const QModelIndex &index, int role) const override; + /** + * Reimplemented from QAbstractItemModel::setData(). This is a placeholder for when + * LdapAttributeProxyModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool setData(const QModelIndex &index, + const QVariant &value, + int role = Qt::EditRole) override; + Q_REQUIRED_RESULT bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; + Q_REQUIRED_RESULT QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + Q_REQUIRED_RESULT int columnCount(const QModelIndex &parent) const override; + Q_REQUIRED_RESULT Qt::ItemFlags flags(const QModelIndex &index) const override; + Q_REQUIRED_RESULT bool hasChildren(const QModelIndex &parent) const override; + + Q_REQUIRED_RESULT QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override; + Q_REQUIRED_RESULT QModelIndex mapToSource(const QModelIndex &proxyIndex) const override; + + /** + * Reimplemented from QAbstractItemModel::insertRows(). This is a placeholder for when + * LdapAttributeProxyModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool insertRows(int row, int count, + const QModelIndex &parent = QModelIndex()) override; + /** + * Reimplemented from QAbstractItemModel::removeRows(). This is a placeholder for when + * LdapAttributeProxyModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool removeRows(int row, int count, + const QModelIndex &parent = QModelIndex()) override; + /** + * Reimplemented from QAbstractItemModel::removeRows(). The default implementation + * does nothing. + */ + void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; + + // + // Drag and drop support + // + /** + * Reimplemented from QAbstractItemModel::supportedDropActions(). The default + * implementation returns Qt::MoveAction. + */ + Q_REQUIRED_RESULT Qt::DropActions supportedDropActions() const override; + /** + * Reimplemented from QAbstractItemModel::mimedata(). This is a placeholder for when + * LdapAttributeProxyModel beomes writeable and always returns 0. + */ + QMimeData *mimeData(const QModelIndexList &indexes) const override; + /** + * Reimplemented from QAbstractItemModel::dropMimedata(). This is a placeholder for when + * LdapAttributeProxyModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) override; +}; + +} +#endif diff --git a/src/ldapconfigwidget.cpp b/src/ldapconfigwidget.cpp new file mode 100644 index 0000000..e2086d3 --- /dev/null +++ b/src/ldapconfigwidget.cpp @@ -0,0 +1,901 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapconfigwidget.h" +#include "ldapsearch.h" + +#include +#include +#include "ldap_debug.h" +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +using namespace KLDAP; + +class Q_DECL_HIDDEN LdapConfigWidget::Private +{ +public: + Private(LdapConfigWidget *parent) + : mParent(parent) + { + mainLayout = new QGridLayout(mParent); + mainLayout->setMargin(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 *mParent = nullptr; + WinFlags mFeatures = W_ALL; + 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; + KComboBox *mMech = nullptr; + + bool mCancelled = false; + QProgressDialog *mProg = nullptr; + + QGridLayout *mainLayout = nullptr; +}; + +void LdapConfigWidget::Private::initWidget() +{ + QLabel *label = nullptr; + + mUser = mHost = mDn = mBindDn = mRealm = mFilter = nullptr; + mPassword = nullptr; + mPort = mVersion = mTimeLimit = mSizeLimit = nullptr; + mAnonymous = mSimple = mSASL = mSecNo = mSecTLS = mSecSSL = nullptr; + mEditButton = mQueryMech = nullptr; + mPageSize = nullptr; + mMech = nullptr; + int row = 0; + int col; + + if (mFeatures & W_USER) { + label = new QLabel(i18n("User:"), mParent); + mUser = new QLineEdit(mParent); + mUser->setObjectName(QStringLiteral("kcfg_ldapuser")); + + mainLayout->addWidget(label, row, 0); + mainLayout->addWidget(mUser, row, 1, 1, 3); + row++; + } + + if (mFeatures & W_BINDDN) { + label = new QLabel(i18n("Bind DN:"), mParent); + mBindDn = new QLineEdit(mParent); + mBindDn->setObjectName(QStringLiteral("kcfg_ldapbinddn")); + + mainLayout->addWidget(label, row, 0); + mainLayout->addWidget(mBindDn, row, 1, 1, 3); + row++; + } + + if (mFeatures & W_REALM) { + label = new QLabel(i18n("Realm:"), mParent); + mRealm = new QLineEdit(mParent); + mRealm->setObjectName(QStringLiteral("kcfg_ldaprealm")); + + mainLayout->addWidget(label, row, 0); + mainLayout->addWidget(mRealm, row, 1, 1, 3); + row++; + } + + if (mFeatures & W_PASS) { + label = new QLabel(i18n("Password:"), mParent); + mPassword = new KPasswordLineEdit(mParent); + mPassword->setObjectName(QStringLiteral("kcfg_ldappassword")); + + mainLayout->addWidget(label, row, 0); + mainLayout->addWidget(mPassword, row, 1, 1, 3); + row++; + } + + if (mFeatures & W_HOST) { + label = new QLabel(i18n("Host:"), mParent); + mHost = new QLineEdit(mParent); + mHost->setObjectName(QStringLiteral("kcfg_ldaphost")); + mParent->connect(mHost, &QLineEdit::textChanged, mParent, &LdapConfigWidget::hostNameChanged); + mainLayout->addWidget(label, row, 0); + mainLayout->addWidget(mHost, row, 1, 1, 3); + row++; + } + + col = 0; + if (mFeatures & W_PORT) { + label = new QLabel(i18n("Port:"), mParent); + mPort = new QSpinBox(mParent); + mPort->setRange(0, 65535); + mPort->setObjectName(QStringLiteral("kcfg_ldapport")); + mPort->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred)); + mPort->setValue(389); + + mainLayout->addWidget(label, row, col); + mainLayout->addWidget(mPort, row, col + 1); + col += 2; + } + + if (mFeatures & W_VER) { + label = new QLabel(i18n("LDAP version:"), mParent); + mVersion = new QSpinBox(mParent); + mVersion->setRange(2, 3); + mVersion->setObjectName(QStringLiteral("kcfg_ldapver")); + mVersion->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred)); + mVersion->setValue(3); + mainLayout->addWidget(label, row, col); + mainLayout->addWidget(mVersion, row, col + 1); + } + if (mFeatures & (W_PORT | W_VER)) { + row++; + } + + col = 0; + if (mFeatures & W_SIZELIMIT) { + label = new QLabel(i18n("Size limit:"), mParent); + mSizeLimit = new QSpinBox(mParent); + mSizeLimit->setRange(0, 9999999); + mSizeLimit->setObjectName(QStringLiteral("kcfg_ldapsizelimit")); + mSizeLimit->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred)); + mSizeLimit->setValue(0); + mSizeLimit->setSpecialValueText(i18nc("default ldap size limit", "Default")); + mainLayout->addWidget(label, row, col); + mainLayout->addWidget(mSizeLimit, row, col + 1); + col += 2; + } + + if (mFeatures & W_TIMELIMIT) { + label = new QLabel(i18n("Time limit:"), mParent); + mTimeLimit = new QSpinBox(mParent); + mTimeLimit->setRange(0, 9999999); + mTimeLimit->setObjectName(QStringLiteral("kcfg_ldaptimelimit")); + mTimeLimit->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred)); + mTimeLimit->setValue(0); + mTimeLimit->setSuffix(i18n(" sec")); + mTimeLimit->setSpecialValueText(i18nc("default ldap time limit", "Default")); + mainLayout->addWidget(label, row, col); + mainLayout->addWidget(mTimeLimit, row, col + 1); + } + if (mFeatures & (W_SIZELIMIT | W_TIMELIMIT)) { + row++; + } + + if (mFeatures & W_PAGESIZE) { + label = new QLabel(i18n("Page size:"), mParent); + mPageSize = new QSpinBox(mParent); + mPageSize->setRange(0, 9999999); + mPageSize->setObjectName(QStringLiteral("kcfg_ldappagesize")); + mPageSize->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred)); + mPageSize->setValue(0); + mPageSize->setSpecialValueText(i18n("No paging")); + mainLayout->addWidget(label, row, 0); + mainLayout->addWidget(mPageSize, row++, 1); + } + + if (mFeatures & W_DN) { + label = new QLabel(i18nc("Distinguished Name", "DN:"), mParent); + mDn = new QLineEdit(mParent); + mDn->setObjectName(QStringLiteral("kcfg_ldapdn")); + + mainLayout->addWidget(label, row, 0); + mainLayout->addWidget(mDn, row, 1, 1, 1); + //without host query doesn't make sense + if (mHost) { + QPushButton *dnquery = new QPushButton(i18n("Query Server"), mParent); + connect(dnquery, &QPushButton::clicked, mParent, [this]() { queryDNClicked(); }); + mainLayout->addWidget(dnquery, row, 2, 1, 1); + } + row++; + } + + if (mFeatures & W_FILTER) { + label = new QLabel(i18n("Filter:"), mParent); + mFilter = new QLineEdit(mParent); + mFilter->setObjectName(QStringLiteral("kcfg_ldapfilter")); + + mainLayout->addWidget(label, row, 0); + mainLayout->addWidget(mFilter, row, 1, 1, 3); + row++; + } + + if (mFeatures & W_SECBOX) { + QGroupBox *btgroup = new QGroupBox(i18n("Security"), mParent); + QHBoxLayout *hbox = new QHBoxLayout; + btgroup->setLayout(hbox); + 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); + mainLayout->addWidget(btgroup, row, 0, 1, 4); + + connect(mSecNo, &QRadioButton::clicked, mParent, [this]() { setLDAPPort(); }); + connect(mSecTLS, &QRadioButton::clicked, mParent, [this]() { setLDAPPort(); }); + connect(mSecSSL, &QRadioButton::clicked, mParent, [this]() { setLDAPSPort(); }); + + mSecNo->setChecked(true); + row++; + } + + if (mFeatures & W_AUTHBOX) { + + QGroupBox *authbox = + new QGroupBox(i18n("Authentication"), mParent); + QVBoxLayout *vbox = new QVBoxLayout; + authbox->setLayout(vbox); + QHBoxLayout *hbox = new QHBoxLayout; + vbox->addLayout(hbox); + + 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); + + hbox = new QHBoxLayout; + vbox->addLayout(hbox); + label = new QLabel(i18n("SASL mechanism:"), authbox); + hbox->addWidget(label); + mMech = new KComboBox(authbox); + 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->addWidget(authbox, row, 0, 2, 4); + + 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::Private::sendQuery() +{ + LdapServer _server(mParent->server()); + + mQResult.clear(); + mCancelled = true; + + if (mAttr == QLatin1String("supportedsaslmechanisms")) { + _server.setAuth(LdapServer::Anonymous); + } + + LdapUrl _url(_server.url()); + + _url.setDn(LdapDN(QStringLiteral(""))); + _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 == nullptr) { + mProg = new QProgressDialog(mParent); + mProg->setWindowTitle(i18n("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::Private::queryMechClicked() +{ + mAttr = QStringLiteral("supportedsaslmechanisms"); + sendQuery(); + if (!mQResult.isEmpty()) { + mQResult.sort(); + mMech->clear(); + mMech->addItems(mQResult); + } +} + +void LdapConfigWidget::Private::queryDNClicked() +{ + mAttr = QStringLiteral("namingcontexts"); + sendQuery(); + if (!mQResult.isEmpty()) { + mDn->setText(mQResult.constFirst()); + } +} + +void LdapConfigWidget::Private::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::Private::loadResult(LdapSearch *search) +{ + Q_UNUSED(search); + mCancelled = false; + mProg->close(); +} + +void LdapConfigWidget::Private::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::Private::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::Private::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::Private::setLDAPPort() +{ + if (mPort) { + mPort->setValue(389); + } +} + +void LdapConfigWidget::Private::setLDAPSPort() +{ + if (mPort) { + mPort->setValue(636); + } +} + +LdapConfigWidget::LdapConfigWidget(QWidget *parent, Qt::WindowFlags fl) + : QWidget(parent, fl), d(new Private(this)) +{ +} + +LdapConfigWidget::LdapConfigWidget(LdapConfigWidget::WinFlags flags, + QWidget *parent, Qt::WindowFlags fl) + : QWidget(parent, fl), d(new Private(this)) +{ + d->mFeatures = flags; + + d->initWidget(); +} + +LdapConfigWidget::~LdapConfigWidget() +{ + delete d; +} + +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 ch = children(); + const int numberOfChild(ch.count()); + for (int i = 0; i < numberOfChild; ++i) { + QWidget *widget = dynamic_cast(ch[ i ]); + if (widget && widget->parent() == this) { + delete(widget); + } + } + + // Re-create child widgets according to the new flags + d->initWidget(); +} + +#include "moc_ldapconfigwidget.cpp" diff --git a/src/ldapconfigwidget.h b/src/ldapconfigwidget.h new file mode 100644 index 0000000..94cee4a --- /dev/null +++ b/src/ldapconfigwidget.h @@ -0,0 +1,282 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPCONFIGWIDGET_H +#define KLDAP_LDAPCONFIGWIDGET_H + +#include +#include + +#include "ldapdn.h" +#include "kldap_export.h" +#include "ldapobject.h" +#include "ldapserver.h" +#include "ldapurl.h" + +namespace KLDAP +{ + +class LdapSearch; + +/** + @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(); + + /** 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 Private; + Private *const d; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(LdapConfigWidget::WinFlags) + +} + +#endif diff --git a/src/ldapconnection.cpp b/src/ldapconnection.cpp new file mode 100644 index 0000000..efabf8b --- /dev/null +++ b/src/ldapconnection.cpp @@ -0,0 +1,468 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapconnection.h" +#include "ldapdefs.h" +#include "kldap_config.h" // SASL2_FOUND, LDAP_FOUND + +#include +#include +#include "ldap_debug.h" + +#ifdef SASL2_FOUND +#include +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; +#endif + +#ifdef LDAP_FOUND +# ifndef HAVE_WINLDAP_H +# include +# include +#else +# include +#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; + +#ifdef LDAP_FOUND + LDAP *mLDAP; +#else + void *mLDAP; +#endif +#ifdef SASL2_FOUND + sasl_conn_t *mSASLconn; +#else + void *mSASLconn; +#endif + +}; + +LdapConnection::LdapConnectionPrivate::LdapConnectionPrivate() +{ + mSASLconn = nullptr; +#ifdef SASL2_FOUND + if (!ldapoperation_sasl_initialized) { + sasl_client_init(nullptr); + ldapoperation_sasl_initialized = true; + } +#endif +} + +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(); + delete d; +} + +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 +#ifdef LDAP_FOUND + return QString::fromUtf8(ldap_err2string(code)); +#else + return i18n("No LDAP Support..."); +#endif +} + +QString LdapConnection::saslErrorString() const +{ +#ifdef SASL2_FOUND + const char *str; + str = sasl_errdetail(d->mSASLconn); + return QString::fromLocal8Bit(str); +#else + return i18n("SASL support is not available. Please recompile libkldap with the " + "Cyrus-SASL (or compatible) client libraries, or complain to your " + "distribution packagers."); +#endif +} + +QString LdapConnection::connectionError() const +{ + return d->mConnectionError; +} + +#ifdef 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; +#ifdef 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 + + //FIXME: accessing to certificate handling would be good + qCDebug(LDAP_LOG) << "setting security to:" << d->mServer.security(); + if (d->mServer.security() == LdapServer::TLS) { + 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; + } + } + + qCDebug(LDAP_LOG) << "start TLS"; + +#ifdef 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; + } + } + +#ifdef SASL2_FOUND + qCDebug(LDAP_LOG) << "initializing SASL client"; + 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; + } +#endif + + return 0; +} + +void LdapConnection::close() +{ + if (d->mLDAP) { +#ifdef HAVE_LDAP_UNBIND_EXT + ldap_unbind_ext(d->mLDAP, nullptr, nullptr); +#else + ldap_unbind(d->mLDAP); +#endif + } + d->mLDAP = nullptr; +#ifdef SASL2_FOUND + if (d->mSASLconn) { + sasl_dispose(&d->mSASLconn); + d->mSASLconn = nullptr; + } +#endif + 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 diff --git a/src/ldapconnection.h b/src/ldapconnection.h new file mode 100644 index 0000000..174bb81 --- /dev/null +++ b/src/ldapconnection.h @@ -0,0 +1,146 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPCONNECTION_H +#define KLDAP_LDAPCONNECTION_H + +#include + +#include "ldapurl.h" +#include "ldapserver.h" +#include "kldap_export.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 + */ + Q_REQUIRED_RESULT 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 */ + Q_REQUIRED_RESULT 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; + LdapConnectionPrivate *const d; + + Q_DISABLE_COPY(LdapConnection) +}; + +} + +#endif diff --git a/src/ldapcontrol.cpp b/src/ldapcontrol.cpp new file mode 100644 index 0000000..c966e5a --- /dev/null +++ b/src/ldapcontrol.cpp @@ -0,0 +1,157 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapcontrol.h" +#include "ber.h" + +#include + +using namespace KLDAP; + +class LdapControlPrivate : public QSharedData +{ +public: + LdapControlPrivate() + { + } + + LdapControlPrivate(const LdapControlPrivate &other) + : QSharedData(other) + { + mOid = other.mOid; + mValue = other.mValue; + mCritical = other.mCritical; + } + + 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() +{ +} + +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); +} diff --git a/src/ldapcontrol.h b/src/ldapcontrol.h new file mode 100644 index 0000000..e7e3982 --- /dev/null +++ b/src/ldapcontrol.h @@ -0,0 +1,120 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPCONTROL_H +#define KLDAP_LDAPCONTROL_H + +#include +#include +#include +class LdapControlPrivate; + +#include "kldap_export.h" + +// clazy:excludeall=copyable-polymorphic + +namespace KLDAP +{ + +class LdapControl; +typedef QVector LdapControls; + +/** + @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 d; +}; + +} + +#endif diff --git a/src/ldapdefs.h b/src/ldapdefs.h new file mode 100644 index 0000000..9a643f9 --- /dev/null +++ b/src/ldapdefs.h @@ -0,0 +1,161 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_DEFS_H +#define KLDAP_DEFS_H + +/** + * 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 + +#endif //KLDAP_DEFS_H diff --git a/src/ldapdn.cpp b/src/ldapdn.cpp new file mode 100644 index 0000000..71e4b9b --- /dev/null +++ b/src/ldapdn.cpp @@ -0,0 +1,210 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapdn.h" + +#include + +#include "ldap_debug.h" + +using namespace KLDAP; + +class Q_DECL_HIDDEN LdapDN::LdapDNPrivate +{ +public: + LdapDNPrivate() : m_dn() {} + ~LdapDNPrivate() {} + + bool isValidRDNString(const QString &rdn) const; + 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 QVector components = rdn.splitRef(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 delimeter + 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() +{ + delete d; +} + +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 +{ + QStringList rdns = d->splitOnNonEscapedChar(d->m_dn, QLatin1Char(',')); + if (depth >= rdns.size()) { + return QString(); + } + + // 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.truncate(dn.length() - 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 */ + QStringList rdns = d->splitOnNonEscapedChar(d->m_dn, QLatin1Char(',')); + return rdns.at(0); +} + +QString LdapDN::rdnString(int depth) const +{ + QStringList rdns = d->splitOnNonEscapedChar(d->m_dn, QLatin1Char(',')); + if (depth >= rdns.size()) { + return QString(); + } + 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 +{ + 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; +} diff --git a/src/ldapdn.h b/src/ldapdn.h new file mode 100644 index 0000000..0a11b0f --- /dev/null +++ b/src/ldapdn.h @@ -0,0 +1,88 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPDN_H +#define KLDAP_LDAPDN_H + +#include "kldap_export.h" +#include + +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; + LdapDNPrivate *const d; +}; + +} + +#endif diff --git a/src/ldapmodel.cpp b/src/ldapmodel.cpp new file mode 100644 index 0000000..4fa5edc --- /dev/null +++ b/src/ldapmodel.cpp @@ -0,0 +1,319 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapmodel.h" +#include "ldapmodel_p.h" +#include "ldapmodelnode_p.h" +#include "ldapsearch.h" + +#include "ldap_debug.h" +#include + +using namespace KLDAP; + +LdapModel::LdapModel(QObject *parent) + : QAbstractItemModel(parent), + m_d(new LdapModelPrivate(this)) +{ + m_d->createConnections(); +} + +LdapModel::LdapModel(LdapConnection &connection, QObject *parent) + : QAbstractItemModel(parent), + m_d(new LdapModelPrivate(this, connection)) +{ + m_d->createConnections(); + + // Populate items from the root object to that representing the baseDN + m_d->populateRootToBaseDN(); +} + +LdapModel::~LdapModel() +{ + delete m_d; +} + +void LdapModel::setConnection(LdapConnection &connection) +{ + m_d->setConnection(connection); + + // Refresh the model + m_d->recreateRootItem(); + + // Populate the root object by searching the baseDN + m_d->populateRootToBaseDN(); +} + +QModelIndex LdapModel::parent(const QModelIndex &child) const +{ + if (!child.isValid()) { + return QModelIndex(); + } + + LdapModelNode *childItem = static_cast(child.internalPointer()); + LdapModelDNNode *parentItem = childItem->parent(); + + if (parentItem == m_d->rootNode()) { + return QModelIndex(); + } + + return createIndex(parentItem->row(), 0, parentItem); +} + +QModelIndex LdapModel::index(int row, int col, const QModelIndex &parent) const +{ + // Retrieve a pointer to the parent item + LdapModelDNNode *parentItem = nullptr; + if (!parent.isValid()) { + parentItem = m_d->rootNode(); + } else { + parentItem = static_cast(parent.internalPointer()); + } + + LdapModelNode *childItem = parentItem->child(row); + if (childItem) { + return createIndex(row, col, childItem); + } + qCDebug(LDAP_LOG) << "Could not create valid index for row =" << row << ", col =" << col; + return QModelIndex(); +} + +QVariant LdapModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) { + return QVariant(); + } + + if (role == Qt::DisplayRole) { + // This is what gets displayed by the view delegates. + LdapModelNode *node = static_cast(index.internalPointer()); + if (node->nodeType() == LdapModelNode::DN) { + LdapModelDNNode *dn = static_cast(node); + if (index.column() == 0) { + return dn->dn().rdnString(); + } else { + return QVariant(); + } + } else { + LdapModelAttrNode *attr = static_cast(node); + if (index.column() == 0) { + return QVariant(attr->attributeName()); + } else { + return QVariant(QLatin1String(attr->attributeData().constData())); + } + } + } else if (role == NodeTypeRole) { + LdapModelNode *node = static_cast(index.internalPointer()); + return QVariant(int(node->nodeType())); + } + + /** \todo Include support for nice decorative icons dependent upon + the objectClass + other role data. */ + /** \todo Include support for other roles as needed */ + + return QVariant(); +} + +bool LdapModel::setData(const QModelIndex &index, + const QVariant &value, + int role) +{ + Q_UNUSED(index); + Q_UNUSED(value); + Q_UNUSED(role); + return false; +} + +QVariant LdapModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (orientation == Qt::Horizontal && role == Qt::DisplayRole) { + if (section == 0) { + return i18n("Attribute"); + } else { + return i18n("Value"); + } + } + + return QVariant(); +} + +Qt::ItemFlags LdapModel::flags(const QModelIndex &index) const +{ + /** \TODO Read-only for now, make read-write upon request */ + if (!index.isValid()) { + return Qt::ItemIsEnabled; + } + + return Qt::ItemFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); +} + +int LdapModel::columnCount(const QModelIndex &parent) const +{ + LdapModelDNNode *parentNode = + parent.isValid() ? static_cast(parent.internalPointer()) : m_d->rootNode(); + return parentNode->columnCount(); +} + +int LdapModel::rowCount(const QModelIndex &parent) const +{ + if (parent.column() > 0) { + return 0; + } + + const LdapModelDNNode *parentNode = + parent.isValid() ? static_cast(parent.internalPointer()) : m_d->rootNode(); + return parentNode->childCount(); +} + +bool LdapModel::hasChildren(const QModelIndex &parent) const +{ + // We return true unless the item has been populated and we are able to do a definitive test + const LdapModelNode *node = parent.isValid() ? + static_cast(parent.internalPointer()) : + m_d->rootNode(); + + if (node->nodeType() != LdapModelNode::DN) { + return false; + } + + const LdapModelDNNode *parentNode = static_cast(node); + if (!parent.isValid() || parentNode->isPopulated()) { + return parentNode->childCount() > 0; + } + return true; +} + +bool LdapModel::canFetchMore(const QModelIndex &parent) const +{ + const LdapModelDNNode *parentNode = + parent.isValid() ? static_cast(parent.internalPointer()) : m_d->rootNode(); + return !parentNode->isPopulated(); +} + +void LdapModel::fetchMore(const QModelIndex &parent) +{ + LdapModelDNNode *parentNode = + parent.isValid() ? static_cast(parent.internalPointer()) : m_d->rootNode(); + + // Search for the immediate children of parentItem. + m_d->searchResults().clear(); + m_d->setSearchType(LdapModelPrivate::ChildObjects, parentNode); + m_d->search(parentNode->dn(), // DN to search from + LdapUrl::One, // What to search + QString()); // Attributes to retrieve + parentNode->setPopulated(true); +} + +bool LdapModel::insertRows(int row, int count, + const QModelIndex &parent) +{ + Q_UNUSED(row); + Q_UNUSED(count); + Q_UNUSED(parent); + return false; +} + +bool LdapModel::removeRows(int row, int count, + const QModelIndex &parent) +{ + Q_UNUSED(row); + Q_UNUSED(count); + Q_UNUSED(parent); + return false; +} + +void LdapModel::sort(int column, Qt::SortOrder order) +{ + Q_UNUSED(column); + Q_UNUSED(order); +} + +Qt::DropActions LdapModel::supportedDropActions() const +{ + return Qt::MoveAction; +} + +QMimeData *LdapModel::mimeData(const QModelIndexList &indexes) const +{ + Q_UNUSED(indexes); + return nullptr; +} + +bool LdapModel::dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) +{ + /** \todo Implement drag and drop for LdapModel */ + Q_UNUSED(data); + Q_UNUSED(action); + Q_UNUSED(row); + Q_UNUSED(column); + Q_UNUSED(parent); + return false; +} + +bool LdapModel::hasChildrenOfType(const QModelIndex &parent, LdapDataType type) const +{ + // Map from LdapDataType to our internal NodeType + LdapModelNode::NodeType nodeType; + switch (type) { + case Attribute: + nodeType = LdapModelNode::Attr; + break; + + case DistinguishedName: + default: + nodeType = LdapModelNode::DN; + break; + } + + const LdapModelNode *node = parent.isValid() ? + static_cast(parent.internalPointer()) : + m_d->rootNode(); + + const LdapModelDNNode *parentNode = static_cast(node); + if (!parent.isValid() || parentNode->isPopulated()) { + // Check to see if the parent has any children of the specified type + const QList &children = parentNode->children(); + for (LdapModelNode *child : children) { + if (child->nodeType() == nodeType) { + return true; + } + } + + // Either there are no children or only children of a different type + return false; + } + + // If the node is not populated or is the root node (invalid), then return + // true to be on the safe side. + return true; +} + +void LdapModel::revert() +{ + +} + +bool LdapModel::submit() +{ + return false; +} + +#include "moc_ldapmodel.cpp" diff --git a/src/ldapmodel.h b/src/ldapmodel.h new file mode 100644 index 0000000..10c5d2b --- /dev/null +++ b/src/ldapmodel.h @@ -0,0 +1,214 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPMODEL_H +#define KLDAP_LDAPMODEL_H + +#include + +#include "ldapconnection.h" +#include "ldapobject.h" +#include "kldap_export.h" + +namespace KLDAP +{ + +/** + * A ModelView interface to an LDAP tree. At present the model is read only. Editing is + * planned for a future release. + * + * This class is best used in conjunction with an LdapStructureProxyModel object for + * displaying the structure of an LDAP tree, and with LdapAttributeProxyModel for + * displaying the attributes of particular objects within the tree. + * + * \author Sean Harmer + */ +class KLDAP_EXPORT LdapModel : public QAbstractItemModel +{ + Q_OBJECT +public: + enum Roles { + NodeTypeRole = Qt::UserRole + 1 + }; + + enum LdapDataType { + DistinguishedName = 0, + Attribute + }; + + /** + * Constructs an LdapModel. You should set a connection for the model to use with + * setConnection(). Clients of this class should connect a slot to the ready() signal + * before setting this model onto a view. + * @param parent the parent QObject + * \see setConnection() + * \see ready() + */ + explicit LdapModel(QObject *parent = nullptr); + /** + * Constructs an LdapModel. Clients of this class should connect a slot to the ready() + * signal before setting this model onto a view. + * @param connection the Ldap connection to use in model construction + * @param parent the parent QObject + * \see setConnection() + * \see ready() + */ + explicit LdapModel(LdapConnection &connection, QObject *parent = nullptr); + ~LdapModel() override; + + /** + * Set the connection that the model should use. + * @param connection the model connection to set + * \see LdapConnection + * \see LdapUrl + */ + void setConnection(LdapConnection &connection); + + // + // Implement the usual QAbstractItemModel interface + // + /** + * Reimplemented from QAbstractItemModel::index(). + */ + Q_REQUIRED_RESULT QModelIndex index(int row, int col, const QModelIndex &parent) const override; + /** + * Reimplemented from QAbstractItemModel::parent(). + */ + Q_REQUIRED_RESULT QModelIndex parent(const QModelIndex &child) const override; + /** + * Reimplemented from QAbstractItemModel::data(). + */ + Q_REQUIRED_RESULT QVariant data(const QModelIndex &index, int role) const override; + /** + * Reimplemented from QAbstractItemModel::setData(). This is a placeholder for when + * LdapModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool setData(const QModelIndex &index, + const QVariant &value, + int role = Qt::EditRole) override; + /** + * Reimplemented from QAbstractItemModel::headerData(). + */ + Q_REQUIRED_RESULT QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + /** + * Reimplemented from QAbstractItemModel::flags(). + */ + Q_REQUIRED_RESULT Qt::ItemFlags flags(const QModelIndex &index) const override; + /** + * Reimplemented from QAbstractItemModel::columnCount(). + */ + Q_REQUIRED_RESULT int columnCount(const QModelIndex &parent) const override; + /** + * Reimplemented from QAbstractItemModel::rowCount(). + */ + Q_REQUIRED_RESULT int rowCount(const QModelIndex &parent) const override; + /** + * Reimplemented from QAbstractItemModel::hasChildren(). + */ + Q_REQUIRED_RESULT bool hasChildren(const QModelIndex &parent) const override; + /** + * Reimplemented from QAbstractItemModel::canFetchMore(). + */ + Q_REQUIRED_RESULT bool canFetchMore(const QModelIndex &parent) const override; + /** + * Reimplemented from QAbstractItemModel::fetchMore(). + */ + void fetchMore(const QModelIndex &parent) override; + /** + * Reimplemented from QAbstractItemModel::insertRows(). This is a placeholder for when + * LdapModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool insertRows(int row, int count, + const QModelIndex &parent = QModelIndex()) override; + /** + * Reimplemented from QAbstractItemModel::removeRows(). This is a placeholder for when + * LdapModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool removeRows(int row, int count, + const QModelIndex &parent = QModelIndex()) override; + /** + * Reimplemented from QAbstractItemModel::removeRows(). The default implementation + * does nothing. + */ + void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; + + // + // Drag and drop support + // + /** + * Reimplemented from QAbstractItemModel::supportedDropActions(). The default + * implementation returns Qt::MoveAction. + */ + Q_REQUIRED_RESULT Qt::DropActions supportedDropActions() const override; + /** + * Reimplemented from QAbstractItemModel::mimedata(). This is a placeholder for when + * LdapModel beomes writeable and always returns 0. + */ + QMimeData *mimeData(const QModelIndexList &indexes) const override; + /** + * Reimplemented from QAbstractItemModel::dropMimedata(). This is a placeholder for when + * LdapModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) override; + + // + // Other public utility functions + // + /** + * Checks to see if the item referenced by \p parent has any children of + * the type \p type. If the item has not been populated by fetchMore() yet, + * then this function returns true. + * + * \see fetchMore() + * \param parent Index to the item to query. + * \param type The type of child item to search for. + */ + bool hasChildrenOfType(const QModelIndex &parent, LdapDataType type) const; + +public Q_SLOTS: + /** + * Reimplemented from QAbstractItemModel::revert(). This is a placeholder for when + * LdapModel beomes writeable. This implementation does nothing. + */ + void revert() override; + /** + * Reimplemented from QAbstractItemModel::revert(). This is a placeholder for when + * LdapModel beomes writeable. This implementation does nothing and returns false. + */ + bool submit() override; + +Q_SIGNALS: + /** + * The ready() signal is emitted when the model is ready for use by other components. + * When the model is first created and a connection is set, the model queries the + * LDAP server for its base DN and automatically creates items down to that level. + * This requires the event loop to be running. This signal indicates that this process + * has completed and the model can now be set onto views or queried directly from code. + */ + void ready(); + +private: + class LdapModelPrivate; + LdapModelPrivate *const m_d; +}; + +} +#endif diff --git a/src/ldapmodel_p.cpp b/src/ldapmodel_p.cpp new file mode 100644 index 0000000..77d6423 --- /dev/null +++ b/src/ldapmodel_p.cpp @@ -0,0 +1,210 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapmodel_p.h" +#include "ldapmodelnode_p.h" +#include "ldapsearch.h" + +#include "ldap_debug.h" + +using namespace KLDAP; + +LdapModel::LdapModelPrivate::LdapModelPrivate(LdapModel *parent) + : m_parent(parent), + m_root(new LdapModelDNNode), + m_search(new LdapSearch), + m_searchResultObjects(), + m_baseDN(), + m_searchType(NotSearching), + m_searchItem(nullptr) +{ +} + +LdapModel::LdapModelPrivate::LdapModelPrivate(LdapModel *parent, LdapConnection &connection) + : m_parent(parent), + m_root(new LdapModelDNNode), + m_search(new LdapSearch(connection)), + m_searchResultObjects(), + m_baseDN(), + m_searchType(NotSearching), + m_searchItem(nullptr) +{ +} + +LdapModel::LdapModelPrivate::~LdapModelPrivate() +{ + delete m_root; + + delete m_search; +} + +void LdapModel::LdapModelPrivate::setConnection(LdapConnection &connection) +{ + m_search->setConnection(connection); +} + +bool LdapModel::LdapModelPrivate::search(const LdapDN &searchBase, + LdapUrl::Scope scope, + const QString &filter, + const QStringList &attributes, + int pagesize) +{ + return m_search->search(searchBase, scope, filter, attributes, pagesize); +} + +void LdapModel::LdapModelPrivate::setSearchType(SearchType t, LdapModelDNNode *item) +{ + //qCDebug(LDAP_LOG) << "item =" << item; + m_searchType = t; + m_searchItem = item; +} + +void LdapModel::LdapModelPrivate::recreateRootItem() +{ + //qCDebug(LDAP_LOG); + delete m_root; + m_root = new LdapModelDNNode; + //qCDebug(LDAP_LOG) << "&m_root =" << &m_root; +} + +void LdapModel::LdapModelPrivate::createConnections() +{ + connect(search(), &LdapSearch::data, m_parent, [this](KLDAP::LdapSearch *s, const KLDAP::LdapObject &obj) {gotSearchData(s, obj); }); + connect(search(), &LdapSearch::result, m_parent, [this](KLDAP::LdapSearch *s) { gotSearchResult(s); }); +} + +void LdapModel::LdapModelPrivate::populateRootToBaseDN() +{ + //qCDebug(LDAP_LOG); + + if (baseDN().isEmpty()) { + // Query the server for the base DN + //qCDebug(LDAP_LOG) << "Searching for the baseDN"; + setSearchType(LdapModelPrivate::NamingContexts, rootNode()); + search(LdapDN(), LdapUrl::Base, QString(), QStringList() << QStringLiteral("namingContexts")); + return; + } + + // Start a search for the details of the baseDN object + //qCDebug(LDAP_LOG) << "Searching for attributes of the baseDN"; + searchResults().clear(); + setSearchType(LdapModelPrivate::BaseDN, rootNode()); + search(baseDN(), LdapUrl::Base, QString(), QStringList() << QStringLiteral("dn") << QStringLiteral("objectClass")); +} + +void LdapModel::LdapModelPrivate::gotSearchResult(KLDAP::LdapSearch *search) +{ + Q_UNUSED(search); + qCDebug(LDAP_LOG); + + switch (searchType()) { + case LdapModelPrivate::NamingContexts: { + // Set the baseDN + QString baseDN; + if (!searchResults().isEmpty() && + searchResults().at(0).hasAttribute(QStringLiteral("namingContexts"))) { + baseDN = QString::fromLatin1(searchResults().at(0).value(QStringLiteral("namingContexts"))); + //qCDebug(LDAP_LOG) << "Found baseDN =" << baseDN; + } + setBaseDN(LdapDN(baseDN)); + + // Flag that we are no longer searching for the baseDN + setSearchType(LdapModelPrivate::NotSearching); + + // Populate the root item + populateRootToBaseDN(); + + break; + } + case LdapModelPrivate::BaseDN: { + //qCDebug(LDAP_LOG) << "Found details of the baseDN object." + // << "Creating objects down to this level."; + + // Get the baseDN LdapObject + LdapObject baseDNObj = searchResults().at(0); + + // How many levels of items do we need to create? + int depth = baseDNObj.dn().depth(); + + // Create items that represent objects down to the baseDN + LdapModelDNNode *parent = rootNode(); + LdapModelDNNode *item = nullptr; + for (int i = 0; i < depth; ++i) { + QString dn = baseDN().toString(i); + qCDebug(LDAP_LOG) << "Creating item for DN :" << dn; + + //LdapObject obj( dn ); + item = new LdapModelDNNode(parent, LdapDN(dn)); + parent = item; + } + + // Store the search result + if (item) { + item->setLdapObject(baseDNObj); + } + + // Flag that we are no longer searching + setSearchType(LdapModelPrivate::NotSearching); + //emit( layoutChanged() ); + + // Let the world know we are ready for action + Q_EMIT m_parent->ready(); + + break; + } + case LdapModelPrivate::ChildObjects: { + //qCDebug(LDAP_LOG) << "Found" << searchResults().size() << "child objects"; + + if (searchResults().size() != 0) { + // Create an index for the soon-to-be-a-parent item + LdapModelDNNode *parentNode = searchItem(); + int r = parentNode->row(); + QModelIndex parentIndex = m_parent->createIndex(r, 0, parentNode); + + m_parent->beginInsertRows(parentIndex, 0, searchResults().size()); + for (int i = 0; i < searchResults().size(); i++) { + LdapObject object = searchResults().at(i); + LdapModelDNNode *item = new LdapModelDNNode(parentNode, object.dn()); + item->setLdapObject(object); + } + + m_parent->endInsertRows(); + Q_EMIT m_parent->layoutChanged(); + } + + // Flag that we are no longer searching + setSearchType(LdapModelPrivate::NotSearching); + + break; + } + default: + break; + } +} + +void LdapModel::LdapModelPrivate::gotSearchData(KLDAP::LdapSearch *search, + const KLDAP::LdapObject &obj) +{ + Q_UNUSED(search); + //qCDebug(LDAP_LOG); + //qCDebug(LDAP_LOG) << "Object:"; + //qCDebug(LDAP_LOG) << obj.toString(); + searchResults().append(obj); +} diff --git a/src/ldapmodel_p.h b/src/ldapmodel_p.h new file mode 100644 index 0000000..ce048cc --- /dev/null +++ b/src/ldapmodel_p.h @@ -0,0 +1,121 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPMODELPRIVATE_H +#define KLDAP_LDAPMODELPRIVATE_H + +#include "ldapconnection.h" +#include "ldapdn.h" +#include "ldapmodel.h" +#include "ldapobject.h" + +namespace KLDAP +{ + +class LdapModelDNNode; +class LdapSearch; + +/** + * @internal + */ +class Q_DECL_HIDDEN LdapModel::LdapModelPrivate +{ +public: + enum SearchType { + NotSearching = 0, + NamingContexts, + BaseDN, + ChildObjects + }; + + explicit LdapModelPrivate(LdapModel *parent); + explicit LdapModelPrivate(LdapModel *parent, LdapConnection &connection); + + ~LdapModelPrivate(); + + void setConnection(LdapConnection &connection); + + bool search(const LdapDN &searchBase, + LdapUrl::Scope scope = LdapUrl::Sub, + const QString &filter = QString(), + const QStringList &attributes = QStringList(), + int pagesize = 0); + + LdapModelDNNode *rootNode() + { + return m_root; + } + LdapSearch *search() + { + return m_search; + } + + LdapObjects &searchResults() + { + return m_searchResultObjects; + } + const LdapObjects &searchResults() const + { + return m_searchResultObjects; + } + + void recreateRootItem(); + + void setBaseDN(const LdapDN &baseDN) + { + m_baseDN = baseDN; + } + LdapDN &baseDN() + { + return m_baseDN; + } + const LdapDN &baseDN() const + { + return m_baseDN; + } + + void setSearchType(SearchType t, LdapModelDNNode *item = nullptr); + + Q_REQUIRED_RESULT SearchType searchType() + { + return m_searchType; + } + LdapModelDNNode *searchItem() + { + return m_searchItem; + } + + void createConnections(); + void populateRootToBaseDN(); + void gotSearchResult(KLDAP::LdapSearch *search); + void gotSearchData(KLDAP::LdapSearch *search, const KLDAP::LdapObject &obj); + +private: + LdapModel *m_parent = nullptr; + LdapModelDNNode *m_root = nullptr; + LdapSearch *m_search = nullptr; + LdapObjects m_searchResultObjects; + LdapDN m_baseDN; + SearchType m_searchType; + LdapModelDNNode *m_searchItem = nullptr; +}; + +} +#endif diff --git a/src/ldapmodelnode_p.cpp b/src/ldapmodelnode_p.cpp new file mode 100644 index 0000000..7a4fd25 --- /dev/null +++ b/src/ldapmodelnode_p.cpp @@ -0,0 +1,132 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapmodelnode_p.h" + +#include "ldap_debug.h" + +using namespace KLDAP; + +LdapModelNode::LdapModelNode(LdapModelDNNode *parent) + : m_parent(parent), + m_isPopulated(false) +{ + if (m_parent) { + m_parent->appendChild(this); + } +} + +LdapModelNode::~LdapModelNode() +{ + +} + +LdapModelDNNode *LdapModelNode::parent() +{ + return m_parent; +} + +int LdapModelNode::row() const +{ + if (m_parent) { + return m_parent->children().indexOf(const_cast(this)); + } + return 0; +} + +// +// LdapModelDNNode imlpementation +// + +LdapModelDNNode::LdapModelDNNode(LdapModelDNNode *parent, + const LdapDN &dn) + : LdapModelNode(parent), + m_childItems(), + m_dn(dn) +{ + qCDebug(LDAP_LOG) << "Creating DN =" << m_dn.toString(); +} + +LdapModelDNNode::~LdapModelDNNode() +{ + qDeleteAll(m_childItems); +} + +void LdapModelDNNode::appendChild(LdapModelNode *pItem) +{ + m_childItems.append(pItem); + setPopulated(true); +} + +LdapModelNode *LdapModelDNNode::child(int row) +{ + return m_childItems.value(row); +} + +void LdapModelDNNode::setLdapObject(const LdapObject &object) +{ + // Remember whether this item is populated or not + bool populated = isPopulated(); + + const LdapAttrMap &attrs = object.attributes(); + /* + int attributeCount = 0; + for ( LdapAttrMap::ConstIterator it = attrs.begin(); it != attrs.end(); ++it ) { + attributeCount += (*it).size(); + } + + for ( int i = 0; i < attributeCount; i++ ) + { + LdapModelNode* node = new LdapModelAttrNode( this, QString::number( i ) ); + Q_UNUSED( node ); + } + */ + LdapAttrMap::ConstIterator end(attrs.constEnd()); + for (LdapAttrMap::ConstIterator it = attrs.constBegin(); it != end; ++it) { + const QString attr = it.key(); + LdapAttrValue::ConstIterator end2((*it).constEnd()); + for (LdapAttrValue::ConstIterator it2 = (*it).constBegin(); it2 != end2; ++it2) { + LdapModelNode *node = new LdapModelAttrNode(this, attr, *it2); + Q_UNUSED(node); + } + } + + // Reset the populated flag so that we don't stop the model querying for children + setPopulated(populated); +} + +// +// LdapModelAttrNode imlpementation +// + +LdapModelAttrNode::LdapModelAttrNode(LdapModelDNNode *parent, + const QString &attrName, + const QByteArray &attrData) + : LdapModelNode(parent), + m_attrName(attrName), + m_attrData(attrData) +{ + qCDebug(LDAP_LOG) << "Creating Name =" << m_attrName << " Data =" << m_attrData; +} + +LdapModelAttrNode::~LdapModelAttrNode() +{ + +} diff --git a/src/ldapmodelnode_p.h b/src/ldapmodelnode_p.h new file mode 100644 index 0000000..cce9b61 --- /dev/null +++ b/src/ldapmodelnode_p.h @@ -0,0 +1,152 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPMODELNODE_P_H +#define KLDAP_LDAPMODELNODE_P_H + +#include +#include +#include + +#include "ldapdn.h" +#include "ldapobject.h" +#include "kldap_export.h" + +// clazy:excludeall=copyable-polymorphic + +namespace KLDAP +{ + +class LdapModelDNNode; + +/** + * @internal + */ +class LdapModelNode +{ +public: + explicit LdapModelNode(LdapModelDNNode *parent = nullptr); + virtual ~LdapModelNode(); + + enum NodeType { + DN, + Attr + }; + + virtual NodeType nodeType() const = 0; + + LdapModelDNNode *parent(); + int columnCount() const + { + return 2; + } + int row() const; + + void setPopulated(bool b) + { + m_isPopulated = b; + } + bool isPopulated() const + { + return m_isPopulated; + } + +private: + LdapModelDNNode *m_parent = nullptr; + bool m_isPopulated = false; +}; + +/** + * @internal + */ +class LdapModelDNNode : public LdapModelNode +{ +public: + explicit LdapModelDNNode(LdapModelDNNode *parent = nullptr, + const LdapDN &dn = LdapDN()); + ~LdapModelDNNode() override; + + LdapModelNode::NodeType nodeType() const override + { + return LdapModelNode::DN; + } + + void appendChild(LdapModelNode *pItem); + LdapModelNode *child(int row); + int childCount() const + { + return m_childItems.size(); + } + const QList &children() const + { + return m_childItems; + } + + const LdapDN &dn() const + { + return m_dn; + } + + /** + * Creates child LdapModelAttrNode object to store \p object's attributes + * and adds them as children of this node. + * + * \param The LdapObject to store in this node. + */ + void setLdapObject(const LdapObject &object); + +private: + QList m_childItems; + LdapDN m_dn; +}; + +/** + * @internal + */ +class LdapModelAttrNode : public LdapModelNode +{ +public: + explicit LdapModelAttrNode(LdapModelDNNode *parent = nullptr, + const QString &attrName = QString(), + const QByteArray &attrData = QByteArray()); + ~LdapModelAttrNode() override; + + LdapModelNode::NodeType nodeType() const override + { + return LdapModelNode::Attr; + } + + const QString &attributeName() + { + return m_attrName; + } + const QByteArray &attributeData() + { + return m_attrData; + } + +private: + QString m_attrName; + QByteArray m_attrData; +}; + +} + +#endif diff --git a/src/ldapobject.cpp b/src/ldapobject.cpp new file mode 100644 index 0000000..733724f --- /dev/null +++ b/src/ldapobject.cpp @@ -0,0 +1,151 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapobject.h" +#include "ldif.h" + +#include + +using namespace KLDAP; + +class LdapObjectPrivate : public QSharedData +{ +public: + LdapObjectPrivate() + { + } + + 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() +{ +} + +LdapObject::LdapObject(const LdapObject &that) + : d(that.d) +{ +} + +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 LdapAttrValue(); + } +} + +QByteArray LdapObject::value(const QString &attributeName) const +{ + if (hasAttribute(attributeName)) { + return d->mAttrs.value(attributeName).first(); + } else { + return QByteArray(); + } +} + +bool LdapObject::hasAttribute(const QString &attributeName) const +{ + return d->mAttrs.contains(attributeName); +} diff --git a/src/ldapobject.h b/src/ldapobject.h new file mode 100644 index 0000000..8d05ac7 --- /dev/null +++ b/src/ldapobject.h @@ -0,0 +1,119 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPOBJECT_H +#define KLDAP_LDAPOBJECT_H + +#include +#include +#include +#include +class LdapObjectPrivate; + +#include "ldapdn.h" +#include "kldap_export.h" + +// clazy:excludeall=copyable-polymorphic + +namespace KLDAP +{ + +typedef QList LdapAttrValue; +typedef QMap LdapAttrMap; + +/** + * @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 d; +}; + +typedef QVector LdapObjects; +} + +#endif diff --git a/src/ldapoperation.cpp b/src/ldapoperation.cpp new file mode 100644 index 0000000..78b5e1c --- /dev/null +++ b/src/ldapoperation.cpp @@ -0,0 +1,1323 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapoperation.h" +#include "kldap_config.h" + +#include "ldap_debug.h" + +#include + +#include + +//for struct timeval +#if defined(HAVE_SYS_TIME_H) +# include +#elif defined(_WIN32) +# include +#endif + +#ifdef SASL2_FOUND +#include +#endif + +#ifdef LDAP_FOUND +# ifndef HAVE_WINLDAP_H +# include +# include +# else +# include +# endif // HAVE_WINLDAP_H +#endif // LDAP_FOUND + +#include "ldapdefs.h" + +using namespace KLDAP; + +#ifdef 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(); +#ifdef 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 mReferrals; + + LdapConnection *mConnection; +}; + +LdapOperation::LdapOperation() + : d(new LdapOperationPrivate) +{ + d->mConnection = nullptr; +} + +LdapOperation::LdapOperation(LdapConnection &conn) + : d(new LdapOperationPrivate) +{ + setConnection(conn); +} + +LdapOperation::~LdapOperation() +{ + delete d; +} + +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 LdapOperation::referrals() const +{ + return d->mReferrals; +} + +QByteArray LdapOperation::serverCred() const +{ + return d->mServerCred; +} + +LdapOperation::LdapOperationPrivate::LdapOperationPrivate() + : mConnection(nullptr) +{ +} + +LdapOperation::LdapOperationPrivate::~LdapOperationPrivate() +{ +} + +#ifdef LDAP_FOUND + +#ifdef SASL2_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; +} +#endif + +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( SASL2_FOUND ) && !defined( HAVE_WINLDAP_H ) + sasl_conn_t *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, *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, 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)"; +#ifndef 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)"; +#ifndef 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; +#ifndef 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, *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; + LDAPControl *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, **clientctrls = nullptr; + createControls(&serverctrls, d->mServerCtrls); + createControls(&serverctrls, d->mClientCtrls); + + int count = attributes.count(); + if (count > 0) { + attrs = static_cast(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, **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, **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, **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, **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, **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, **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, **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, **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, **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, **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, **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, **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 defined(HAVE_LDAP_EXTENDED_OPERATION) && defined(HAVE_LDAP_EXTENDED_OPERATION_PROTOTYPE) + LDAP *ld = (LDAP *) d->mConnection->handle(); + int msgid; + + LDAPControl **serverctrls = nullptr, **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 defined(HAVE_LDAP_EXTENDED_OPERATION) && defined(HAVE_LDAP_EXTENDED_OPERATION_PROTOTYPE) + Q_ASSERT(d->mConnection); + LDAP *ld = (LDAP *) d->mConnection->handle(); + BerValue *retdata; + char *retoid; + + LDAPControl **serverctrls = nullptr, **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, **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; + + QTime 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 diff --git a/src/ldapoperation.h b/src/ldapoperation.h new file mode 100644 index 0000000..2620476 --- /dev/null +++ b/src/ldapoperation.h @@ -0,0 +1,300 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPOPERATION_H +#define KLDAP_LDAPOPERATION_H + +#include "kldap_export.h" +#include "ldapconnection.h" +#include "ldapcontrol.h" +#include "ldapobject.h" +#include "ldapdn.h" +#include "ldapserver.h" +#include "ldapurl.h" + +#include +#include +#include + +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: + typedef enum { + Mod_None, Mod_Add, Mod_Replace, Mod_Del + } ModType; + + typedef 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 + } ResultType; + + typedef struct { + ModType type; + QString attr; + QList values; + } ModOp ; + + typedef QVector ModOps; + + 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; + }; + + typedef int (SASL_Callback_Proc)(SASL_Credentials &cred, void *data); + + 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 referrals() const; + /** + * Returns the server response for a bind request (result + * returned RES_BIND). + */ + Q_REQUIRED_RESULT QByteArray serverCred() const; + +private: + class LdapOperationPrivate; + LdapOperationPrivate *const d; + + Q_DISABLE_COPY(LdapOperation) +}; + +} + +#endif diff --git a/src/ldapsearch.cpp b/src/ldapsearch.cpp new file mode 100644 index 0000000..fbcf6f7 --- /dev/null +++ b/src/ldapsearch.cpp @@ -0,0 +1,355 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapsearch.h" +#include "ldapdn.h" +#include "ldapdefs.h" + +#include + +#include "ldap_debug.h" +#include +using namespace KLDAP; + +//blocking the GUI for xxx milliseconds +#define LDAPSEARCH_BLOCKING_TIMEOUT 10 + +class LdapSearchPrivate +{ +public: + LdapSearchPrivate(LdapSearch *parent) + : mParent(parent), + mConn(nullptr) + { + } + + 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 *mParent = nullptr; + 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; + } + 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) { + + QByteArray servercc; + 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, 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() +{ + 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(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(); + delete d; +} + +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; + 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" diff --git a/src/ldapsearch.h b/src/ldapsearch.h new file mode 100644 index 0000000..13f3b47 --- /dev/null +++ b/src/ldapsearch.h @@ -0,0 +1,150 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPSEARCH_H +#define KLDAP_LDAPSEARCH_H + +#include +#include +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(); + + /** + * 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: + LdapSearchPrivate *const d; + Q_DISABLE_COPY(LdapSearch) +}; + +} + +#endif diff --git a/src/ldapserver.cpp b/src/ldapserver.cpp new file mode 100644 index 0000000..4c5d710 --- /dev/null +++ b/src/ldapserver.cpp @@ -0,0 +1,432 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#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() +{ + delete d; +} + +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(); + 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 { + 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; +} diff --git a/src/ldapserver.h b/src/ldapserver.h new file mode 100644 index 0000000..fd3c9fa --- /dev/null +++ b/src/ldapserver.h @@ -0,0 +1,334 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPSERVER_H +#define KLDAP_LDAPSERVER_H + +#include + +#include "ldapurl.h" +#include "ldapdn.h" +#include "kldap_export.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. + */ + typedef enum { + None, ///< Do not use any encryption. + TLS, ///< Use TLS encryption. + SSL ///< Use SSL encryption. + } Security; + + /** + * Describes the authentication method that can be used + * for the LDAP connection. + */ + typedef enum { + Anonymous, ///< Do no authentication. + Simple, ///< Authenticate via login and password. + SASL ///< Azthenticate with the SASL framework. + } Auth; + + /** + * Describes the certificate request and check behaviour + * for TLS/SSL connections. + */ + typedef 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. + } TLSRequireCertificate; + + /** + * 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); + int completionWeight() const; + + +private: + class LdapServerPrivate; + LdapServerPrivate *const d; +}; + +} + +#endif diff --git a/src/ldapstructureproxymodel.cpp b/src/ldapstructureproxymodel.cpp new file mode 100644 index 0000000..3a2c0bf --- /dev/null +++ b/src/ldapstructureproxymodel.cpp @@ -0,0 +1,156 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapstructureproxymodel.h" +#include "ldapmodel.h" +#include "ldapmodelnode_p.h" + +#include "ldap_debug.h" +#include + +using namespace KLDAP; + +LdapStructureProxyModel::LdapStructureProxyModel(QObject *parent) + : QSortFilterProxyModel(parent) +{ + +} + +LdapStructureProxyModel::~LdapStructureProxyModel() +{ +} + +QVariant LdapStructureProxyModel::data(const QModelIndex &index, + int role) const +{ + // Included just in case we decide to do any special presentation of the data + // at some other point throughout the 4.x series. + return sourceModel()->data(mapToSource(index), role); +} + +bool LdapStructureProxyModel::setData(const QModelIndex &index, + const QVariant &value, + int role) +{ + Q_UNUSED(index); + Q_UNUSED(value); + Q_UNUSED(role); + return false; +} + +bool LdapStructureProxyModel::filterAcceptsRow(int sourceRow, + const QModelIndex &sourceParent) const +{ + QModelIndex idx = sourceModel()->index(sourceRow, 0, sourceParent); + LdapModelNode::NodeType nodeType = + static_cast( + sourceModel()->data(idx, LdapModel::NodeTypeRole).toUInt()); + return nodeType == LdapModelNode::DN; +} + +QVariant LdapStructureProxyModel::headerData(int section, + Qt::Orientation orientation, + int role) const +{ + Q_UNUSED(section); + if (orientation == Qt::Horizontal && role == Qt::DisplayRole) { + return i18n("Distinguished Name"); + } + + return QVariant(); +} + +int LdapStructureProxyModel::columnCount(const QModelIndex &/*parent*/) const +{ + // No need for more than one column just to show the structure + return 1; +} + +Qt::ItemFlags LdapStructureProxyModel::flags(const QModelIndex &index) const +{ + // Included so as not to break BC in case we wish to use this later in 4.x + return sourceModel()->flags(mapToSource(index)); +} + +bool LdapStructureProxyModel::hasChildren(const QModelIndex &parent) const +{ + // We need to handle this carefully bacause of the filtering out of attributes + // and the lazy population approach. + LdapModel *model = static_cast(sourceModel()); + return model->hasChildrenOfType(mapToSource(parent), LdapModel::DistinguishedName); +} + +QModelIndex LdapStructureProxyModel::mapFromSource(const QModelIndex &sourceIndex) const +{ + return QSortFilterProxyModel::mapFromSource(sourceIndex); +} + +QModelIndex LdapStructureProxyModel::mapToSource(const QModelIndex &proxyIndex) const +{ + return QSortFilterProxyModel::mapToSource(proxyIndex); +} + +bool LdapStructureProxyModel::insertRows(int row, int count, + const QModelIndex &parent) +{ + Q_UNUSED(row); + Q_UNUSED(count); + Q_UNUSED(parent); + return false; +} + +bool LdapStructureProxyModel::removeRows(int row, int count, + const QModelIndex &parent) +{ + Q_UNUSED(row); + Q_UNUSED(count); + Q_UNUSED(parent); + return false; +} + +void LdapStructureProxyModel::sort(int column, Qt::SortOrder order) +{ + Q_UNUSED(column); + Q_UNUSED(order); +} + +Qt::DropActions LdapStructureProxyModel::supportedDropActions() const +{ + return Qt::MoveAction; +} + +QMimeData *LdapStructureProxyModel::mimeData(const QModelIndexList &indexes) const +{ + Q_UNUSED(indexes); + return nullptr; +} + +bool LdapStructureProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) +{ + /** \todo Implement drag and drop for LdapModel */ + Q_UNUSED(data); + Q_UNUSED(action); + Q_UNUSED(row); + Q_UNUSED(column); + Q_UNUSED(parent); + return false; +} + diff --git a/src/ldapstructureproxymodel.h b/src/ldapstructureproxymodel.h new file mode 100644 index 0000000..b2b2563 --- /dev/null +++ b/src/ldapstructureproxymodel.h @@ -0,0 +1,94 @@ +/* + This file is part of libkldap. + Copyright (c) 2006 Sean Harmer + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPSTRUCTUREPROXYMODEL_H +#define KLDAP_LDAPSTRUCTUREPROXYMODEL_H + +#include + +#include "kldap_export.h" + +namespace KLDAP +{ + +class KLDAP_EXPORT LdapStructureProxyModel : public QSortFilterProxyModel +{ + Q_OBJECT +public: + explicit LdapStructureProxyModel(QObject *parent = nullptr); + ~LdapStructureProxyModel() override; + + Q_REQUIRED_RESULT QVariant data(const QModelIndex &index, int role) const override; + /** + * Reimplemented from QAbstractItemModel::setData(). This is a placeholder for when + * LdapStructureProxyModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool setData(const QModelIndex &index, + const QVariant &value, + int role = Qt::EditRole) override; + Q_REQUIRED_RESULT bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; + Q_REQUIRED_RESULT QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + Q_REQUIRED_RESULT int columnCount(const QModelIndex &parent) const override; + Q_REQUIRED_RESULT Qt::ItemFlags flags(const QModelIndex &index) const override; + Q_REQUIRED_RESULT bool hasChildren(const QModelIndex &parent) const override; + + Q_REQUIRED_RESULT QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override; + Q_REQUIRED_RESULT QModelIndex mapToSource(const QModelIndex &proxyIndex) const override; + + /** + * Reimplemented from QAbstractItemModel::insertRows(). This is a placeholder for when + * LdapStructureProxyModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool insertRows(int row, int count, + const QModelIndex &parent = QModelIndex()) override; + /** + * Reimplemented from QAbstractItemModel::removeRows(). This is a placeholder for when + * LdapStructureProxyModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool removeRows(int row, int count, + const QModelIndex &parent = QModelIndex()) override; + /** + * Reimplemented from QAbstractItemModel::removeRows(). The default implementation + * does nothing. + */ + void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; + // + // Drag and drop support + // + /** + * Reimplemented from QAbstractItemModel::supportedDropActions(). The default + * implementation returns Qt::MoveAction. + */ + Q_REQUIRED_RESULT Qt::DropActions supportedDropActions() const override; + /** + * Reimplemented from QAbstractItemModel::mimedata(). This is a placeholder for when + * LdapStructureProxyModel beomes writeable and always returns 0. + */ + Q_REQUIRED_RESULT QMimeData *mimeData(const QModelIndexList &indexes) const override; + /** + * Reimplemented from QAbstractItemModel::dropMimedata(). This is a placeholder for when + * LdapStructureProxyModel beomes writeable and always returns false. + */ + Q_REQUIRED_RESULT bool dropMimeData(const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &parent) override; +}; + +} +#endif diff --git a/src/ldapurl.cpp b/src/ldapurl.cpp new file mode 100644 index 0000000..5c64199 --- /dev/null +++ b/src/ldapurl.cpp @@ -0,0 +1,294 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "ldapurl.h" + +#include "ldap_debug.h" + +#include + +using namespace KLDAP; + +class Q_DECL_HIDDEN LdapUrl::LdapUrlPrivate +{ +public: + LdapUrlPrivate() + : m_scope(Base) + { + } + + QMap 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() +{ + delete d; +} + +void LdapUrl::setDn(const LdapDN &dn) +{ + 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::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 +{ + Extension ext; + + 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::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 + 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(','), QString::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(','), QString::SkipEmptyParts); + break; + } + } + + QString name, 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); + } +} diff --git a/src/ldapurl.h b/src/ldapurl.h new file mode 100644 index 0000000..50dfde9 --- /dev/null +++ b/src/ldapurl.h @@ -0,0 +1,186 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDAPURL_H +#define KLDAP_LDAPURL_H + +#include + +#include + +#include "ldapdn.h" +#include "kldap_export.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. + */ + typedef struct { + QString value; + bool critical; + } Extension; + + /** + * Describes the scope of the LDAP url. + */ + typedef 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. + } Scope; + + /** + * 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; + LdapUrlPrivate *const d; +}; + +} + +#endif diff --git a/src/ldif.cpp b/src/ldif.cpp new file mode 100644 index 0000000..63cdd3f --- /dev/null +++ b/src/ldif.cpp @@ -0,0 +1,452 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#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() +{ + delete d; +} + +QByteArray Ldif::assembleLine(const QString &fieldname, + const QByteArray &value, + uint linelen, bool url) +{ + bool safe = false; + bool isDn; + QByteArray result; + + if (url) { + result = fieldname.toUtf8() + ":< " + value; + } else { + isDn = fieldname.toLower() == QLatin1String("dn"); + //SAFE-INIT-CHAR + if (value.size() > 0 && 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.truncate(tmp.length() - 5); + } else if (tmp.endsWith(QLatin1String("false"))) { + critical = false; + tmp.truncate(tmp.length() - 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.size() > 0) { + d->mEntryType = Entry_Add; + retval = Item; + } + break; + case Entry_Add: + if (d->mAttr.isEmpty() && d->mValue.size() == 0) { + retval = EndEntry; + } else { + retval = Item; + } + break; + case Entry_Del: + if (d->mAttr.isEmpty() && d->mValue.size() == 0) { + 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.size() == 0) { + 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.size() == 0) { + retval = EndEntry; + } else { + retval = Err; + } + } else { + retval = Item; + } + } + break; + case Entry_Modrdn: + if (d->mAttr.isEmpty() && d->mValue.size() == 0) { + 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; +} diff --git a/src/ldif.h b/src/ldif.h new file mode 100644 index 0000000..a65f69c --- /dev/null +++ b/src/ldif.h @@ -0,0 +1,205 @@ +/* + This file is part of libkldap. + Copyright (c) 2004-2006 Szombathelyi György + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KLDAP_LDIF_H +#define KLDAP_LDIF_H + +#include +#include + +#include "ldapdn.h" +#include "kldap_export.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: + + typedef enum { + None, NewEntry, EndEntry, Item, Control, Err, MoreData + } ParseValue; + + typedef enum { + Entry_None, Entry_Add, Entry_Del, Entry_Mod, Entry_Modrdn + } EntryType; + + typedef enum { + Mod_None, Mod_Add, Mod_Replace, Mod_Del + } ModType; + + 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; + LdifPrivate *const d; +}; + +} + +#endif diff --git a/src/w32-ldap-help.h b/src/w32-ldap-help.h new file mode 100644 index 0000000..3f04447 --- /dev/null +++ b/src/w32-ldap-help.h @@ -0,0 +1,132 @@ +//krazy:excludeall=style +/* w32-ldap-help.h - Map utf8 based API into a wchar_t API. + + Copyright (c) 2010 Andre Heinecke + + 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; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + +#ifndef W32_LDAP_HELP_H +#define W32_LDAP_HELP_H + +#include +#ifdef UNICODE +# undef UNICODE +# include +# include +# define UNICODE +#else +# include +# include +#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)) +#endif /*W32_LDAP_HELP_H*/ -- 2.30.2